Where did my symbols go?

Yesterday I created symbols for a couple of voltage regulators. All worked well yesterday until I logged off when I was notified that MY library was modified and if I should discard changes. KiCad does not take NO for an answer so I had to discard. Of course, when I started work this morning my shiny new symbols were not in the library - I opened it and looked.

I have re-created them and updated them in MY library. They work just fine, but when I look in the library they are not there! :face_with_raised_eyebrow: I am assuming that they will not be there again tomorrow which is a PITA. :weary:

I have set full permissions for both the .LIB and .DCM files so I should be able to write to them. Obviously, I can’t! :sob:

What is going on? How do I create symbols and keep them?

If kicad says your lib has been modified it means you did do some changes but they have not been saved to the file(s) on the disc. You need to manually save your libraries to disc (in the top toolbar leftmost button.)
For that to work you need to have the library you want to save set as the active library.


Also what do you mean by “until i logged off”? Do you simply log out of your windows [or OSx or Linux] session without properly closing all applications?

Once again this was explained to you previously! It doesn’t accept “No” because it is unable to save the library because you are likely trying to modify KiCad libraries and not the library you think you are. As for where your symbols went, that should be obvious.

I sure hope library management is a little more newbie friendly in V5.

1 Like

In general it is a bit better as now at least both symbols and footprints use a very similar system (the lib tables) to determine what libs are loaded.

The symbol editor also got rid of the active library stuff which confuses new users. (I would guess the active library stuff is one of the things @Vagulus is missing.)

But a lot of things are not obvious how they are done. (Renaming symbols is done by changing the representation of the value field for example. Unless this has been fixed recently.)

1 Like

I think it would also help if there was an “Access Denied” error message instead of repeatedly prompting to save/discard changes.

I meant I logged out of KiCad :grinning:

And … NB 1.21Gigawatts … I have the current library set.

You also noticed that the dialogs refer to a .BAK file which does not exist.

I had MY library files in c:\Program Files\KiCad\share\kicad\library. I moved them to D:\Documents\KiCad\Libraries. If I modify a symbol and and use Update current component to current library then Save current library to disk --> Modify --> Yes then the new symbols stay in MY library. No mention of a .BAK file. I can exit KiCad then start it and all is well.

Was having my library in the system library the problem?

From May 19:

Because it can’t create it! When you try to update a file that already exists KiCad first creates a .bak file, a backup of the original.

This was your problem. You’ll notice in my reply on May 19 I specifically mentioned saving your libraries to your own folder.

But it’s there, now that you have permission to create it.

1 Like

So I have discovered - at least, when I did shift the .LIB to a project folder all worked okay. Forgive me, but I have a problem with being unable to to a file I created, and for which I have full permissions, just because it is in the KiCad libraries folder. I put MY.LIB in the KiCad libraries folder because that would be the logical place for it to be in future projects. I just don’t understand why things didn’t work with it there - that gave me a mental block about it being there.

Oh well … all’s well now. Thanks for your patience.

It might be the KiCad libraries folder but it resides in “c:\Program Files”. You might have permission to create files there if you are logged in as administrator, but KiCad does not.

Ah Ha! :smiley: That makes sense.

There is a curiosity here. :thinking: MY.PRETTY is in c:\Program Files\KiCad\share\kicad\modules and is saves new symbols with no problems at all. :open_mouth:

Why would the .PRETTY save in “c:\program files” while the .LIB does not?

The .pretty folder was created by you. But the folder containing the lib files was created by the kicad installer.

Yes file system access rights are complicated sometimes. There is a reason we always suggest to put personal libs insider your home folder and not inside a system directory.
Would the later work? Yes but it will require a lot of understanding about all safety systems that are in place to protect modern operating systems from viruses and other attacks.

My first experiments with KiCad was with 4.0.6. In doccumentation I read that it is good to start from opening kicad.pro (somewhere in system directory) do same settings and save them (in kicad.pro) to be used whenever you began new project. This way I got into problem “Windows don’t allow”.
I uninstalled KiCad and installed once more but not in “Program Files” but in my “Programs” directory. Since then Windows unhooked from me.

FTR: The MY.LIB and MY.DCM files were created by me too - and fully permissioned. :confounded: Not to worry. It now works. Let’s let lying dogs sleep on this one. :grin: Thanks all.

I would still suggest that you address this whilst it is fresh in your mind. It would be a good plan to make directories for you own symbols, footprints and models (and templates) in your home directory. You can then set your environmental variables to point there. Whilst you only have a few symbols now it will be easy to fix properly - when you have lots of symbols/library items mixed in with the stock libraries it could get messy and confusing especially when you update them and find your ‘personal’ libraries get wiped out when you update the stock libraries.

1 Like

Done that. Thanks again all.

Managing parts and symbols should be intuitive and straight forward. May I suggest that the developers look at how these are handled in some of the successful (and expensive) commercial products? When I say “look at” I am not saying “copy”. Analyze how these programs handle this process. Don’t require the user to understand what is happening deep inside yor software. They shouldn’t have to care where the software stores the parts, only that when they select one of their parts they get what they expect. I hope I don’t offend, but I believe the handling of user parts can be handled simpler and more intuitively. Keep up the good work your team has done. KiCAD has made tremendous progress since CERN has joined.

The only thing we suggested to @Vagulus is that he places his personal files into his personal user folder. Understanding that you can not write to a system directory should be basic computer literacy. (And is also expected from expensive software.)

I highlty doubt that it is easier to setup altuim or similar software. Simply because these are a lot more powerful and can integrate in a multitude of database systems used to handle a companies ordering processes. The difference here is that it is expected that the IT department takes care of that part (You as the circuit board designer simply expect that it magically works. You might never see the work that went into getting it to that state.) If you are alone you are your own IT department.

I know that cadance is a nightmare for any IT department. And after every update the fun starts again. Even thought a basic license for that program costs >100000€. What we should learn from that is that powerful tools require a bit of understanding from the user side.


I however agree that a lot can be done to make it easier. For example if a user creates a new library there should not be a message stating that this lib is not available until added to a lib table but there should instead come a question if he wants to add it to the local or global library table. (how often does one create a library without intending it to be used in the current project. And even that can be handled by adding a third option “neither”)

This one suggestion would remove a big new-user trap.

Also, it would be nice if there were suggested user path aliases that creating new libraries (both symbols and footprints, even 3D models). One could, of course, override those names but providing a baseline “standard” would help project portability among new users immensely.

Here are what I use for environment variable aliases (and therefor my suggestions) as a table showing my user equivalents to the user aliases:

System library         : User library
KISYSMOD               : KIUSRMOD
KISYS3DMOD             : KIUSR3DMOD
KICAD_SYMBOL_DIR (1)   : KIUSRSYM
KICAD_TEMPLATE_DIR (2) : KICAD_USER_TEMPLATE_DIR (3)

(1) I think this should have been KISYSLIB for KIcad SYStem LIBrary… Though, I suppose it would be better as SYM for symbols to avoid further confusion of libraries vs symbols vs modules so I made that edit in my suggestion…
(2) This was KICAD_PTEMPLATES, I think it should have been KISYSTMPL for KIcad SYStem TeMPLates (add the L to avoid TMP looking like temporary)
(3) I used KIUSRTMPL until this blog entry on 2018-05-19.

\me steps down from his soap box.

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