Non-PCB-mount (i.e. panel mount) components, bikeshed

I am wondering about your thoughts on this topic. Usually when I work on electronic projects, I try to make things as simple as possible, so designing a PCB with SMT stuff and PCB-mounted components (switches, pots etc.) is the easiest since you don’t need to fiddle with wires and pins etc.

However, in modular I tend to like the freedom to layout my front panel however I like, each time I assemble a new module, so I prefer non-PCB-mount components. Jacks, pots, switches etc. are connected with wires to the board. Another reason is that I am much more flexible when some parts are not available (since Covid it got much worse as we all know) since obviously I don’t need to match a specific height, dimension and pin layout on the PCB, just find a place on the panel and connect them.

Long story short, I am wondering what your approach is when you do the PCB layout in e.g. KiCAD?

Quite often, audio jacks are grounded and only the tip is connected and ince I use aluminium panels, the ground connection is there by design and I only need a single wire to connect the signal to the PCB. Of course, other times I need two or more.

The way one can deal with this in KiCAD is for example assigning a JST connector (with the correct number of pins) to the component

This usually works fine but in the screenshot above, there is a DPDT switch with 6 pins and I tried to assign a JST XH connector with 6 pins and unfortunately the unit is shown in two pieces in the footprint assigner, but in theory this should works :laughing: Btw. two out of the six pins are not connected at all so in principle one could hack around and use a 4 pin JST XH. I have not figured out how to do it correctly in KiCAD, without ERC warnings and other issues (the alternate pin assignment feature seems buggy or I don’t understand how to deal with them).

Another possibility is to hide the component in the PCB editor by prefixing its name with #. By doing this, the component is still there in the schematic editor but not present in the net list, so you will not see it in the PCB editor either. Of course, the connections are still needed, so one needs to add an extra component (connector) to the schematic and then use net labels to hook it up.

I don’t like the second solution since the layout is mixed into the schematics, which is kind of an anti-pattern, but sometimes it’s even necessary e.g. if you want to have daughter boards or connect multiple parts with a single connector.

I was wondering what yor thoughts are about this. So again, what’s your approach when designing a PCB which is connected to multiple panel mount components?


Lately I’ve been using (maybe not always but often) this approach:

On the root page of my schematic, I have one or more hierarchical sheets for each PCB and the panel mounted components. Also on the root page are the pin headers/sockets or Molex connectors or whatever that connect them. I do prefer to use Molex connectors for the panel mounted components although of course one could just solder wires directly to the Molex header pads. The connectors (not the headers) could be omitted from the schematic in that case.

The schematic doesn’t literally show any net connections between the panel components and the PCB but I think the layout makes the connections clear.

The octave and sync switches sheet looks like this:

The panel mounted components, and the Molex connectors (but not the Molex headers), are excluded from the PCB:



Ah that’s clever. The hierarchical approach with break-out connectors looks like a good workaround for many cases, thanks!

I didn’t know about the “Exclude from board” options, that’s really helpful. I always used the trick with the prefixed # :wink:


Btw. where do you buy the Molex connectors and which type do you use (I guess KK?)? For my modular synths I always used JST, just because I have them stocked but I am often annoyed by the bulky design and sometimes hard-to-remove connectors :wink: Dupont is not an option due to the reversibility…

I use the ones sold by Tayda. I think they are not actually made by Molex and I don’t know for sure which type they correspond to though I use the KK footprints.

1 Like

Very closely related to the topic, I’m just getting started in PCB design and in learning KiCad (only had printed one simple PCB so far) and I’d be interested to learn the most flexible, hackable, mistake-tolerant design practices, I’d love if people had good recommendations of projects to dissect or articles on the topic. Given that a lot of you have experience making PCBs that work in Euro and Kosmo form factor I’m sure you have good stuff to share!

I usually try to find books, docs or videos from professionals and not “self-made XYZ experts”, because chances are better that they stick to (industry) standards and good (best) or at least acknowledged practices :wink: That being said, I guess that the PCB design series from David L. Jones are a very good introduction and he covers lots of details: EEVblog #127 - PCB Design For Manufacture Tutorial - Part 1 - YouTube

It’s an old series, about 11 years old by the time of writing this post but I found it extremely helpful when I watched it back then and was able to sort out a few bad habits I collected over the years (decades :laughing:).

If you are a book guy and want to go all-in, I think “Fundamentals of Layout Design for Electronic Circuits” is one of the best ones in my opinion. It’s a bit expensive though.

Learning the tools (KiCAD, Eagle, Altium, EasyEDA…) is yet another story :wink:


Neither the video kind nor the guy kid, but definitely the book kind, thanks! I am very wary too of learning from bad sources, it’s rarely worth the trouble unlearning the bad info later.

1 Like

I guess that you use this method together with KiKit, as you have written before? I read that you should not use global labels with KiKit, but if you use different “global” labels for the different boards it is fine? like 12V and 12V_1 in your case?

Yes, that’s right. It’s not really that KiKit has a problem with global labels, it’s a PcbNew thing. If you have a global label like GND in a design with two boards, then PcbNew wants a trace connecting the two, which of course is impossible to satisfy. You can have GND on one board connecting to the GND on the other via a header/socket and that works, but PcbNew still calls it a missing connection. But if you use GND on one board and GND1 on the other, PcbNew is happy (and it’s up to you to remember to connect them to a header/socket…)