What i'm missing? Cannot route to Shield nor NPTH in USB C

Hi everyone,

first post here, but i’ve been using Kicad for a while.

I’m trying a simple layout (part of a bigger proyect that i would post later) that uses a USB C connector (Molex 105450-0101) to supply power to a bigger board (through a JST connector).

I’ve downloaded the Footprint and symbol from SnapEDA.

I stucked trying to make the shielding pad and the NPTH mounting holes on the same filled area as GND.

While i know i can’t route a NPTH (as is not its purpose) i’ve tried to change that pad to a NET Pad (GND).
Kicad detects it as being in the same net as GND (the ratnest shows a line from it to the GND track) but when i try to route it, nothing happens, it doesn’t allow me to route a track.

When i try to start the track on the surroundings of the pad, i get a warning message:

Cannot start routing inside a keepout area or board outline

Of course i didn’t created a keepout area. I created a board outline (outside the connector obviously) but still get the same error.

I think i’m missing something important in the footprint that is keeping me from putting all the shielding together with the GND.

Can anyone help me using this footprint?
I’d had attach the project files and screenshots, but seems that newcomers are not allow to post attachments, so i can only refer you to the SnapEDA footprint for illustrating this issue.

Thanks in advance!!!


Why do you want to use NPTH?
And where do you want to use NPTH? Is it for the pads on all 4 corners?

From your screenshot I guess that these should be routed slots and there are mechanical pins that should fit in those slots. In that case the pads should be plated. Plated holes are also much stronger. Pads that are only on the surface of the PCB can easily get ripped of when inserting a connector.

For an example of Footprints with routed slots you can have a look at the “barreljack” connectors in KiCad’s default library:

Here’s a shield pad definition from the footprint file (“KiCad v4 and later”):

(pad S1 thru_hole oval (at -4.32 -3.36) (size 1.1 2.2) (drill oval 0.6 1.6) (layers *.Cu *.Mask))

It’s just a normal oval THT/PTH pad, there should be no problem. You need the corresponding symbol which has a pin with pin number S1 etc. Why do you talk about NTPTH holes?

In your screenshot the pads look different: there’s a round hole inside a pad. Where did that come from? Is it the problematic NPTH pad?

Hi eelik,

i hadn’t seen code definition PCB before (but i definite like it, i’ll start using it).

The main thing is that the footprint came already defined, so i’m dealing with the author choice of design (many layers), which i dont really understand (i’m not that experienced in footprint design).
The 4 corner drills are set to NPTH, Mechanical, which doesn’t allow for routing.

The thing i’ve been trying is to change that to any pad that allows routing.

I’ve partially solved this by removing everything there and putting an oval through hole pad.
There was a lot of “garbage” in that place (few masks, polygons, pads and others i don’t really understand).
There was also an edge cut.
I don’t know which one was causing me trouble (maybe more than one??) but for the moment i have it solved (i’ll upload a picture).

I think the footprint i’ve downloaded wasn’t designed or checked in Kicad, as SnapEDA does offer the footprint for many different programs.

Thanks for your help, it really did the job.

Hi paulvdh,

in my case it is not about mechanical resistance, but for electrical connection (the plastic case is going to take care of mechanical stress, also the connector is going to be soldered all the bottom to the PCB).

Your solution is simple, most efective by the way. It didn’t came to my mind to use an existing footprint as a reference (seems quite obvious right know).

The PCB is going to be one side only, for the shake of simplicity.

I’ll actually change the USB C connector to a Through Hole one to overcome this design bottleneck.

Thanks both for your help, i really appreciate it.

Here’s a draft by the way, i’ll go to the workshop and make a prototype as soon as possible.

Your GND copper reaches the pads all around. That’s not good, because soldering (manually) becomes very difficult. Thermal connections are used for that reason.

It’s amazing how much i’m learning today.
I’ll take care of that.

And thus the difficulty with parts from sites like SnapEDA. They try to support multiple EDA suites, but from what I’ve seen while they supply files that can be loaded by KiCad, they don’t always follow the best practices of KiCad. (I would only expect best practices for at most 1 EDA suite out of all the EDA suites that they support…) The pin types on the schematic symbol are probably not best pracitces for KiCad as well (like all set to “undefined” or “passive”).

Design question… How much current do you expect to need to pull from your USB C connector? USB power supplies should (are supposed to) limit the amount of current that they can source based on what the USB device says it can support. With USB A and B this can simply be done with strategically placed resistors. I’m not sure if you can get away with simple resistors on USB C. (Probably can for 5V only, but I haven’t read the spec in a long time.)

Completely agree. I’m now focusing on designing my own footprints.

How do i design a footprint with just code only? i know i can set every object parameters editing its properties and setting the values, but, is there any way to do that with code only?

Well, thats something i didn’t thought about.
My intention is to power a Raspberry Pi 4 from here (as any regular PSU won’t keep 5v when drawing that much current, up to 3 or 4 amps).
It seems that this can be achieved with USB-C 1.2.

As far a i’ve seen, and regarding i only need 5V 3A, this can be achieved with two 5.1kohm pulldown resistors on CC pins. This allows for maximum current from the PSU while keeping the 5V.

I’ll run some tests before making this information “official”.

Because the files are human readable it can be done with any programming language by processing text. KiCad has also an python language API in pcbnew with which it’s possible to create footprints. The official KiCad libraries project also creates many footprints parametrically with scripts.

There are 13 wizards for parametrically generating footprints that come by default in KiCad. You can generally enter some numbers for number of pins and pin spacing, and then KiCad generates a footprint based on the parameters you entered.

These footprint wizards are a few pages of Python script each and are a good starting point if you want to design a similar Footprint Generator.

And of course the description of file formats, either for better understanding the scripts, or for other ways of hacking into KiCad:

A few years ago I wanted to learn python, and I decided to make a program to make a library of connector symbols with different number of pins, and I got it to work quite nicely in about a single afternoon.

Hi! I was reading your comment and I am sorry that you’ve faced all these problems with our footprint. I am going to investigate what happened and I’ll get back to you with a solution. :slight_smile:

Hi Paulvdh,

i’ll dig into the info you posted to get into parametric design.

Hi Eliictro, don’t worry about it (i really apreciate that you care about it by the way).
I think the problem might be, either that the footprint is generated from some generic data, either is designed for a different purpose (maybe different manufacturing tecnique).

I found the footprint really handy for my project, just modify a few shapes and i got what i needed.

I attach some photos of the prototype (i’m still getting used to toner transfer tecnique).

You can see here the printer “tolerance” and some rework i needed to do before acid attacking the board.

Also, here is the project, in case anyone needs it as starting point.
NOTE: as a new user, i’m not able to attach a file, i’ll post it as soon as i get more baggage.

Thanks to everyone that help me, that really did the job.

I attach a photo of the finished product that i’m working on.

I see! I checked the model anyway and if you download the symbol and footprint for V4 & Later, you should be able to route the slotted holes as per usual! I think you downloaded the old format (V3 & Prior) because that old format has this limitation! :slight_smile:

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