SPDT 6pin switch with internally connected pins. Is this right?

Checking if this is the best way.
I am using a 6pin SPDT Switch MHSS1104 from…
page 2 https://www.mouser.com/datasheet/2/26/Microminiature_slide_switches-2930273.pdf
pins on opposite sides are internally connected.
the goal was to be able to use either pin on each side of the switch at will. It looks like its telling me to run tracks between the pin 1-4, 2-5, 3-6.
I modified the existing symbol SPDT Switch and added. Pins 4,5,6 on top of the existing 1,2,3
making pins1,4 named A, 2,5 as B and 3,6 as C.
Is there a way to not have it show the suggested connection between 1-4, 2-5, 3-6?
I know eagle has a way to do this with its pin connection as “All” or “Any” options when connecting pins to pads. Just not finding a method yet.

One way is to give the same pin number to internally connected pins, i.e. two 1’s, two 2’s and two 3’s. You can see this in some of the KiCad SPST 4 pin tactile switches. There are two pairs of pins. Edit: you’ll still have to connect the pins of the same number with traces, but the symbol will have only one of each number. Which isn’t exactly what you wanted. :person_shrugging:

The way I read it, retiredfeline’s comment is the opposite from what you want.

If you don’t want to connect copper tracks to pins 1, 2 and 3, then just don’t mention them in the schematic symbol. Then they will not be in the netlist, and KiCad ignores the pins.

How is your schematic symbol defined? What is going on with the double pin numbers? Did you put two schematic symbols on top of each other or something like that?

But why bother at all? The simplest is to just draw the three straight tracks to those pins to make DRC happy.

I haven’t tried it just now, but are you sure? I’ve done it a few times with internally connect pins in tactile switches (SPDT symbol and then use my own footprint which has pins 1-2 on one side and 1-2 on the other side) and IIRC it always work the same way as @Joe_Brown wants.

Yes that would make the DRC happy. But you can’t run a track down the center of the switch.
Right now I am switching from Eagle to KiCAD and re-writing a bunch of my lesson at a college.

Well I have tried a bunch of things. All with the same result, some a little uglier than others.
I would thought having the Pads on the footprint be the same number would have worked. shrug
Just a limit to hopefully be overcome in future version.

If you fail to connect one pin DRC will tell you it’s unconnected. You can ignore that message of course and the circuit will still work.

Instead of ignoring the DRC message yourself, you can also tell KiCad to hide specific DRC messages by right clicking on them in the DRC window. But it will probably still show the ratsnest lines.

But that still leaves the root question, if you do not want those connections to be made, then why add them to the schematic in the first place?

This seems to be part of a lesson taught with Eagle to highlight an Eagle function.
The teacher is switching to Kicad and wants to know the best method to use for the same result in Kicad.

Can you make a small test project with that switch and upload it here? If you do that I (and other interested people) can have a look at how that schematic symbol is actually defined and what the best solution is in your case.

But you have to remember, KiCad is not eagle, and some of it’s concepts are differently. If you approach it as “Eagle with some workarounds”, then it will probably always have a “hacked together” feel to it.

But in the underlying logic this is a limitation of KiCad. KiCad always has a direct one to one connection between pin numbers on the schematic symbols, and pin numbers on the PCB footprints. If a footprint has multiple pins with the same number, then you have to connect them all on the PCB. There is no “and / or” function for this in KiCad.

Can a “pin” have two holes in one copper pad?

Yes, but that is the same as two pads with a connecting track.

I’ve never seen Eagle, but I suppose internally connecting pins work as Paul mentions… and / or.
I don’t think Kicad will do that.

The simplest (for me) way would be if KiCad assumed that pads with the same number are internally connected and not asked to connect them at PCB.
Asking for that resulted in some discussion from what I remember that there are important reasons to not do that.
You can read that discussion here:

Now, I think the simplest way is to have your switch symbol with all 6 pins drawn separately. Then you connect the wire at schematic to pin you want and left second one not connected.

The connections were added to schematic by placing pins one on another and the reason to do that was to have simple switch symbol. Schematic should concern on how circuit works and not how exactly it is routed. The same reason we do not put DIL14 pins at schematic in the same order as they are in part tells us to have 3 pin instead of 6 pin symbol for such switch.

This is a common problem and it’s often not a good idea to rely on connections made by components. For examples manufactures test the continuity of the traces of the board during manufacturing and they might see it as a defect if two parts of the same net aren’t connected with traces.

So the best option is to either really route a trace between the pins, or otherwise treat both sides of the switch as separate nets, as if the switch was a resistor network or whatever.


Seconded. The trick of creating a temporary copper layer with the internal connection allows you to route the board, but after its removal, you have a broken net to upset the PCB fab testing.

In addition to the launchpad-link this is the currently open gitlab-issue:Support virtual jumper connections (off-board connections) between pads (#2558) · Issues · KiCad / KiCad Source Code / kicad · GitLab

I’ve never seen Eagle, but I suppose internally connecting pins work as Paul mentions… and / or

yes, this is the way eagle works. There is a flag (checkbox) in the eagle device definition (eagle library editor) which can be set individually for common connected pins:

  • common pins not connected internally (standard) - ever one of these pins must be connected with tracks on the board
  • common pins are connected internally - these pins can act as “jumpers”, only one connection is required

Judging this feature in retrospect of my 25years with eagle:

  • small nice feature, but in reality only seldom used (for the usual usecases: tact switches, some connectors)

I don’t agree with it (or I don’t understand something).
I have never send to PCB manufacturer anything more than gerbers + drill file and as I know they do test electrically PCBs so they have to find what is connected with what using only gerbers and not PCB file.
If KiCad would assume that pads with the same number are internally connected than track connected to one pad will be for KiCad the same net as other track connected to second pad with the same number. But from gerbers they will look as not being connected and at PCB alone (without that element assembled) they really will be not connected so for PCB manufacturer everything is correct. He will test them assuming they are not connected - I see no problem with it.

1 Like

I think Gerber data contains net list information, at least PCBWay complains if you upload a design where a net is disconnected inside KiCad.

May be some new format…
As each layer has its own gerber file then which one should contain netlist…

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