Sym-lib-table file format

Hi,

Does anyone know of any documentation for the format of the “sym-lib-table” file?

I’d like to explore its capabilities, but I have failed to find any docs so far.

Thanks,

Rob

Kicad doc’s are seldom updated.

If I wanted to know the format/content, I would create a new symbol, adding one or two items at a time then, open/look at the file with text-editor.

The KiCad files are best edited with Notpad++.
There, you associate the file extension with the assembler coding.


As far as the Sym-lib table is concerned, it has a very simple structure.
It contains all the symbols you created for the project as a reference to it.
Bibliotheken
As you can see, the order is as you created it.
For me, it was first. the electrical Elektrotechnik(1) and then the Electrical engineering (2) library.
The libraries are created with (3).
Neue Bibliothek

1 Like

Dunno why you want to do this. It’s not very interesting.
It’s simply an ASCII-format text list of the symbol libraries. Easier to manage directly in KiCAD.

They are updated every release generally, and when people point out things that are missing or invalid. However, the library table format is not currently documented. You can find the formats that are documented here: File Formats | Developer Documentation | KiCad

I would agree with ML9104 though, they are not very interesting files.

I agree that the file format is simple, but “interesting” is a bit harder to qualify.

But more important, what is the reason for wanting to know more of this file format?
It’s not easy to find a reason where editing this with a text editor would be more useful then with KiCad’s own interface. One reason I can think of, is if you have organized personal libraries and want to merge this changed setup into a lot of existing projects.

If automation is the goal, then a sourcecode merge program such as MeldMerge may be better suited. Or, the format it is written in is known as S-expression - Wikipedia and there are probably libraries around to easily read, modify and write it in any decent programming language.

Hehe, well they are interesting to some!

Sure, I’ve looked at the contents of the file that kicad usually spits out. The key thing I’m interested in is whether there are any other types of entry other than the ones that have already been seen in this thread. For example, is it possible to include some sym-lib-table file from another, etc.

My primary motivation is to get to a situation in which I can keep a kicad project in git, and not have it rely in any way on the “global” config options/library settings. Other motivations include having a “package manager” for libraries (think npm or cargo style).

Looks like I’ll have to read the source to find out what can be done with this file.

No, what you see is what you get. That file doesn’t have any features not found in the simple list in the GUI. Your specific example is a feature which has been discussed but not been realised. If it is ever implemented it will be seen in the GUI.

There are various levels to interpret this. The old way in which KiCad had real dependencies on external libraries are starting to fade from memory. (It was KiCad V4 and earlier, with a partial fix in V5 (With the [Project]-cache.lib file) and starting from KiCad V6 Both symbols and footprints are embedded in the project itself. You can simply zip up a KiCad project, send it to someone else and he can open it and work with it. No further modifications needed.

You can go a bit further (although not really needed) with Schematic Editor / File / Export Symbols to New Library, and then update the schematic symbol links to point to this library. The PCB editor has an equivalent function for it’s footprints, but you also have to use PCB Editor / Tools / Update Schematic from PCB to push the changed library links back to the schematic)

The last part are the 3D models. I am not sure if there is any automation to copy those into the project.

KiCad also has a thorough check between deviations in used symbols and footprints, and their library equivalents. This is important for people working with database libraries, but if you only want a self contained project and work with the BOM or manual ordering this part is not very important and you may as well disable this check.

Here’s the issue you want to upvote: Library table chaining (#3935) · Issues · KiCad / KiCad Source Code / kicad · GitLab

Can’t you do this today with project-local library tables?

Do you mean a sym-lib-table file that’s local to the project file? If so, then yes and no… It’s still possible/easy for someone to insert a part that’s not from the local libraries.

Well, trying to prevent the user from doing certain things was not in your original request. It’s not generally a thing KiCad does.

(but, you could at least remove the global library config if you wanted to make it more inconvenient to use non-local libraries)

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