I tracked some QA failures on my ESP32 rainbow boards down to the USBLC6 ESD IC in a SOT666 package—under the microscope the part wasn’t actually landing on the pads. Reflowing fixed it, but that shouldn’t be necessary, so I compared KiCad’s SOT666 footprint to the ST datasheet and found big mismatches. Turns out “SOT666” isn’t consistent across vendors (KiCad/Nexperia/Diodes/EasyEDA all differ), so the only safe move is to follow the exact datasheet for the specific part. I built a new footprint in KiCad per ST’s land pattern, tweaked the routing, and the 3D preview looks good—fingers crossed the next run nails it.
So I’ve been investigating some quality assurance failures on my ESP32 rainbow boards
and I’ve tracked down a few issues to this IC here that you can see in this video
from the repair videos I did. This is a USBLC6 and it’s a SOT666 package.
Now if you look at this video here where we zoomed in on the microscope
it actually looks like the footprint doesn’t quite match the package.
It’s like the package has missed the footprint, not quite been aligned properly
and it’s actually not got soldered on properly.
So the way I fixed this was just by reflowing the solder and melting it all
and pushing the device into place. But this should be automatic.
It should be when the pick and place machine dumps it on
it puts it on and there’s enough solder tension to actually stick it in place.
So I got to thinking maybe the footprint’s not correct.
Have I messed this up?
So before we dig into this in a bit more detail,
quick shout out to PCBWay who actually manufactured these PCBs for me.
So apart from these couple of QA failures they’ve been really really good.
So check out our link to PCBWay in the description and get your own PCBs made up.
So here we are in KiCad. So here’s the schematic.
Here’s the ESD protection IC. In the schematic the USBLC6.
Now if we double click on this you can see that we have a SOT666 footprint.
So we are definitely using the correct footprint.
Now if we look at the PCB. So we’re just going to the PCB.
Here’s our IC here and you can see it.
Now it does look slightly interesting. We have these pads and we have these
slightly bigger pads for ground and five volts.
So I was looking at this and I thought let’s double check the datasheet.
So I’ve got the datasheet here for the USBLC6.
Let’s scroll down to the SOT666 package.
So here’s the package and here’s their recommended footprint.
So we just zoom in on this. Looks pretty different from what we’ve got in KiCad.
So just looking at some of these pads these should be 0.99 millimeters high.
So if we look in the KiCad. Click on one of these pads.
Then actually we’ve got 0.5. So it’s half the height of this.
If we look at the gap between the pads.
So we can just do that measure that distance.
Then it’s just over 1.1 millimeters. Now in our datasheet 0.62.
So our KiCad footprint for the SOT666 is completely different from the footprint
in the datasheet even though it’s for a SOT666 package.
So is KiCad wrong? Maybe they’ve made a mistake in KiCad.
Well if we google SOT666 then you find all sorts of footprints.
So here we go this is the Nexperia definition of SOT666.
So let’s scroll down.
Well that’s interesting. Looks very similar to KiCad’s version.
In fact I think KiCad is based on this.
So maybe KiCad is correct and maybe the other datasheet is wrong.
But then we find this one from Diodes Incorporated it’s the same SOT666.
Let’s see what they say.
Oh here we go suggested pad layout completely different again.
So what’s interesting is you’ve got a SOT666.
You’d think I just picked the footprint for SOT666.
Unfortunately it’s not always correct.
So the lesson here is we should really follow the datasheet.
So obviously what I need to do is create a new footprint using the recommended footprint.
So footprint recommendations.
Change that in my PCB and the next production run hopefully will eliminate this class of QA errors.
So I thought it might be instructive to look at another EDA package.
So this is EasyEDA.
So I’ve got our IC here the USBLC6-2P6.
Now you can see over here if we select it
then somewhere we should be able to see the footprint.
Where has it got to?
Always happens doing a demo suddenly you can’t find it.
There we go selected didn’t select it schoolboy error.
Okay here’s our footprint.
So what we can do is we can view this footprint.
So there’s a handy thing in EasyEDA check part dimensions.
So let’s just expand this out we can zoom in a bit.
Oops we can zoom in if we can.
We can zoom in if we’re a bit careful with our mouse pad.
Okay here we go so let’s have a look.
So EasyEDA this is the SOT666 footprint in EasyEDA.
Different from KiCad as you’d expect.
Let’s look at this pad.
So we have PW1 so that’s the width of the pad.
PW1 let’s change to millimeters so that things make more sense.
So PW1 0.3 now that actually matches the data sheet from ST.
So the pads should be 0.3 and then the length of the pads so that is this UI is very annoying.
So PL1 so PL1 0.85 our ST devices 0.99 so different again.
So the basic conclusion is that although these have the same package names
it’s not really standard everything’s randomly different.
So the advice is look in the data sheet and use what’s in the data sheet.
Don’t rely on the standard package names because they might not quite match up.
Now it is really easy to create footprints in KiCad so let’s just pick our library.
We’ll use the wizard to do it so we need a SOIC so that will do all sorts of stuff for us.
So click OK for this.
So here we have our wizard we just give it the right parameters.
So let me just bring in the data sheet so we can make sure we get everything correct.
So there we go I’ve got the footprint here from the data sheet.
Let’s fill in our things so pad count we have six pads there’s two rows so we have to change that.
The pitch 0.5 millimeters our pad width 0.3 millimeters the pad length 0.99.
And the only slightly annoying thing is this row spacing we have to do a bit of maths.
So the row spacing will be this 0.62 plus half of each pad so 0.62 plus 0.99.
So 0.66 plus 0.99, 0.62, 1.61.
Okay so that’s our new footprint and then we just push this button and it will update here.
So we can do a quick bit of measurement make sure this is correct.
So let’s get the ruler so between here and here should be 0.62 and it is so that’s pretty good.
And then the distance between here and here should be 1.2
and well actually that’s not defined anywhere but we should know it’s correct.
Let’s do the distance here so from here down to here 2.6 and if we check here it should be 2.6.
So that’s pretty good looks all correct to me.
So I can now use this footprint in my PCB and hopefully things will work correctly.
So it took a bit of finagling but here’s our new footprint in our design.
So I just have to make these traces slightly thinner so that they didn’t hit each other.
But looks pretty good let’s check the old 3D preview and see how that looks.
So I reckon that looks looks pretty good obviously
the proof of the pudding will be when we actually do a production run
but it matches the datasheet now so fingers crossed it will just work.