exocortex

Sourcing: EXO-410 contact board + EXO-420 controller board (JLCPCB 6-layer PCBA)

Research date: 2026-10-27. Nothing was ordered and no supplier was contacted.

Where the numbers come from. LCSC and JLCPCB stock, prices and basic/extended status were read from the JSON endpoints behind their own product pages (wmsc.lcsc.com/ftps/wm/product/detail, jlcpcb.com/api/.../selectSmtComponentList) on the research date. The human-readable pages are https://www.lcsc.com/product-detail/<Cxxxx>.html and https://jlcpcb.com/partdetail/<Cxxxx>. JLC stock is JLC's own assembly stock, separate from LCSC's. Prices are USD, at the quantity bought: 2 tiles = 2 × per-tile quantity, 16 tiles = 16 × per-tile quantity. DigiKey, Mouser and Arrow block automated fetches. Their figures below come from one fetched page (digikey.ca) or from search-engine snapshots, and are marked as such.

Per-tile quantities come from out/pcb/tile_circuit.json, equivalent to what exo.pcb.check writes. check was not run, because it writes under out/pcb/. Note there are 62 op-amps per tile (60 contacts plus UR1 and UR2), not 60. That is 124 for 2 tiles and 992 for a helmet.


Summary: what to change before ordering

# Issue Severity Fix (in exo/pcb/circuit.py, not applied)
1 MCP6V31UT-E/LT: 4 in stock at LCSC/JLC blocking for LCSC-only PCBA Keep the part and buy it through JLC Global Sourcing (DigiKey has thousands), or switch to OPA391DCKR (C2871876, same pinout, 1,641 at JLC). See §1
2 BUF1G17 lcsc C7836 is SN74LVC1G17DBVR (SOT-23-5), but the footprint is SC70-5 wrong part would be placed lcsc="C10425" (SN74LVC1G17DCKR, SC-70-5, 36,840 in stock)
3 FLASH MPN W25Q16JVSSIQ is the 208-mil SOIC-8 (C131025: "SOIC-8-208mil"), but the footprint is the 150-mil SOIC-8_3.9x4.9mm won't fit mpn="W25Q16JVSNIQ", lcsc="C2456211" (150-mil SOIC-8, 35,366 in stock); footprint unchanged
4 ADS131M08 lcsc C5215173 is the IRSNT 250-pc reel with 17 in stock (need 16 / 128) blocking at 16 tiles lcsc="C5124126" (ADS131M08IRSNR, 1,813 LCSC / 1,932 JLC)
5 DF40C-10DS-0.4V(51) receptacle: LCSC 0, JLC 15 (need 8 / 64) blocking at 16 tiles lcsc="C6601481" = DF40C-10DS-0.4V(58), 940 in stock. Same 1.5 mm DF40C series; the suffix difference is not confirmed (see §2)
6 M1.6 SMT nut SMTSO1615MTJ (C2928168): 634 at JLC, only M1.6 nut in the library blocking at 16 tiles (960) Fine for 2 tiles (120). For a helmet, ask LCSC/JLC to pre-order a reel (JLC Parts Pre-order) or buy from Sinhoo directly and consign
7 UL1 (TPS7A2033PDBVR, SOT-23-5, 1.45 mm max) sits on the contact board's back, inside the 1.5 mm DF40C mated gap (exo/shell_v1.py B2B_H = 1.5) mechanical: 0.05 mm margin Use TPS7A2033DQNR (X2SON-4 1×1, 0.4 mm tall, C46459900, 291 LCSC / 633 JLC) for UL1, or move UL1 off the stack footprint. New footprint needed
8 CF1..8 "100nF C0G" in 0201 is not made (no 0201 C0G anywhere near 100 nF) BOM can't be filled 100 nF X7R 0201 (C22435929, HRE 16 V) or move to a 0402/0603 C0G of lower value if REFIN needs C0G
9 "100k 0.1%" in 0201: no 0.1 % 0201 100 k in the JLC library (the RT0201 thin-film series stocks only 10 k, 15 k, 33 k, 49.9 k and 499 Ω) BOM can't be filled as written RC0201FR-07100KL 1 % (C106224, 2.3 M in stock). The worst-case series R is still ≥ 198 kΩ, so the single fault is ≤ 16.7 µA (< 50 µA). Behind a follower, matching does not matter
10 PAT9125EL-TKMT: no LCSC/JLC stock (the JLC entry "PAT9125EL-TKIT" C2832657 is 0, and is a customer-supplied record) consign Buy from WPG Americas (PixArt distributor) and consign to JLC. See §2
11 Contact board is 44.2 mm square: under JLC Standard PCBA's 70 × 70 mm minimum. 0201 parts force Standard PCBA ordering Panelize (e.g. 2×2) or add edge rails and fiducials

Two other notes, not blockers: - The Sinhoo nut is tin-plated and the pin is gold. A gold-to-tin contact at µV signal levels is prone to fretting corrosion. Ask Sinhoo/PEM about a gold-flash or nickel-plated M1.6 SMT nut, or rely on the tin-reflowed nut as the "pad" and accept it. - The 1 µF 6.3 V X5R 0201 coupling capacitors lose roughly half their capacitance at a few volts of DC bias. The 0.07 Hz corner moves to about 0.15 Hz, which is still fine for EEG. Use a 10 V part (C2846675, FH 0201 1 µF 10 V) for margin.


1. MCP6V31U and alternatives (SC70-5, "U" pinout: 1 +IN, 2 V−, 3 −IN, 4 OUT, 5 V+)

1a. MCP6V31UT-E/LT availability

Source Stock Price URL / basis
LCSC C623527 4 $1.6129 @100 (top break) https://www.lcsc.com/product-detail/C623527.html (API)
JLCPCB parts C623527 4, extended $1.6074 @100+ https://jlcpcb.com/partdetail/C623527 (API)
DigiKey (digikey.ca, fetched) 8,615 CAD 1.9378 @100, CAD 1.78894 @3,000 (T&R) https://www.digikey.ca/en/products/detail/microchip-technology/MCP6V31UT-E-LT/3177019
DigiKey (US, search snapshot) 5,885 – https://www.digikey.com/en/products/detail/microchip-technology/MCP6V31UT-E-LT/3177019
Mouser (search snapshot, not live) 1,076 (+6,000 on order) – https://www.mouser.com/ProductDetail/Microchip-Technology/MCP6V31UT-E-LT?qs=PZkJWYMe7ldtadX3Ppl32g%3D%3D
Arrow (search snapshot, not live) ~2,144 – https://www.arrow.com/en/products/mcp6v31ut-elt/microchip-technology
Newark / Avnet (Findchips) 1,148 / 1,000 Newark $0.78–1.05 range; Avnet $1.24–1.34 https://www.findchips.com/search/MCP6V31UT-E%2FLT
OnlineComponents (fetched) 1,950, plus 21,000 at the factory $1.22 @250, $1.20 @1,000; MOQ 250 https://www.onlinecomponents.com/en/productdetail/microchip-technology/mcp6v31utelt-44793892.html

DigiKey and the aggregators list the part as Active. One reseller page says "discontinued", which contradicts the others. DigiKey states a 24-week factory lead time. Microchip's product page refused automated fetches; check it by hand before committing a helmet's worth.

Price at 124 (2 tiles): about CAD 1.94 each at DigiKey (≈ US$1.4; the exchange rate is assumed, not looked up), or $1.61 from LCSC's last 4. At 1,000: about $1.20 (OnlineComponents) to CAD 1.79 (DigiKey reel of 3,000).

1b. Pin-compatible candidates (SC70-5 with the same pinout as MCP6V31U)

Pinouts were checked in each datasheet's pin table. Stock and price are JLC's.

Part (LCSC#) Pinout i_n (current noise) I_B (typ / max, 25 °C) V_OS max e_n I_Q JLC stock $ @124 / @992 Source
MCP6V31UT-E/LT (C623527) match 5 fA/√Hz 5 pA typ 8 µV 50 nV/√Hz, no 1/f 23 µA 4 1.61 / 1.61 DS20005127B, https://ww1.microchip.com/downloads/en/DeviceDoc/20005127B.pdf
OPA391DCKR (C2871876), e-trim, not a chopper match (DCK: +IN 1, V− 2, −IN 3, OUT 4, V+ 5) 30 fA/√Hz @1 kHz ±0.01 pA / 0.8 pA 45 µV 60 nV/√Hz @1 kHz, 130 @10 Hz (has 1/f) 24 µA 1,641 0.89 / 0.85 https://www.ti.com/lit/ds/symlink/opa391.pdf
OPA333AIDCKR (C44193), the known fallback match (DCK) 100 fA/√Hz @10 Hz ±70 pA / ±200 pA 10 µV 55 nV/√Hz 17 µA 2,899 0.76 / 0.68 https://www.ti.com/lit/ds/symlink/opa333.pdf
TLV333IDCKR (C181502) match (DCK) 100 fA/√Hz ±70 pA 15 µV 55 nV/√Hz 17 µA 14,492 0.24 / 0.17 https://www.ti.com/lit/ds/symlink/tlv333.pdf
OPA330AIDCKR (C473401) match (DCK) 100 fA/√Hz ±70 / ±300 pA 50 µV 55 nV/√Hz 21 µA 1,794 0.83 / 0.77 https://www.ti.com/lit/ds/symlink/opa330.pdf
3PEAK TP5531U-CR (C248730) match ("U" variant; plain TP5531 is the other pinout) not specified ±50 pA (±800 pA hot) 10 µV 55 nV/√Hz 45 µA 3,850 0.76 / 0.54 https://datasheet.lcsc.com/szlcsc/3PEAK-TP5531U-CR_C248730.pdf
ST TSZ121ICT (C2058276) pin diagram is an image in the datasheet; believed U-type, verify not specified 50 / 200 pA 5 µV ~60 nV/√Hz (JLC listing) 28 µA 2,143 1.24 / 1.17 https://www.st.com/resource/en/datasheet/tsz121.pdf
OPA378AIDCKR (C2058269) match (DCK) 200 fA/√Hz 150 pA 20 µV 20 nV/√Hz 125 µA 759 1.18 / 1.10 https://www.ti.com/lit/ds/symlink/opa378.pdf
MCP6V61UT-E/LTY (C623531) match 5 fA/√Hz ±1 pA 8 µV 26 nV/√Hz 80 µA 5 2.36 Microchip DS (via LCSC)
MCP6V11UT-E/LT (C144173) match 4 fA/√Hz 5 pA 8 µV 102 nV/√Hz 7.5 µA 6 1.52 DS20005124B
ADA4051-1AKSZ-R7 (C161741) SC70 – 5 pA 2 µV (typ) 95 nV/√Hz 15 µA 3 1.94 JLC listing
ADA4528-1 / -2 MSOP-8 / LFCSP only, no SC70 – 220 pA 2.5 µV 5.9 nV/√Hz 1.4 mA – – JLC listings C155684, C1346373
MCP6V81U SC70 (C625588), MCP6V71U SC70 (C623534) match – – – – 0.5 mA / 0.2 mA 0 / 0 –
SGM8551 / GS8551 / RS8551 / TP5551 SOT-23-5 or SOIC only at JLC, 0.5–1.2 mA – – – – – – –

The SGMicro and Gainsil zero-drift parts in stock are SOT-23-5 only. Footprint and pinout differ, so they are not drop-ins.

1c. What the current noise costs (in-band 0.5–100 Hz, follower input behind 200 kΩ plus the contact)

Current noise flows through the source impedance, so it scales with R_source. These are first-order estimates: e_n × √BW, with the OPA391's 1/f term fitted from its 10 Hz and 1 kHz values; i_n × R_s × √BW. Totals add the contact's thermal noise, the 2 × 100 kΩ and the ADS131M08 (0.63 µV in 100 Hz) from docs/pcb.md.

Op-amp e_n part i_n part, R_s = 1.2 MΩ Total, 1 MΩ contact i_n part, R_s = 5.2 MΩ Total, 5 MΩ contact
MCP6V31U 0.50 µV 0.06 µV 1.62 µVrms 0.26 µV 3.05 µVrms
OPA391 ≈ 1.0 µV 0.36 µV 1.89 µVrms 1.56 µV 3.53 µVrms
OPA333 / TLV333 / OPA330 0.55 µV 1.20 µV 2.03 µVrms 5.2 µV 6.0 µVrms
OPA378 0.20 µV 2.4 µV 2.85 µVrms 10.4 µV 10.9 µVrms

The 5 MΩ case is pessimistic, because a dry contact's impedance is partly capacitive and falls with frequency. Bias current gives I_B × 1.2 MΩ of DC offset: 84 µV for the OPA333, which the AC coupling removes. Chopper input-current spikes into a high-Z source also make intermodulation products, a further point against the 70 pA-class choppers here.

1d. Recommendation

  1. Keep MCP6V31UT-E/LT and buy it through JLC Global Sourcing (JLC buys from DigiKey/Mouser/Arrow for the assembly order; https://jlcpcb.com/help/article/60-how-to-use-jlcpcb-global-sourcing-parts-service), or buy it yourself and consign. DigiKey has 8,615, enough for 8 helmets. Expect Global Sourcing markup and 1–2 weeks of lead time.
  2. LCSC-stocked alternative: OPA391DCKR (C2871876), not OPA333. Same SC70 pinout, 24 µA, I_B 10 fA, current noise 30 fA/√Hz. It beats the OPA333 at every dry-contact impedance above about 0.4 MΩ and costs about 0.27 µV over the MCP6V31 at 1 MΩ. Its 45 µV offset and 1/f noise below 10 Hz are the trade. JLC holds 1,641, enough for one helmet (992) if bought soon. No footprint change.
  3. TLV333IDCKR (C181502, $0.17, 14k in stock) only for a cheap bring-up board, where the noise floor doesn't matter.
  4. The comment in circuit.py that OPA333AIDCKR is pin-compatible is correct (TI DCK pin table checked).

2. Specific parts

Part Status LCSC / JLC # Stock Price Recommendation
PAT9125EL-TKMT Not at LCSC/JLC. C2832657 "PAT9125EL-TKIT" has 0 stock and is a customer-library entry. Octopart lists TKIT as a sensor board – WPG Americas (PixArt's distributor): MOQ 125, $5.64 (search snapshot; page fetch blocked) $5.64 Consign. Buy 125 from WPG Americas (https://eshop.wpgam.com/pat9125el-tkmt): 8 for 2 tiles, 64 per helmet, so 125 covers a helmet plus spares. Broker listings of "TKIT" at $2.6–11 (https://www.digipart.com/part/PAT9125EL-TKIT) are not trusted. JLC charges for consignment (USD 30 for < 20 part types from mainland China; https://jlcpcb.com/help/article/how-to-consign-parts-to-jlcpcb-from-mainland-china)
TPS7A2033PDBVR ✓ C2862740 (extended) 146,382 JLC / 143,565 LCSC $0.2091 @1, $0.115 @500 Use it, but see the UL1 height issue (#7); C46459900 (TPS7A2033DQNR, X2SON) for UL1
W25Q16JVSSIQ ✓, but 208-mil C131025 8,636 $0.84 @100 Wrong package for the footprint. Use W25Q16JVSNIQ C2456211 (150-mil SOIC-8, 35,366, $1.18 @1 / $0.72 @1k)
DF40C-10DS-0.4V(51) receptacle low C424636 LCSC 0 / JLC 15 $0.24 Use C6601481 DF40C-10DS-0.4V(58) (940, $0.65 @1 / $0.47 @100). Hirose calls (51) its standard (https://faq.hirose-gl.com/ex/en/faq_detail.html?id=100056). (58) is the same DF40C series, but its exact difference (believed packaging) was not confirmed. Check Hirose's (58) drawing before ordering
DF40C-10DP-0.4V(51) header ✓ C424635 237 JLC / 235 LCSC $0.27 @1 / $0.22 @100 Use it. 64 per helmet fits, but buy before it drains
Stack height 1.5 mm – – – DF40C-DS + DF40C-DP mates at 1.5 mm, which matches B2B_H = 1.5 in exo/shell_v1.py. The suffixes in circuit.py are right. The taller DF40HC receptacles are not in the JLC library
12-pin FPC HC-FPC-05-10-12RLTAG ✓ C5213732 (extended) 14,090 $0.13 @1 / $0.08 @1k Use it

3. Every BOM line: stock for 2 and 16 tiles, basic vs extended

"Recommended LCSC#" is the code to put in circuit.py. The passives currently have none. ✓ = enough JLC stock for that quantity. Ext = extended (loading fee per unique type), Basic = no fee.

EXO-410 contact board (per tile)

Line Qty/tile Recommended LCSC# Part Lib JLC stock 2 tiles 16 tiles $ ea @2 / @16 tiles
M1.6 SMT nut 60 C2928168 Sinhoo SMTSO1615MTJ Ext 634 ✓ ✗ (960) 0.0727
100 k 0201 (RA, RB) 120 C106224 (was 0.1 %, see #9) Yageo RC0201FR-07100KL Ext 2,331,261 ✓ ✓ 0.0023 / 0.0018
2.2 M 0201 (RH) 60 C474576 Yageo RC0201FR-072M2L Ext 28,492 ✓ ✓ 0.0024
1 µF 0201 (CC) 60 C76930 (or 10 V C2846675) Murata GRM033R60J105MEA2D Ext 3,342,824 ✓ ✓ 0.0048
100 nF 0201 (CUB1/2, CSB1-4) 6 C22435929 (merge with CF, saves one type) HRE 100 nF 16 V X7R Ext 658,082 ✓ ✓ 0.0029
100 nF "C0G" 0201 (CF1-8) 8 C22435929 (X7R, see #8) same Ext – ✓ ✓ 0.0029
220 nF 0201 (CP1-8) 8 C18164549 CCTC 220 nF 10 V X5R Ext 426,844 ✓ ✓ 0.0025
1 µF 0402 (CA, CD, CR1) 17 C52923 Samsung CL05A105KA5NQNC 25 V X5R Basic 11.2 M ✓ ✓ 0.0064
4.7 µF 0402 (CSA) 4 C380302 CCTC 6.3 V X5R Ext 912,359 ✓ ✓ 0.0052
10 µF 0603 (CBULK) 1 C19702 Samsung CL10A106KP8NNNC Basic 12.6 M ✓ ✓ 0.0272
4.7 µF 0603 (CL1, CL2) 2 C19666 Samsung CL10A475KO8NNNC 16 V Basic 3.4 M ✓ ✓ 0.0169
100 k 0.1 % 0402 (RRA, RRB) 2 C852472 Yageo RT0402BRD07100KL Ext 1,007,244 ✓ ✓ 0.0256
2.2 M 0402 (RR2) 1 C11490 UNI-ROYAL 0402WGF2204TCE Ext 19,310 ✓ ✓ 0.001
10 k 0402 (RMOT) 1 C25744 UNI-ROYAL 0402WGF1002TCE Basic 18.2 M ✓ ✓ 0.0024
3.3 k 0402 (RSDIO) 1 C25890 UNI-ROYAL 0402WGF3301TCE Basic 1.6 M ✓ ✓ 0.0036
ADS131M08 8 C5124126 (not C5215173) TI ADS131M08IRSNR Ext 1,932 ✓ ✓ 7.73 / 6.62
SN74LVC1G17 2 C10425 (not C7836) TI SN74LVC1G17DCKR Ext 37,426 ✓ ✓ 0.069
LDO UL1 1 C2862740 (or C46459900, #7) TPS7A2033PDBVR Ext 146,382 ✓ ✓ 0.209
DF40 receptacle 4 C6601481 DF40C-10DS-0.4V(58) Ext 940 ✓ ✓ 0.65 / 0.47
Op-amp 62 off-LCSC (Global Sourcing) / C2871876 MCP6V31UT-E/LT / OPA391DCKR Ext 4 / 1,641 ✓ GS ✓ GS ~1.45 / 1.20 (MCP); 0.89 / 0.85 (OPA391)
Optical sensor 4 – (consign) PAT9125EL-TKMT consigned – ✓ ✓ 5.64

EXO-420 controller board (per tile)

Line Qty/tile Recommended LCSC# Part Lib JLC stock 2 tiles 16 tiles $ ea
DF40 header 4 C424635 DF40C-10DP-0.4V(51) Ext 237 ✓ ✓ 0.27 / 0.22
100 nF 0402 8 C1525 Samsung CL05B104KO5NNNC Basic 34.2 M ✓ ✓ 0.0035
15 pF C0G 0402 2 C1548 FH 0402CG150J500NT Basic 1.4 M ✓ ✓ 0.0038
1 µF 0402 2 C52923 Samsung CL05A105KA5NQNC Basic 11.2 M ✓ ✓ 0.0064
4.7 µF 0603 2 C19666 Samsung CL10A475KO8NNNC Basic 3.4 M ✓ ✓ 0.0169
LDO UL2 1 C2862740 TPS7A2033PDBVR Ext 146,382 ✓ ✓ 0.209
MCU 1 C2040 RP2040 Ext 67,603 ✓ ✓ 1.09 / 1.00
Flash 1 C2456211 W25Q16JVSNIQ Ext 35,366 ✓ ✓ 1.18 / 1.03
Crystal 1 C9002 YXC X322512MSB4SI 12 MHz Basic 224,901 ✓ ✓ 0.096
1 k 0402 1 C11702 UNI-ROYAL 0402WGF1001TCE Basic 18.4 M ✓ ✓ 0.0013
10 k 0402 1 C25744 UNI-ROYAL 0402WGF1002TCE Basic 18.2 M ✓ ✓ 0.0024
FPC 12P 1 C5213732 HCTL HC-FPC-05-10-12RLTAG Ext 14,090 ✓ ✓ 0.129

Extended or consigned types: about 15 on EXO-410 (after merging the two 0201 100 nF lines) and 5 on EXO-420. At Standard PCBA's $1.53 per type, that is ≈ $31 per order. The 0201 parts have no basic-library equivalents, so they stay extended.

Existing codes in circuit.py checked: C2928168, C623527, C5215173 (low, wrong reel), C2040, C9002, C7836 (wrong package), C5213732, C44193. All exist.


4. JLCPCB capabilities for this stack

Question Answer Source
Via-in-pad, filled and capped (POFV) Free on 6+ layers. Resin-plugged and copper-capped is the default on 6+ layers with ENIG https://jlcpcb.com/blog/Free-Via-in-Pad-on-6-20-Layer-PCBs-with-POFV, https://jlcpcb.com/help/article/via-in-pad-pofv-guide
POFV minimum Mechanical drill 0.15 mm; pad ≥ drill + 0.15 mm; annular ring 0.05 mm min (0.075 preferred); via diameter 0.15–0.55 mm https://jlcpcb.com/help/article/via-in-pad-pofv-guide, https://jlcpcb.com/capabilities/pcb-capabilities
Our 0.30 mm 0201 pad with a 0.25 / 0.15 via Allowed, exactly at the limit: 0.15 + 0.15 = 0.30, ring 0.05. No margin for drill tolerance. JLC's BGA guide recommends ≥ 0.35 mm pads for filled via-in-pad same, plus https://jlcpcb.com/help/article/bga-design-guidelines---pcb-layout-recommendations-for-bga-packages
Minimum SMD pad 0.25 × 0.25 mm https://jlcpcb.com/capabilities/pcb-capabilities
0.15 mm drill / 0.25 mm via pad Allowed on multilayer (minimum). 0.1 / 0.2 laser vias allowed at ≤ 1.0 mm thickness with ENIG https://jlcpcb.com/capabilities/pcb-capabilities, https://jlcpcb.com/6-layer-pcb
Fee for small vias Yes: 0.1 or 0.15 mm holes add cost; the amount appears only in the live quote. A third-party tier table puts 0.15/0.25 at "cost+3" (highest), 0.2/0.3 at +2, 0.3/0.45 free capabilities page; https://docs.jitx.com/en/4.0/_modules/jitxlib/jlcpcb/vias.html (not JLC)
0.09 mm trace / space, 6 layers Allowed: 0.09 / 0.09 mm (3.5 / 3.5 mil) on multilayer, 3 mil in BGA fan-out. No inner/outer split or fee found https://jlcpcb.com/capabilities/pcb-capabilities
ENIG Free on 6 layers https://jlcpcb.com/events/6-layer-pcb
PCBA tier 0201 forces Standard PCBA (Economic: 0402 minimum, single side). Standard minimum board 70 × 70 mm, so panelize the 44.2 mm boards https://jlcpcb.com/capabilities/pcb-assembly-capabilities
PCBA fees (Standard) Setup $25.56 per side ($51.12 double-sided); stencil $8.21 per side; extended part $1.53 per type; $0.016 + $0.0016 per joint; handling ≥ $14.93; fixtures $8.21 × 2 (1–29 pcs) https://jlcpcb.com/help/article/pcb-assembly-price
Stackup JLC06161H-2116 is the 1.6 mm stackup; our boards are 1.0 mm. The 1.0 mm options (1 oz outer, 0.5 oz inner) are JLC06101H-3313, -3313A, -1080, -1080A, -1080B, -1080C, -7628, -7628A. Those flagged with no surcharge in JLC's template data: -3313 (L1-L2 prepreg 0.0994 mm 3313, cores 0.25), -1080A, -1080B (L1-L2 0.0764 mm 1080), -1080C, -7628A. Impedance control ±10 % is offered; no price found JLC's own https://jlcpcb.com/impedance lists only 1.2/1.6/2.0 mm for 6 layers; the 1.0 mm list comes from a May-2025 capture of JLC's template API, https://github.com/gsuberland/jlcpcb_autogenerated_stackups. Verify in the live quote

Recommendation. Use JLC06101H-3313 (thin 0.099 mm L1-L2 prepreg, good for the L2 ground under 0201s, no surcharge), or -1080B if you want the thinnest outer prepreg. Use 0.15/0.25 vias only where they sit in 0201 pads. Elsewhere use 0.2/0.3 or larger to stay out of the highest via-fee tier. Consider 0201 pads of 0.35 mm where the placement allows, to get margin on POFV.

Not verified on a JLC page: the dollar surcharge for 0.15 mm drills, any fee for traces under 0.1 mm, the impedance control fee, and the exact 6-layer 1.0 mm board price. JLC's 6-layer page says "5 pcs from $2"; a 2024 post gives ≤ 100 × 100 mm 6-layer at $35.


5. Custom gold-plated spring ball-pins (EXO-5075 … EXO-5125)

Geometry (exo/pcb/pin.py, out/pcb/pins/pins.csv): M1.6 × 0.35 thread 1.4 long, 2.5 A/F hex collar 1.0, Ø2.0 barrel, Ø1.3 plunger, 1.5 travel, Ø3.0 ball. Brass, Au over Ni. Six lengths, 7.5–12.5 mm. Order quantities per helmet: 207 / 362 / 308 / 124 / 39 / 6 (1,046).

Maker Custom / threaded MOQ Rough unit price Lead time Source
Promax Pogo Pin (Dongguan) Yes: "Thread Screw Pogo Pin" line, 6–26 mm; thread, head and tip to drawing; 10/40 µ" Au Small batches of 50 mentioned; 3,000 on a catalog part quote samples ~2 wk, production 15–20 days https://promaxpogopin.com/pogo-pin/thread-screw-pogo-pin/, https://promaxpogopin.com/manufacturer/custom-contact-pins/
Richconn (Shenzhen) Yes: threaded pogo pin listed, Swiss-type CNC 100 prototype / 1,000 production quote ~7 days proto, 2–3 wk production https://richconn.com/custom-pogo-pin-manufacturing/
Alibaba threaded-pogo sellers: Shenzhen Sandum (M1.4/M1.6 threaded pin), Dongguan Jiagengshun (threaded round head), Xingchengnuo, Dongguan CFE Yes 100 (Sandum, Jiagengshun, Xingchengnuo); 10,000 (CFE listing) $0.02–0.22 (catalog-like), $1–3 (custom) 7–25 days typical https://alibaba.com/showroom/pogo-pin-with-thread.html
Mill-Max (USA) Custom spring pins after design review; no threaded catalog part 1,000 per custom pin + tooling NRE catalog 0906 ≈ $0.58–0.76; custom not published catalog 3–4 wk https://www.mill-max.com/engineering-notebooks/spring-loaded-pogo-pins-connectors/faqs
Preci-Dip (CH) "Welcomes custom design requests" (spring contacts, e.g. 90166) not published not published – https://www.precidip.com/Htdocs/Files/v/8124.pdf/Hybrid-connectors.pdf?download=1
INGUN (DE), reference only Screw-in receptacle and probe systems, no 3 mm ball on request on request – https://ingun.com/en-US/KS-112-30-M/KS-11230M

Harwin P70 is catalog-only (2.4–8.2 mm, Ø1.5 barrel) and does not fit. Reference prices: OpenBCI dry comb electrodes ≈ $1.50–1.70 each in 30-packs (https://shop.openbci.com/collections/all/eeg).

Recommendation. Send the RFQ to Promax, Richconn and Sandum (closest existing thread: M1.6). Ask whether one barrel plus six plunger or barrel lengths counts as one part for MOQ, since the 4- and 35-per-helmet lengths fail any per-length 1,000 MOQ. Mill-Max only if the Chinese shops fail and the helmet volume justifies 1,000 per length. Budget $0.3–1.0 per pin in production and $1–3 per pin for the 130-pc prototype lot, plus possible setup charges: ≈ $40–400 per helmet. All of this is unverified until quoted.

RFQ text (draft, not sent)

Subject: RFQ – custom threaded ball-head spring contact, 6 lengths

Hello,

We'd like a quote for a custom gold-plated spring contact (dry-electrode EEG headset). STEP files and a drawing are available on request.

Geometry: M1.6×0.35 external thread, 1.4 mm long (screws into an SMT nut); 2.5 mm A/F hex collar, 1.0 mm tall; Ø2.0 mm barrel; Ø1.3 mm plunger, 1.5 mm travel; Ø3.0 mm spherical ball head on the plunger. Lengths (thread shoulder plane to ball centre at mid-travel, +1.5 mm nut): 7.5 / 8.5 / 9.5 / 10.5 / 11.5 / 12.5 mm. Material/plating: brass body and plunger, stainless or music-wire spring; Ni 2–3 µm; hard Au ≥ 0.76 µm on the plunger and ball, Au flash elsewhere. Spring force: 50–150 gf at mid-travel (please propose options).

Quantities (mixed lengths): prototype ≈ 130 pcs; production ≈ 1,046 pcs per set (207/362/308/124/39/6), several sets per year.

Please quote: 1. Unit price per length at 130 / 1,000 / 5,000 pcs 2. MOQ per length, and tooling/NRE/setup charges (can the lengths share one barrel to reduce MOQ?) 3. Sample cost and lead time; production lead time 4. Dimensioned drawing for approval 5. Force-vs-travel curve, contact resistance (mΩ), rated cycles 6. Plating thickness certificate; RoHS/REACH 7. Any existing threaded or ball-head part we could adapt

Thank you, [name, company, address]


6. Estimated cost per tile pair (one EXO-410 + one EXO-420)

Parts only, at JLC library prices for the bought quantity. MCP6V31U through Global Sourcing at ≈ $1.45 (2 tiles) and $1.20 (16 tiles); PAT9125 at $5.64. Pins, PCBs and assembly fees are listed separately.

2 tiles (124 op-amps) 16 tiles (992 op-amps)
ADS131M08IRSNR × 8 $61.84 $52.97
Op-amps × 62, MCP6V31U $89.90 $74.40
PAT9125EL × 4 $22.56 $22.56
SMT nuts × 60 $4.36 $4.36
Everything else (passives, LDOs, buffers, DF40 pairs, RP2040, flash, crystal, FPC) ≈ $7.84 ≈ $6.62
Electronic parts per tile pair ≈ $186.50 ≈ $160.90
Same, with OPA391 instead of MCP6V31U ≈ $151.80 ≈ $139.10
Same, plus ADS131M08IPBSR (TQFP-32 5×5, C2862610, $2.92 @1k, 9,833 in stock; needs a footprint and placement change) – ≈ $110 with OPA391
Spring ball-pins × 60 (unquoted estimate) ≈ $60–180 ≈ $18–60

Order-level PCBA fees (Standard PCBA, estimate from the JLC fee page): two designs, each double-sided: setup 2 × $51.12, stencils 2 × $16.42 → ≈ $135 per order. Extended loading ≈ 20 types × $1.53 ≈ $31. Joints ≈ (1,295 + 176) × $0.0176 ≈ $26 per tile pair. Handling ≥ $15; fixtures ≈ $16. Plus Global Sourcing markup and the consignment fee (≈ $30). 6-layer 1.0 mm ENIG boards: quote needed (from ≈ $35 per 5 pcs ≤ 100 × 100 mm).

Rough order totals, parts plus PCBA fees, before PCBs and pins: - 2 tiles: ≈ $373 + ≈ $280 fees ≈ $650, ≈ $325 per tile pair. - 16 tiles: ≈ $2,575 + ≈ $650 fees ≈ $3,200, ≈ $200 per tile pair.

Add a few percent for JLC attrition.


Proposed circuit.py edits (for whoever owns the board; not applied)

"OPA1":    ..., mpn="MCP6V31UT-E/LT", lcsc="",          # Global Sourcing; LCSC alt: OPA391DCKR C2871876 (same pinout)
"ADS131M08": ..., mpn="ADS131M08IRSNR", lcsc="C5124126",
"FLASH":   ..., mpn="W25Q16JVSNIQ",   lcsc="C2456211",   # 150-mil SOIC-8 matches SOIC-8_3.9x4.9mm
"BUF1G17": ..., mpn="SN74LVC1G17DCKR", lcsc="C10425",   # C7836 is the SOT-23-5 DBV part
"LDO":     ..., mpn="TPS7A2033PDBVR", lcsc="C2862740",   # UL1 only: consider TPS7A2033DQNR C46459900 (1.5 mm stack)
"B2B10R":  ..., mpn="DF40C-10DS-0.4V(58)", lcsc="C6601481",
"B2B10H":  ..., mpn="DF40C-10DP-0.4V(51)", lcsc="C424635",
"PAT9125": ..., mpn="PAT9125EL-TKMT", lcsc="",           # consigned (WPG Americas)
# passives: carry an lcsc per value (see §3); "100k 0.1%" 0201 -> 1 % C106224; "100nF C0G" 0201 -> X7R C22435929

Passing per-instance LCSC numbers for passives means adding an lcsc= argument to Circuit.add, or a value → LCSC table read by check.py when it writes the JLC BOM.