Questions about path and KISYSxxx


I’m using a V. 4.0.7 under Windows 10

I used to overwrite all my “mod” and “lib” files in the “program files” subdir, once a month, with the lastest modules, 3D and libs found on the kicad github repo.

BUT… but from a pure “system” point of view, libs and mods are definitively belonging to the user realm and have nothing to do in the binary section of my O.S. That’s one of the reason why writing in the “program” subdir is not allowed anymore to low privileged users under Windows 10. And using the footprint configuration wizard with the default installation path is not possible anymore (well… unless cheating with the system)

This is not the case under linux, where all new files are stored in userland/userspace.

First question : Why are footprints, 3D and symbols still installed by default under “program files” in the Windows version of kicad

Second question : mods (footprints) Templates and 3D files are located via the path variables KiSYSxxx in the configuration path template. Why is there no variable kisyslib (of kisysSYMB) to locate the symbols/libs directory ? (or does this variable exists and is barely documented ?) (or why is it not necessary to locate this path ?)

Third question : to keep a smooth transition between new and older lib/symbols and mod/footprint, is it possible to declare more than one path for each path variable (say kisysmod pointing in direction of /user/documents/kicad/kicad-footprints-mastert AND /program/kicad/share/kicad/modules) ?

Adding many path could also help to reach directories filled with “personal” libs and mods, located in a specific and segregated area to avoid polluting the official schematics and “pretty” files.

I know this kind of newbie question could upset quite a lot of people here, but I swear, I RTFM and could not find a precise answer on this subject.



This has been introduced into v5, it will work a similar way to the footprint libs.


I’ll leave the “Why is KiCad designed like that…” questions as they invite speculation into design decisions of the program authors and unproductive debates about “Is X better than Y”.

Thanks a lot BobC

My intention was not to launch a Troll :- ) and my almost fanatical devotion to Kicad, would have forbiden that.

Thanks for these precisions

in fact, the question was not exactly “why is kicad designed like that” but “why is the Windows version like that”. your answer shed a light on this.

Thanks again for these infos… can’t stand the arrival of the V5

I prefer to use my own curated libraries (libs and mods in this case) using the distribution libraries as a back-up/starting point reference for my own curated libraries.

My personal workaround is to define additional variables naming parallel to the KISYSxxx as KIUSRxxx and then make sure they are at the top of the library tables (can finally do this in the V5.0 RCx packages for schematic symbols… I held off the nightlies until the RCx packages started, but that functionality is enough to risk the RCx bugs).

(I use those variables instead of direct paths even for personal stuff so I don’t get shafted when I upgrade the OS or actual machine and the direct paths change.)

I was trying to avoid “curated libs” to stick to the standard and basic config. I’ll digg in this direction? Tnks

I didn’t knew it was possible to define a path variable. I thought is was a bunch of reserved words.
Is there a tutorial explaining how to define these variables, or is it a feature specific to the 5.x version ?

I definitely love this feature anyway

You should be able to add paths with the Configure Paths entry of the Preferences menu. (I think it is there in most of the tools.)

I use curated libs because (among other things) I do silly things like have pin1 indications (square pads and/or silkscreen dots, schematic pin numbers, etc) on ALL components for easier documentation. (So I can describe R52 pin 1 as “R52-1” instead of “the side of R52 closest to the L-shaped cutout in the board”.) And I can easily correlate the finished board to the schematic.

Adding the path was not exactly what was causing my troubles. I was wondering how kicad was informed of the nature of the path (sorry, my English is definitely rotten)

example : I need to define KiUSRmod with the path C:/pcb/soandso/whatever/mymodules. How can I tell kicad that this path should be added, and how will it know it’s a 3D, Mod or lib directory.

Anyhow, I’ll try and see.

redefining your libs looks like a titan’s job… I’m really impressed. Sincerely.


KiCad seems to “know” (pattern matching scans?) for everything except for KIUSR3DMOD. Here are screenshots of the library table editors in V5.0RC2. To add my libraries in the schematic library tables (because a wizard doesn’t exist yet) I used the “Browse Libraries…” button and KiCad was able to recognize the absolute path as ${KIUSRLIB}.

I just tried adding a 3D shape to a module, and KiCad was able to recognize and use my ${KIUSR3DMOD} variable in the path.

So, it seems you just need to set them up and KiCad will (usually?) figure the right thing to do.

Oh, redefining my libs isn’t too bad. I only create new symbols and footprints to my specifications as needed. It was more tedious in earlier projects until I got the majority of my jelly-bean parts converted.

1 Like

The ${NAME} are simple text substitutions, when parsing a file name, KiCad simply replaces that string with the defined value. For most users I’m not really sure it helps, it adds an extra layer of confusion.

There is nothing really special about the names, except for where they are used:

  1. KISYS3DMOD is used in the official libraries to link to the 3D models.
  2. KICAD_PTEMPLATES is used to find the portable templates (optional)
  3. KISYSMOD is used in the default fp-lib-table (but is not required to be used)
  4. [v5] KICAD_SYMBOL_DIR is used in the default sym-lib-table (but is not required to be used)

That’s definitely awesome
yes, Bobc is right concerning the possible confusing “${VAR}” alias. Particularly for people who are not used to play with environment variables. But Chris explanations are definitely clear for me
Thanks to both of you. I was reluctant to install a nightly built on my machine… that’s not the case anymore :slight_smile:


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