Frustrating upgrade experience

I’ve just upgraded KiCad from version 5.something to 6.0.5 on Windows. And so far it’s not the best experience I had with upgrades.

The installer suggested installing to a different directory than where version 5 was installed. And it didn’t explain me that I should or should not uninstall the previous version myself or before or after. It just didn’t care. So I thought I’d just uninstall v5 before to keep it clean. But that showed me a warning that all my settings and other stuff will get lost. That scared me but I had no other choice but to do it. After installing v6 fresh, it looked fine. (I wasn’t asking for that desktop shortcut but it’s easily removed just like for Adobe software.)

Then I opened one of my projects to see if it still works. And there are 3D models missing now. I read in an FAQ post that I should update the footprint/model paths with the menu command “Tools; Update Footprints from Library”. But that doesn’t work. It brings back the stock models but also deletes all the models I have assigned from the project directory. Alternatively I can introduce a v5 compat shim by defining the old library path variable. But that’ll only work on my computer and no other clean v6 installation. And it’ll keep that legacy forever. I’d rather prefer a clean and future-proof solution. But KiCad doesn’t seem to support future-proof.

Do I need to manually correct the library paths for all stock models myself now? Why has that variable name changed at all? It was obvious that it’ll break all existing projects! Can you please explain the intended and lossless KiCad version upgrade path?

PS: In another project, some of the footprints can’t be found by the tools command. It’s mostly those with “HandSolder” in the name. Again, more manual upgrade fixup work? I’ve never seen such a rocky upgrade path in other software.

You should separate software upgrade and library upgrade. KiCad happens to ship libraries with software but it’s still different things.

Your software upgraded fine, to be more precise it just installed another version and (correctly) didn’t care if you had previous one. Some people need to keep 2 versions at the same time to keep old projects that they are still working on in v5 format.

Now the question of “lossless” upgrade path for libraries… there isn’t one. And in most cases there can’t be one because usually people use their own libraries. Even when they use symbol or footprint from kicad library they copy it into their own library because:

  1. It makes it easy to modify when needed (kicad’s official libraries are read only)
  2. It makes it easy to store/share with the project making it entirely self contained
  3. It makes it easy to upgrade to another kicad version which may have symbols/footprints tweaked/renamed/fixed in the official library. Your own library stays the same.

There is a plugin for 5.1 that makes it easy to make the project self contained by extracting all symbols and footprints from global libs into project local libs.

There are multiple ways to deal with your current situation, best one depends on complexity of your design and how crafty you want to get with scripting or text processing tools.

  1. Restore your project from backup (you do have a backup right?), install kicad 5.1 and keep working on your old project in v5, use v6 for new ones
  2. Same as the above, use the ArchiveProject plugin to make the project self contained, migrate it to v6 and you will have no issues with models or paths because everything will be self contained in the project. Then keep v5 or uninstall it as you wish.
  3. Swap all symbols/footprints in your project with their equivalents from v6 library. Depending on the complexity of your design it can be a 3 minute job (most cases) or 15 minute job, maybe with some help of sed/awk/find and replace in your text editor. (Remember backups!)
  4. Use the old environment variable trick you already found. As you noted, only downside is the project is not portable. But you have to assume that unless you only use local libraries and ship them with your project, it’s not really portable anyway.

You can bulk replace footprints for v6 ones (see option 3) and it will fix the models issue.

Because a) KISYS3DMOD is not very descriptive and is not consistent with other path variables and, more importantly, b) kicad lib vars need to be versioned because they evolve. You really don’t want to end up in a situation where an upgrade like you just did silently swaps out symbols/footprints potentially breaking the designs without user even noticing. Making the vars versioned makes an explicit link to specific library snapshot tied to a kicad release.

So we end up with KICAD6_3DMODEL_DIR

what I miss in swapping the modules, is an option to keep the extra 3d models attached to the footprint to be changed…

What do you mean? Both Update and Change footprint dialogs have this option…

image

Do you mean that the original one should be changed but custom ones not? That wouldn’t be easy to do without possibilities for errors, I think.

exactly … i.e. I have many anchor holes with some mechanical elements (screws and spacers) which depends on specific board’s needs… when updating the footprint I would like to have an option keep the extra 3d models added to the footprint to be swapped

Installed KiCad 5 again. Important: It must be installed in the default directory or project’s won’t open. Seems like KiCad projects are not portable at all anyway and only work in carefully prepared environments. (Another OS setup or even another OS platform and it fails.) I probably cannot trust services like Aisler KiCad support like this. There’s a reason why exchange formats like PDF or Gerber exist.

So, what is that ArchiveProject plugin? I have Zip and Unzip buttons in both KiCad 5 and 6, but they’re not giving me anything else than opening the original project directly. Some explanation is needed to complete this.

I understand that directly referencing the provided libraries in a project is a very bad idea. The application should really warn the users when doing that and explain the negative consequences this will have in the future. So I’m looking into maintaining a library in every project I create and always copy everything into that first before using it. It’ll be considerably more work but this seems to be necessary to keep KiCad projects reliable. So far I’ve found libraries very complicated to use. Depending on what I’ll find out I may suggest workflow improvements here.

KiCad 5 projects had this struggle. This is fixed in KiCad 6 with the new file formats.

Not completely…

In KiCad V4 and before the schematic symbols were not part of the project, and the schematic symbols relied on the links to external libraries for all of their graphics. In KiCad V5 this was partially solved by the [Project]-cache.lib. In KiCad V6 all the graphics for the schematic symbols is contained in the schematic file itself.

However, this is not so with the 3D models. In KiCad V6 the 3D models are still only linked to, and therefore you still have an dependence on external libraries. It does make some sense to do it this way. The 3D models take up a lot of disk space and they are not essential for the PCB manufacturing process itself.

With the new Plugin and Content Manager in KiCad V6 you can install the Archive 3D Models plugin.

However, if you’ve upgraded a KiCad V5 (or previous) project to KiCad V6, then that project still links to the 3D model libraries of the older version, and if those libraries are not installed, then the plugin can not copy the needed 3D models to your project either.

Oddly I have had no trouble with running KiCad 5 and now 6 on two different Macs and a Windows box. The projects are all in a proper revision-control system, so I simply check them out of the repo in the usual way to any directory.

That said, I don’t use the standard KiCad libraries. I have always used my own libraries. The libraries are also kept in a revision-control repo, so whenever any changes are made to them (from any of the computers), I simply commit the change, and the first thing I do when starting work with KiCad on any computer is to upgrade the library working copy.

And I realize the following is sort of not standard KiCad working methodology, but my library tables (which I do not keep in revision control, since there are only about a dozen of each library type) simply point to the absolute location of the libraries. The only environment variable that matters is the one which points to the 3D libraries, because that is embedded in every footprint.

1 Like