matosicv0.0.0.08
2026-05-15
JLCPCB's auto-match almost shipped me
1206-footprint LEDs as 0603 parts.
Five things I learned on my first PCBA order. The TL;DR: don't trust the fab's auto-matched BOM. Populate the LCSC field on every schematic symbol before you export.
I uploaded my first PCBA order to JLCPCB last week — ten boards of v0.0.0.17. It got paused immediately by JLCPCB's manual review with a flag on the LEDs. Here's what happened and what I'd do differently.
1. Auto-match matches on value, not footprint
My schematic specifies LED_1206_3216Metric for L1–L9 (nine
per-key backlight LEDs). JLCPCB's auto-match looked at the symbol value
— "white LED" — and confidently picked
KT-0603W (LCSC C2290), which is a 0603-size white LED. That's
roughly half the size of the 1206 pad I designed for. If it had gone to
placement, the parts would've tombstoned during reflow or floated off-pad.
The auto-match algorithm doesn't read your footprint name. It reads the value field and picks something cheap that has the same value. There is no validation that the part you're buying physically fits the pad you designed.
2. JLCPCB's part-search UI is fuzzy text, not constrained to your footprint
After the LED was flagged, I went into the parts library to manually pick the right one.
Searched "1606 LED" thinking I was looking at a 1606-class part. Found
XL-1606UWC (LCSC C965866), confirmed it. Almost
clicked "use this." It's actually 1.7×1.1 mm — 0805-class. The "1606" in
the part number isn't a footprint code; it's part of the manufacturer's internal SKU.
I caught it because the description had the dimensions in mm spelled out, and I cross- checked against my 3.2×1.6 mm 1206 footprint. Always read the description's millimetres, never trust the part name.
3. The 68 Ω resistor was also flagged
Original auto-match was RTT0268R0FTH (LCSC C103146) — an
Extended part with a $3 setup fee per unique Extended part. There was a perfectly fine
Basic part in the same Yageo family at the same value (0603WAF680JT5E,
LCSC C27592) that costs less and doesn't trigger the setup fee.
Auto-match doesn't know to prefer Basic over Extended for cost.
4. The fix: populate the LCSC field on every schematic symbol
In eeschema, every symbol has a property table. Add a property called
LCSC with the part number you actually want, on every symbol that has a
JLCPCB equivalent. Then when Fabrication Toolkit exports the BOM, it emits explicit
LCSC numbers per designator. JLCPCB's review skips the auto-match step entirely and
uses what you specified.
For v0.0.0.18 I'm doing this before submission. The verified-good LCSC numbers from
the v0.0.0.17 fab run are committed in the
PCB repo's bom/ directory — reference values for whoever builds on
this design next.
5. Always check "Confirm Parts Placement: Yes"
On the JLCPCB order form, there's an option called "Confirm Parts Placement". If you set it to Yes, the order gets paused at manual review before any actual placement happens, and you get an email with their proposed BOM. If you set it to No, your order goes straight to production with whatever auto-match picked.
For hobbyist orders this is your safety net. Always check yes. The few-hours delay while their engineer reviews is the only thing that saved this run from arriving with the wrong LEDs.
The final corrected BOM
For posterity (and for anyone forking this design), these are the LCSC numbers that actually shipped on the v0.0.0.17 boards:
| Designator | Wrong (auto-match) | Correct |
|---|---|---|
| L1–L9 (LEDs) | KT-0603W C2290 (0603) |
KT-1206W C71796 (1206) |
| R1–R9 (68 Ω) | RTT0268R0FTH C103146 (Extended) |
0603WAF680JT5E C27592 (Basic) |
| D1–D9 (1N4148) | ✓ matched | 1N4148W C81598 |
| Q1 (S8050 NPN) | ✓ matched | S8050 J3Y C2146 |