How to reload all symbols from libraries?

5.1.4 stable.
I have noticed that if I modify something in symbols then I see that modifications at once in schematic I have it opened in current project. But now I have returned to old project (only schematic was finished) and before beginning to design PCB for it I’d like to be sure that all symbols come from libraries and not from somewhere in schematic. I have deleted *-cache.lib but I’m not sure if it is enough.
I care of things I don’t see at schematic like pin numbers. I noticed some inconsistencies in my libraries and changed pin numbers for some simple elements (like resistors) and now I need be sure that in my schematic I have current symbols.
I know that schematic is text file, but in that 54kB file I’m not sure if what I see contains symbols definitions or not.
In Edit|Update Symbol Fields I don’t see check-box which would assure me that pin numbers are updated.

So my question is: Is deleting the cache.lib in my situation enough?

That’s brave.


Generally kicad checks if symbols are the same in the cache as in the library when opening eeschema. If they are the same then eeschema opens as usual.
If there is a difference then kicad pops up the rescue dialog. This basically gives you the choice to use the current symbol in the cache or the symbol as found in the library.
You can also run the rescue dialog by hand from within eeschema.

This takes care of everything except symbol fields. To ensure these are in sync with the library you need to use edit->update fields from library. But be aware that this will be problematic if you have a mix of fully specified and generic (the value field can either be updated for all or for none.)

I understand you that there are no third symbol source (in schematic) so if I deleted cache and schematic opens normally then I am sure symbols come from libraries. Thanks. That is what I wonted :slight_smile:

No problem. I use only fully specified symbols.

If you delete the cache lib then you have two possible outcomes. The same happens as when choosing the “from library” options in the rescue dialog or your project is toast. Are you sure you do want to risk that? (Also the field update stuff is still needed even when deleting the cache lib)

I didn’t know how the rescue procedure really works (I have not read about it anywhere) so to be sure I have all symbols from libraries I prefer to not give KiCad a chance to use symbol from cache.
Till that moment I didn’t know that field update is still needed. I assumed that as KiCad has to find symbols in libraries it takes them from there.
So do the pin numbers are the “fields” that I should do field update?

If in symbol Edit dialog box (after ‘E’) I select "Update Fields from Library… I understand that I am updating fields for that one part. If I cal “Update Fields from Library…” from Edit menu I don’t know if I update fields for all symbols or for no symbol (as nothing is selected). I hope that for all as if for no then menu position would be grayed out when nothing is selected.

pin numbers are part of the symbol not a field. So if you change pin numbers the rescue dialog will ask you if you want to use the old one (rescue it) or if you want the one from the lib (not rescue)

And yes this is confusing, v6 will use the same system as with footprints where you have the symbols embedded in the schematic and then have a update from library system.

I think it is one of the reasons I decided just to delete cache.lib.
I understood not rescue as ‘left as it is’ = not look in library to find the new version but left what you have (and you have what really is in cache.lib).

No: not rescue is get from lib while rescue means the current symbol is copied from the cache lib to a new project local lib called the rescue library.

Now I know. I just have written how I intuitively feel the ‘rescue’ meaning to confirm that as you have written “this is confusing”.
I don’t wont to have never ever any local library.

1 Like

Local libs are useful. Example if you have a specialized connector symbol (where you give every pin the pin type that closest fits your use of it and also use pin names that describe how that pin is used)

Or if you have a mcu and want to have the pin types and names fitting the software configuration (modern mcus have quite a number of alternative functions per pin so it makes sense to make a symbol specific to the chosen configuration)

Now I assume (not sure yet) that I will have a new directory for each new project - even a next revision of the same PCB. It is high probability that such specialized connector I will be using also in that next rev. I don’t have a lot of such things so it will be easier to have them global then to copy with such projects.

Till now I was working differently. Not new directory for new version, but new directory for old version. Let assume I am designing the BC50 PCB. I made a directory …\BC50 and under it the project BC50_A (really I had no project file - it was just sch, and pcb files alone). When I had to design the next version I was moving that project to subdirectory …\BC50\A and in main …\BC50 I had a new project BC50_B (which later was moved to …\BC50\B).
At that moment I’m not sure why I decided it will be no good in KiCad. Probably KiCad projects don’t like to be moved.

I don’t care with pin types - all set to bidirectional but it is not important (I don’t use ERC).
In mcu I use long pin names telling me what functions can be used (many but not all possibilities for pin listed). For example pin 17 of AtXmega128A4U is Ev0/Ck/Oc0D/Txd1/Sck/PC7. It is not all as for example MOSI and Sck of each SPI can be swapped so Sck here would be MOSI. The function used I code in net name placed just near that pin.
I prefer to have once defined symbol/footprint be checked for being correct and not be modified.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.