HELP! Libraries are not recognized (schematic symbols)

That depends how they are added. The libs that are shipped with kicad use environment variables so these are easy to change by changing these variables.

If your personal libs do not use variables then yes you will need to change their path manually (the lib table is a simple text file so you can change it outside of kicad by use of a text editor)


At the very beginning of the linked article:

Again answered in the article

I remain confused. KiCAD most certainly does have a standard library location. When i installed KiCAD it somehow created libraries somewhere, filled in those paths, and later found the libraries. I had nothing to do with this process, and I have done nothing since to change it - in fact all i did is move my libraries to where KiCAD seemed to think they ought to be. KiCAD or its installer did it all. Same thing for users.

And i still don’t understand how to easily change that library location. You indicated to use the “library manager.” I maintain there is no library manager. You later say that “library manager” is actually “manage symbol library” dialog. Do you realize how confusing this is??? If oyu mean functionality of those dialogs, specify those dialogs and which functionality in them to use, not some mysterious and nonexistent “library manager”. I looked everywhere.

Now, moving on to the “manage symbol libraries” menu box, I don’t see any functionality that is labeled as “set library location”. I do see some text boxes with code in them below. I also see some buttons/icons, but no help, no explanation and no label for what exactly they do. Is this what you mean? If so, how exactly do they work? If i use them can i point to a folder, for example “dropbox/KiCAD Libraries” and set that location for all my libraries? Then all i need do is drop new libraries in there or create them at that location?

Note that i have read the article you reference, twice now. I realize this is the problem with open source - no one has the responsibility to document it from the user’s perspective - but documentation – written for a user not a developer – is crucial to helping bring new users to the product.

Please help me understand how the library location is set. It is still fuzzy to me.

1 Like

I think your confusion comes from the frame of thinking that kicad has some central library location where all libraries are expected to be. That is not the case.

It really doesn’t. It only has a default location for it’s own libraries. That’s just where the installation process happens to put them.

  1. You don’t have to put your libraries in the same location. In fact it’s discouraged to do so because you may experience data loss when installing next kicad update.
  2. You can move kicads libraries to another location if you want.
  3. You can even put every library in it’s own folder on different disks, network mounts, dropboxes/gdrives, etc. As long as it’s treated by system as normal file path (i.e. not a ftp:// or \smb share or something like that) you can store your library there. Standard permissions rules apply: if you want kicad to be able to modify the library the user running kicad has to have write permissions to the location where library is stored.

Manage symbol library dialog is just a GUI to modify a simple table that looks like this:

(fp_lib_table
  (lib (name Battery)(type KiCad)(uri ${KISYSMOD}/Battery.pretty)(options "")(descr "Battery and battery holder footprints"))
  (lib (name Button_Switch_Keyboard)(type KiCad)(uri ${KISYSMOD}/Button_Switch_Keyboard.pretty)(options "")(descr "Buttons and switches for keyboard applications"))
  (lib (name Button_Switch_SMD)(type KiCad)(uri ${KISYSMOD}/Button_Switch_SMD.pretty)(options "")(descr "Buttons and switches, surface mount"))
...

This is for footprints but symbols library looks similar.
To ignore the optional stuff there is just 2 fields there: library name and library path. Path can be any valid path, it doesn’t have to begin with variable or have a variable at all.
Variables just make it easy to refer to some central location, that way for example you can have all your libs be in D:\mylibs\footprints, create a variable ${MYFOOTPRINTS} with that value and then use that variable as a shortcut in library table. In fact the GUI will automatically substitute the portion of the path that equates to the variable if you add a library from anywhere within D:\mylibs\footprints.

Now here is the benefit: when you need to move your libraries from D:\mylibs\footprints to E:\Gdrive\kicadlibs all you have to do is move the files and then update ${MYFOOTPRINTS} to point to E:\Gdrive\kicadlibs instead of updating every single entry in lib table.

Regarding icons in the dialog hover over them to get a tooltip with explanation what they do.
To edit existing entries in the table just click in the field and enter text. For path field when you click on it a helper button that will launch system file selection dialog will appear. You can either edit path directly as text or use the selection dialog.

2 Likes

Hey thanks!

I need more time to dig into what you are saying, but so far, you are spot on what i have been slowing thinking myself. 1) KiCAD libraries can be anywhere. 2) They can be many places. 3) The tool (manage X libraries) let’s me point to ANY or ALL of them. If its that simple, i am flabbergasted at the documentation…

By the way i did some library tests and figured out that i cannot simply add locations to the list, i need to add specific libraries. This seems to be a pretty bad design. Easy i suppose. I also noted that if i add the contents of two, it creates duplicates in the table. I can see that leading to bad things ( data model corruption)

Yes KiCad comes with its own set of libraries. YOU AS THE USER ARE NOT SUPPOSED TO TOUCH THEM. This is why they are placed in read only directories protected by your operating system. (This is made clear in every tutorial i ever wrote about the topic of KiCads libraries)


You are supposed to make your own libraries living in their own file structure (see the graphics in the tutorial!)

If you move files after KiCad already has them in the lib table then of course KiCad will lose the knowledge of them. I stress it again:
KiCad has no special library location. There is no file system directory that is searched for library files to be used. You MUST add every library to the library table by use of the library managers for them to be available to you

I now know why a lot of people state “never go in customer support”.

Should i always write “use the footprint library manager or symbol library manager depending on which asset type you want to work on”? I mean a bit of logical thinking is to be expected!

I am not a developer! I am a user. I might however be an experienced KiCad user (after all a beginner will not write a good tutorial). The tutorials explain the best process i found.

And i got a lot of feedback by other users telling me that my tutorials are quite good (in person and also here on the forum). So while i acknowledge they are not perfect i would still argue you might be an exception here.
Also remember that the lecture is there to teach you how the library system works. It is not specifically written to solve your current problem! (A tutorial never is.) But if you understand the library system then you will be able to find a solution on your own.


Edit: The thing about the lib manager confusion made me so angry i did not even notice that @qu1ck already answered. So i also missed everything below that :wink:

So here the answers for that

Well is the below not enough to let you figure this out? (again from the lecture):

What to you mean by that?

1 Like

I agree. IMO the most natural expectation is that you just add a folder path in settings and KiCad would search and find all footprints and/or symbols there. But that’s not how it works, and I think that’s what Rene referred to: there’s no that kind of special library location.

Instead,

  • you have libraries somewhere
  • you add them to the library table
  • you can use path variables in the library table
  • by default KiCad comes with its own libraries, the path variables for those are predefined and those libraries are added to the default library tables
  • you can add your own libraries to the library tables and define your own path variables
  • you shouldn’t add your own libraries (footprint/symbol files) to the same place where the KiCad’s libraries are

I would not argue that this is a natural view. Like with a lot of things in technology different people have different expectations. I for example would not really expect a software to just add stuff without user interaction.

Additionally the use of the library manager really only is for large scale edits (advanced usecases).

If you add a lib in the normal way then you do not need to worry about this stuff as the symbol and footprint editors abstract the interaction away from the user (they only ask if you want this lib to be added globally or locally). This is also the case for adding a single downloaded asset (you either import the one symbol or footprint or you add an existing lib via the symbol or footprint editors)

It would however be nice to have a central program that i can use to add downloaded libraries in one go without needing to open both the symbol and footprint editor (possibly with a special library package file format. Then adding downloaded libs would truly be similar to installing extensions to other software making the use of the lib managers really only necessary for advanced usecases)

That wouldn’t be without user interaction; I would just add add a path to a path list where KiCad would search for libraries.

I’m not of course arguing this would be better for KiCad. That’s just how I would expect a simple system to work.

KiCad can definitely be made more intuitive in some areas. But to be honest i personally prefer powerful features over ease of entry (there are limited development resources available and a tradeoff must be made).
And to be honest KiCad is quite intuitive if you compare it to professional tools like for example cadence and catia (i assume altium will also work as an example but i personally never worked with it). For these tools you really need a week long training to even get the basics down while most of KiCads features can be discovered just by intuition and working with the tool.

However, some advanced features really need lectures to understand. One of them is proper library management IFF one wants it to be scalable or portable (most people do not discover on their own how to setup a system that way, but most don’t need that so it is ok).

from renee:

Yes KiCad comes with its own set of libraries. YOU AS THE USER ARE NOT SUPPOSED TO TOUCH THEM.

Renee - maybe this is the basic problem. I thought I was clear, but all I want is for KiCAD to recognize its own libraries. KiCAD, not me, installed them when i installed KiCAD, and when i updated libraries ( i got some message to update libraries, a script did it). I never touched them. When i would open a schematic, KiCAD could not find them. In my help request, I pointed out that they were in my user/library but KiCAD needs them in the /Library. How did i figure this out? I guessed, based on the paths shown in the manage symbol libraries dialog.

And yes, more work or not, i do think you need to refer to dialogs and tools by the name that KiCAD doe sin the UI -otherwise how will i know if it is the correct tool? remember, I was confused to begin with. Using an incorrect name just made me wonder if I was even in the right place. In fact, i initially assumed I was not. Its actually the only logical conclusion: you say X, I see Y I assume X is not Y.

This is very helpful, and confirms much of what i am figuring out. It also corrects some minor points . Appreciate it, and really appreciate the nice, logical statements. I’ve been soooooo lost :slight_smile: Clear and simple is good.

This must be another OSx speciality. Neither windows nor Linux KiCad installations use scripts to handle libraries nor do they provide a pop-up message for updating libraries. Libs are only updated together with a KiCad release on these platforms.
Some Linux distros split the Libs in separate packages but these are still installed like any other software package by use of the distro dependent package managers like apt or dnf.


Maybe read the advanced section of my tutorial on how to use git to manage the official libs. That way you do not rely on the strange OSx specialities that seem to be present with the KiCad installer.

Last time I’ve installed KiCad on MacOS Catalina, I had to manually copy the libraries to /library/application support/KiCAD/ .
There’s no installer for Mac that is for Windows, the installation is totally different:

  • you download drive image (*.dmg) file,
  • MacOS automatically mounts the downloaded drive image, after uses acknowledges the risks involved to “unknown sources” Finder opens the window with the drive contents,
  • you’re instructed to drag (Finder’s file copy operation) the folders to specific locations, by default it’s Applications for Kicad’s executables and /library/Application support for the libraries.
    But there’s no automatic step for this. The user needs to do it manually.
1 Like

If that is indeed true then i would argue KiCad has no right to claim that it is supported on Mac. (Even unsupported linux distros have a fully automatic installer)

I am also a bit confused as the official installation instructions do not mention anything like this https://kicad.org/download/osx/. So either the instructions are even worse than the installer or the current unified installer is better than you explained above. (I have no Mac so i can not test it)

Don’t know the official installation manual, in my case the procedure looks like described below:
https://kicad.txplore.com/index-p=56.html
“The installation archive contains two folders that must be copied to two locations”
The only help is that the drive’s Finder window displays nice background image with the hint on what to do, and shows the “drop” targets (links to /Applications and /Library/Application support).

@adamwolf you are the Mac support guy, is it really the case that users need to manually copy stuff around on Mac? Is there no way to automate this? And if so then it should really be documented on the official download page.

Not sure why you say that. The installer must be a set of scripts. But its unimportant - something in KiCAD did it for me. Call it what you wish. As to the update message - this was a long time ago, and i remember it only vaguely. It was involved with an update from 5 to 5.something. Unimportant now - they went in one place and KiCAD thought they were in a different one. So it had not reference data when it opened schematics.

Now, the real question is,: “can I/ how can I get them into dropboxes so that any changes made in one library are replicated into the other(s)”

Are we still talking about the official libs? You don’t want them in a dropbox. You only want your personal libs in a dropbox. This is because you should not change the official libs as that will lock you into the current release of the libs (getting updates when you modified the libs is not going to be fun otherwise).

For the official libs you can use git directly if you want quicker updates than the official release cycle or if you want to use gits delta updates to conserve download volume.
This would even allow you to make your own personal branch where you introduce your own stuff but be aware that merging is then also part of your responsibility.

OK, that’s great input. I think, not knowing better, that i have added a few components and modifications to some footprints in the “official” libraries. That is why i thought i might move them to a synchronized environment. But i hear you, and will simply put all those in a personal library. I don’t use project specific libraries at all - i do keep a set of footprints that met my needs. I might modify/add some spice models once spice is less torturous to use.

Thanks for the quick reply - i wont have time to digest everything you and others wrote overnight until after work.