Yesterday I upgraded my footprint models from v8.0 to v9.0, according to KiCad 9.0 user’s manual. The process was painful because I kept getting an error message that was not clear. The “-o [–output] OUTPUT_DIR” must be set, but for many attempts I kept getting an error message saying that the output directory cannot overlap the current directory. That error message is unclear. Exactly what is “the current directory” in that context, and what constitutes “overlap”? I kept moving my current working directory within a Windows command shell but that made no difference in the dozens of attempts that I made. After many many attempts, I finally got a successful upgrade of footprints, as best as I can tell. BTW, those upgraded footprints were working for me yesterday but when I signed onto the same computer and the same KiCad project today, suddenly KiCad shows no models at all in my custom directory (though they were there yesterday and the files have not moved since then). As a result, I give a low satisfaction rating to upgrading footprints from KiCad 8.0 to 9.0. I am still fighting this process.
Hi @Whirlwind3D,
Is your above post about making your personally made/modified/imported footprints available to now use in Kicad 9, that were previously available to use in Kicad 8?
Yes. I apologize that I did not make that clear.
I wonder if this can be resolved by not using Dropbox as well.
I’m puzzled by your mention of -o output_dir as this implies a script. AFAIK .kicad_mod footprints can be used untouched in a new KiCad release without any conversion or export. All you have to do is register the library location using Manage Footprint Libraries. When I looked in the documentation output_dir is mentioned here:
https://docs.kicad.org/9.0/en/cli/cli.html#footprint_export
https://docs.kicad.org/9.0/en/cli/cli.html#footprint_upgrade
which talk about exporting to SVG or upgrading from a legacy format. Maybe that’s what happened to you?
The upgrade section says:
If the input library is already in the current file format, no action is taken.
So it’s a no-op trying to “upgrade” .kicad_mod files.
If you open a footprint in a later version and save it, it will be saved in the new format. So yes, this happens automatically and there’s no need for mass conversion. The older version can’t use the converted footprints.
Your are correct guessing that I used the Footprint Upgrade command to process my KiCad v8 custom footprint library (“MyFootprint.pretty”). I did that because the documentation says, " The fp upgrade
command converts the the specified footprint library from a legacy KiCad footprint format or a non-KiCad footprint format to the native format for the current version of KiCad." In the context of upgrading from v8 to v9, I understood the documentation’s clear statement about “upgrade” to be relevant. Further, I understood that “a legacy KiCad footprint format” could refer to KiCad v8, while “the current version of KiCad” referred to KiCad v9. Even in hindsight, this seems to be a rational understanding of the documentation that came with KiCad v9. I will try today to revert to my custom footprint library used with v8 and see how KiCad v9 responds to loading those.
I wish to add that if the ‘fp upgrade’ process did nothing to my v8 footprint files, then that would not explain why v9 doesn’t recognize any of those files in v9 Footprint Editor or when attempting to define a footprint in the Properties dialog for a symbol in the Schematic Editor.
Well at least you (and any bystander watching) have learnt one thing: legacy symbol format actually means pre-v6 and you don’t have to upgrade symbol libraries in the future. As for your current troubles, you have another topic for that.
Yes. (( might I humbly suggest that KiCad’s user manual should be edited to be as clear as your comment here in explaining the KiCad-meaning of “legacy” ? ))
Submit an issue on Gitlab for that. I’m just another user.
The process of reestablishing personal libraries on a new version is a bit messy at the moment, but in other topics, the devs recognise that and one of the things that needs to be done is to separate system library entries from personal library entries in the tables some future release.
Problem solved. I found a line in the fp-lib-table file which defined the name “MyCustomFootprints” (my example name here) with “uri” defined as a text path to a __.pretty directory in another project (not the local project). In other words, my project XYZ contained fp-lib-table file which contained a line for “MyCustomFootprints” with path to a totally separate project ABC. For standardization and avoidance of duplication, I try to have just one custom footprints file for use in all my KiCad projects. How on Earth the fp-lib-table file in one project got a line pointing to a completely different project is a total mystery to me. At this point, I only know that editing fp-lib-table with Notepad and removing the line with path to the wrong directory has fixed the problem in my current working directory. After making just that one change to fp-lib-table, KiCad v9 Footprints Editor now sees not only my custom footprints directory name but also shows all the footprint models (*.kicad_mod).
Almost certainly that was done by a human. If computers make “errors” the output is usually complete gibberish. It’s quite plausible (especially for someone with little experience in this little part of KiCad, to:
- Include some personal library from “some other place”
- Move on to something more interesting, the immediate problem is solved.
- Completely forget this little detail.
Using a text editor to modify fp-lib-table is a common way to make changes in them. In the old day’s it used to be common to edit other KiCad files with a text editor too, but over the years KiCad has gotten better GUI functions to do almost all other things. For the fp-lib-table, I use https://meldmerge.org/. It’s a source code merge program, which can compare different versions of a file and highlight the differences. It also makes it very easy to copy strings from one of the files to another.
The project specific library can also be removed using the GUI, click on the Project Specific tab to see it.