Battery holder in schematic is not showing up in CvPCB


I have a schematic in which I have created a battery holder (two pin device). When I run the annotation, the reference changes from P? to #P018. Note, I picked the P? reference designator arbitrarily. I understand that the # indicates power.

The board checks out under the electrical rules check. When I run CvPcb, the part #P018 doesn’t show up. This is unfortunate since I need add a physical battery holder to my PCB. Any suggestions as to what I am doing wrong and how I can fix it?


No. the ‘#’ indicates a power SYMBOL that will NOT appear as a device/footprint but is instead ONLY relevant for the schematic and the ERC/DRC… don’t do that.


Actually it is the Kicad annotation that adds the # symbol. So I experimented and eliminated all of the 9V power and ground symbols and instead caused these to be connected only to the battery holder. I changed the battery holder pins to be outputs, not power outputs. The annotation program still labels the battery holder as #P011. I guess the only way Kicad knows this is that it is connected to the power input pins of an IC.

So as it stands now, the battery holder is labelled with a # symbol, and the battery holder still does not appear in CvPcb so that I can assign it to a footprint.


When you created your symbol for the battery holder in the schematic library editor, did you check the box in the Properties dialog “Define as power symbol?”

If so, DON’T – edit the symbol so that box is not checked. The battery holder is a real part, not a logical element like a VCC symbol. The latter exists as a short-cut for a global symbol with a net name you’d normally associate with power supply nets. Power symbols cannot have an associated footprint.


I didn’t see a place to designate as a power symbol or not. So I recreated the part and used “U?” as the designator. The annotation program assigned a number without a #, U3, as opposed to #P011. The U3 part also showed up in the CvPcb editor. Works for me.

Thanks for the help.


In the library symbol editor, it’s one of the component properties. You can’t change it on a symbol that’s been placed on a schematic sheet.


The exact reference designator U, R, L, D, etc. is not relevant to KiCAD… they are for you to be able to discern by one look to what group a particular device belongs to.
‘U’ usually stands for Integrated Circuit and depicts a complex device which contains electronic devices in a monolithic assembly that you can place on your board - a battery holder is something else.
Please see this list to get you started (and yes, you can make up your very own designators as you go along, no one is stopping you if it helps you, just stick with the more common ones if you ever want to share your work with other people):

Also, as @Andy_P is telling you, KiCAD has a certain way to define power related nets/symbols for your schematic drawing phase that should not be turning up in the layout as a real populated device, but are there only for the ERC/DRC/easier schematic reading - and as far as PCBnew should be concerned - do not exist really.
You must not use these options for real devices that are in your circuit for delivering power ever.


IAW IEEE 315 clause 22.4 the class letters to use for a battery holder would be XBT. That is if the battery is ref des BT1, then the battery holder would be XBT1. The “X” class letter is a lamp holder, fuse holder, or socket. Assignment of ref des is done IAW ANSI/ASME Y14.44, which references IEEE 315 clause 22.

With a fuse ref des F1, the fuse holder would be XF1. If you were using fuse clips the fuse clips would be ref des XF1A and XF1B. However, KiCad does not recognize that individual parts can have suffix letters. In this case use ref des XF1E1 and XF1E2. The “E” class letter stands for many things. In this case the E would mean terminal or miscellaneous electrical part. That way your parts list (PL) will account for all items.


I had the same issue and was first going to say that this doesn’t work for me but then I realized that my issue was cache. I deleted the item from the schematic, saved and closed everything, started up and added it back - now it finally worked.