Footprints get updated all the time

Hi Kicad Community,

my Kicad Version 5.1.5-3 keeps updating my footprints.
When I change one part in the schematic (or even none) it still updates many of my parts, when running “update pcb from schematic” (and the silkscreen descriptors like T3 and so on, which I placed by hand, are back where they were before).

Change T3 footprint from “SamacSys_Parts:SOT95P237X111-3N” to “SOT95P237X111-3N”.
Change T4 footprint from “SamacSys_Parts:SOT95P237X111-3N” to “SOT95P237X111-3N”.
Change T5 footprint from “SamacSys_Parts:SOT95P237X111-3N” to “SOT95P237X111-3N”.
Change T6 footprint from “SamacSys_Parts:SOT95P230X110-3N” to “SOT95P230X110-3N”.
Change U1 footprint from “SamacSys_Parts:SOT95P280X145-6N” to “SOT95P280X145-6N”.
Connect U2 pin 4 to Net-(U2-Pad4).

What am I doing wrong here? This is not too big a problem, but it messes up my silkscreen everytime, and I have to relocate the descriptors.

Btw, it does not do it to every part, just some, but always the same ones.

V5.1.6 is the currently the lastest stable version which has a bunch of bug fixes. Maybe consider an upgrade?

How do you update the PCB from the schematic? Do you still use the “old” method of first creating the netlist file, or with F8?

If with F8 what settings do you use for Eeschema -> Pcbnew? During the update you can select whether to update existing footprints or not:

5.1.5-3 did not normally do this

Your footprint fields seem to be damaged inside the library for that particular symbol. The “new” footprint field does not contain the library link (the stuff before the “:”)

Rene is to the point, although it doesn’t explain why this happened. How did you create your design, did you change anything in your library setup, did updating the pcb work correctly in the same design before?

@paulvdh When I switch “update footprints” off, it doesn’t happen. My intention was to update every footprint that I might have changed in the lib (change positions of descriptors e.g.) and then change the footrpint on the board accordingly. It still seems odd, that it keeps changing footprints, although I did nothing with them.

@Rene_Poschl What exactly do you think is wrong? I was wondering also that the library the change is “Lib-Name:xy” to “xy”. What does this mean? Is there something I can do about it/check what happend?

@eelik I downloaded the design via LibraryLoader from Mouser. I don’t know what you mean by if I changed the library setup. I set up the librarypath and after this I did not touch it. I can’t tell if updating ever worked correctly, as the footprints stay the same and in the same place, I only noticed after the Silkscreen descriptors kept resetting to default for some parts (a late step in my process). But I think I remember having this “update lib:xy to xy” thing all the time.

Whatever symbol you use has its footprint field filled out invalid in the schematic. Fix that by assigning it correctly in via any assign footprint option. If that wrong assignment comes from the symbol library then fix it in the library and then reload the symbol fields from the library. How can i assign a footprint to a symbol?

This. Just change the problematic footprint assignments to point to correct libraries, as Rene showed.

EDIT: actually you showed:

Change the assignments so that there’s the Lib-Name: part, too.

For example symbols imported from snapeda suffer from this problem, too, although it’s understandable that they can’t add the library name part to footprint names simply because there are no predefined libraries, only individual downloaded symbols and footprint. The user is responsible for checking and changing the assignments. The same may be true for this Mouser design.

Thank you both, I’ll try it (later on, when on my other computer) and tell you how it went

That is where a true atomic format could come in handy. Some single file holding all library assets that can then be installed into the users personal library structure (similar to installing an extension in other tools)

Ahh, so, i understand what went wrong. When using imported parts, they just have assigned a footprint xy.
But of course when I download the part, it doesn’t know in which library the footprint is located. So in my symbol library it says “footprint xy”, and when I bring this to my pcb, it searches availabe libraries and since all footprint names were unique it just assumed it is the Samacsys lib and assings it correctly “Samacsys_lib:xy”. However, when I update from my schematic, it gets rewritten to xy and kicad finds them again in the samacsys lib.
TL;DR: I went to my symbols library, changed the footprints from “xy” to “lib_name:xy” and then everything was ok.

Btw, is my assertion correct, that Kicad takes the “xy”-footprint and searches all available libraries, and when it’s uniqe it just takes what it found? Or am I misinterpreting it?

Thanks, I wouldn’t have found this out on my own, you gave me the right pointers!

Edit: Follow up question: I updated my symbol lib with all the correct footprint_libs (thanks to the lib file being a textfile this was easy), now when I go to my schematic and try to update these, it only updates on the sheet I am currently on, is this right?

1 Like

A better way to update your schematic probably is:
Pcbnew / File / Export / Footprint Association (.cmp) File
Eeschema / File / Import / Footprint Association File

So this rewrites the footprints in the symbols in my schematic with the actually used ones of my pcb?


If you’re unsure about stuff like this, then experiment on a copy of a project instead of on the project itself.
This also lets you easily compare differences with souce code merge tools such as meld.

Ok, thanks, this seems to be a hack solving the problem. I use git, so nothing ever gets really messed up. Is my hypothesis true, that the pcb tool searches for matching footprints in the libraries and uses a matching one from a certain library instead?