3.6 KiB
3.6 KiB
JLCPCB / LCSC Parts Check
How to verify that LCSC part numbers in the schematic match the intended components.
1. Extract All LCSC Numbers from the Schematic
Use the following Python snippet to parse cm4-nrf54.kicad_sch and dump all component references with their value and LCSC field:
import re
with open('cm4-nrf54.kicad_sch', 'r') as f:
content = f.read()
lcsc_pattern = re.compile(r'\(property\s*"(?:LCSC|lcsc|LCSC Part)"\s*"([^"]+)"')
field_pattern = re.compile(r'\(property\s*"(LCSC|lcsc|LCSC Part)"\s*"([^"]+)"')
blocks = re.split(r'\n\s*\(symbol\s+\(lib_id', content)
results = []
for block in blocks[1:]:
ref_m = re.search(r'\(property\s*"Reference"\s*"([^"]+)"', block)
val_m = re.search(r'\(property\s*"Value"\s*"([^"]+)"', block)
lcsc_m = lcsc_pattern.search(block)
field_m = field_pattern.search(block)
ref = ref_m.group(1) if ref_m else '?'
val = val_m.group(1) if val_m else '?'
lcsc = lcsc_m.group(1) if lcsc_m else ''
field = field_m.group(1) if field_m else ''
if ref.startswith('#') or ref == '?':
continue
results.append((ref, val, lcsc, field))
results.sort(key=lambda x: (
''.join(filter(str.isalpha, x[0])),
int(''.join(filter(str.isdigit, x[0])) or '0')
))
for ref, val, lcsc, field in results:
print(f'{ref:12} {val:42} {lcsc:15} {field}')
Note: KiCad schematics use three different field names for the LCSC number:
LCSC,lcsc, andLCSC Part— the script above catches all three.
2. Verify Each LCSC Number
For each non-trivial component, open the LCSC product page directly:
https://www.lcsc.com/product-detail/C<NUMBER>.html
The page title shows the actual manufacturer part number. Cross-check against the schematic Value field.
What to look for
- Wrong part — the LCSC number resolves to a completely different component (e.g. a 22Ω resistor assigned to a 220R position, or an ADC with the wrong channel count).
- Package mismatch — the part is the right IC but in a different package than the KiCad footprint (e.g. SOT-363 assigned to a SOT-23-5 footprint).
- Wrong variant — same family but different spec (e.g. PCM1862 vs PCM1863, which differ in channel count).
- Part not found — the LCSC number returns a 404 / "Page Not Found". The part may be new, discontinued, or the number is a typo.
- Missing LCSC — component has no LCSC field at all. If it is a real assembly part (not a mechanical hole, test point, or solder jumper), it needs one.
3. Check JLCPCB Assembly Availability
Not all LCSC parts can be assembled by JLCPCB. To check:
https://jlcpcb.com/partdetail/<MANUFACTURER>-<PART>/C<NUMBER>
Or search directly at https://jlcpcb.com/parts.
Stock status meanings
| Status | Meaning |
|---|---|
| In-stock, qty shown | Orderable, JLCPCB can assemble |
| C9900xxxxxx number | Consigned part — you must supply the component |
| "unavailable for purchase but can still be used in assembly" | Must be consigned; cannot be bought through JLCPCB |
4. Finding Alternatives
When a part is not available on LCSC/JLCPCB, search for drop-in alternatives:
- Search
site:lcsc.com <part number>orsite:jlcpcb.com <part number> - Check the Raspberry Pi / EasyEDA forums for CM4-specific parts (e.g. RJ45 MagJack alternatives)
- Common compatible replacements for this project:
| Original | Alternative | LCSC | Notes |
|---|---|---|---|
| Bel Fuse A70-112-331N126 (MagJack) | LINK-PP LPJG0926HENL | C22457393 | Pin-compatible, 387 pcs in stock at JLCPCB |