Exocortex Labs

Ordering one helmet

Everything to buy for one exocortex, from whom, and every option on every order form: $11,784.14 all in.

Every figure here is read from out/sourcing/cost.json, which uv run python -m exo.cost writes from the boards as built. Add --refresh to re-fetch every JLC and LCSC price and stock first. Prices are as of 2026-10-28. This page is regenerated by uv run python -m exo.order_doc.

The script reads:

  • out/pcb/poly/placement.json: the contact boards and controllers.
  • The panels from exo.pcb.panel.
  • The hub and camera BOMs.
  • out/sourcing/bom.json: the price catalog, with every URL.
  • out/sourcing/fees.json: JLC's fee schedule, with sources.

What it costs

JLC assembles at least 2 of every panel. The cheapest legitimate order for one helmet therefore buys parts and assembly for two sets of boards, and the second set is your spares.

supplier what per helmet what you pay
JLCPCB: boards, stencils, assembly 16 orders (table below), plus the Global Sourcing inspection $5,295.83
JLCPCB: parts from its library every part with an LCSC number on the boards, hub and cameras $1,595.43 $3,191.53
JLCPCB: Global Sourcing the Mill-Max pins and the DF40C-10DP headers, bought from DigiKey by JLC $1,157.45 $2,363.77
WPG Americas, consigned to JLC PAT9125EL-TKMT optical sensors $360.96 $767.04
LCSC (cart) FPC jumpers, M2 screws and inserts $6.20 $8.10
Probots (India) OV2640 2 MP 160° camera module $56.57 $56.57
Zoro M2 x 8 socket head cap screw $2.87 $2.99
Pololu Nylon spacer 4 mm OD $3.20 $3.33
MaxAmps (USA) Li-po 1S 3.7 V 2000 mAh $51.00 $51.00
carhartt.com Carhartt A18 knit cuffed beanie $19.99 $19.99
prusa3d.com PETG 1.75 mm $23.99 $23.99
total $3,277.65 in parts $11,784.14

If you build two helmets from the same order, the spare set gets used and only the loose items double. Each helmet then costs $5,975.05.

The biggest lines, by what you pay:

item qty (helmet / order) unit total
ADS131M08IRSNR (JLCPCB parts library) 179 / 358 $6.62 $2,371.50
0919-0-15-20-89-14-11-0 (JLC Global Sourcing (DigiKey ED10766-ND)) 1,277 / 2,610 $0.8728 $2,277.93
PAT9125EL-TKMT (WPG Americas (consigned to JLC)) 64 / 136 $5.64 $767.04
TLV333IDCKR (JLCPCB parts library) 1,374 / 2,748 $0.1662 $456.72
DF40C-10DP-0.4V(51) (JLC Global Sourcing (DigiKey H11616CT-ND)) 64 / 128 $0.6706 $85.84
PRO2229 (Probots (India)) 5 / 5 $11.31 $56.57
JLC setup fees (charged once per design) 66 designs $3,373.92

Not included:

  • shipping and import duty/VAT on every order
  • JLC's consignment pre-deposit (duty + VAT + handling) on the PAT9125
  • X-ray (optional)
  • JLC's monthly $8 PCBA coupon
  • the shell print's electricity and the printer

Not exact: each of these lines has a reason in its note in cost.json.

  • PCB price: the bare-board price per panel is computed from JLC's published prices. JLC shows the real price only after the Gerbers are uploaded.
  • Prices from search results: the PAT9125 (WPG Americas), the beanie and the M2 × 8 screws come from search-indexed listings, because those sites refuse automated fetches.
  • Hardware: stocked M2 screws are pan heads, not ISO 7380 button heads. The spacer listing is 2 mm thick, not 1.5 mm.
  • FPC lengths: these use the older routes until the shell report lists its links.
  • Inputs this run used: the FPC data came from out/shell_v1_report.json fpc, and the hardware counts from out/shell_v1_report.json hardware.

The pin

Mill-Max 0919-0-15-20-89-14-11-0 goes on every contact and on the hub's REF and BIAS contacts.

  • Dimensions: 9.63 mm free and 6.63 mm at the 3.0 mm hard stop. Mill-Max recommends 0.76–2.54 mm of working travel.
  • Force: 25 g at the initial height, 85 g at mid-stroke, 127 g at 2.54 mm.
  • Shape: plunger Ø1.07 mm with a hemispherical tip, barrel Ø1.50 mm, base Ø1.83 mm.
  • Pad: Ø2.2 on the boards. Mill-Max asks for at least Ø2.08.
  • Packaging: bulk only, so JLC hand-places the pins at $0.017 each and reflows them.
  • Supply: DigiKey ED10766-ND has 10,710 in stock.

1. JLCPCB

Order the parts JLC doesn't stock (9–20 business days)

  1. Global Sourcing. Go to Parts Manager → Order Parts → Global Sourcing Parts and search each MPN: - 0919-0-15-20-89-14-11-0 × 2,610 (https://www.digikey.com/en/products/result?keywords=0919-0-15-20-89-14-11-0) - DF40C-10DP-0.4V(51) × 128 (https://www.digikey.com/en/products/result?keywords=DF40C-10DP-0.4V(51)) - Pay within the hour. The parts then appear under My Parts.
  2. Consignment. Order 136 PAT9125EL-TKMT from WPG Americas by phone (1-888-974-8881). - Have them shipped on cut tape to the Hong Kong address that JLC's Consign Parts form gives ("Outside Mainland China"). - Enter the tracking number, a unit price of $5.64 and the HS code, then pay the deposit.

The files

order upload BOM CPL
CB-01 (T15 T10 T09 T14 T16) out/pcb/poly/panels/CB-01/CB-01-gerbers.zip out/pcb/poly/panels/CB-01/CB-01-bom-jlc.csv out/pcb/poly/panels/CB-01/CB-01-cpl-jlc.csv
CB-02 (T03 T11 T08 T05 T13) out/pcb/poly/panels/CB-02/CB-02-gerbers.zip out/pcb/poly/panels/CB-02/CB-02-bom-jlc.csv out/pcb/poly/panels/CB-02/CB-02-cpl-jlc.csv
CB-03 (T06 T02 T12 T07 T04) out/pcb/poly/panels/CB-03/CB-03-gerbers.zip out/pcb/poly/panels/CB-03/CB-03-bom-jlc.csv out/pcb/poly/panels/CB-03/CB-03-cpl-jlc.csv
CB-04 (F03 F02 T01 F01 F04) out/pcb/poly/panels/CB-04/CB-04-gerbers.zip out/pcb/poly/panels/CB-04/CB-04-bom-jlc.csv out/pcb/poly/panels/CB-04/CB-04-cpl-jlc.csv
CB-05 (F06 F07 F05 F08 F09) out/pcb/poly/panels/CB-05/CB-05-gerbers.zip out/pcb/poly/panels/CB-05/CB-05-bom-jlc.csv out/pcb/poly/panels/CB-05/CB-05-cpl-jlc.csv
CB-06 (F13 F18 F15 F10 F19) out/pcb/poly/panels/CB-06/CB-06-gerbers.zip out/pcb/poly/panels/CB-06/CB-06-bom-jlc.csv out/pcb/poly/panels/CB-06/CB-06-cpl-jlc.csv
CB-07 (F14 F21 F16 F12 F11) out/pcb/poly/panels/CB-07/CB-07-gerbers.zip out/pcb/poly/panels/CB-07/CB-07-bom-jlc.csv out/pcb/poly/panels/CB-07/CB-07-cpl-jlc.csv
CB-08 (F17 F22 F20 F23 F31) out/pcb/poly/panels/CB-08/CB-08-gerbers.zip out/pcb/poly/panels/CB-08/CB-08-bom-jlc.csv out/pcb/poly/panels/CB-08/CB-08-cpl-jlc.csv
CB-09 (F24 F32 F25 F26 F28) out/pcb/poly/panels/CB-09/CB-09-gerbers.zip out/pcb/poly/panels/CB-09/CB-09-bom-jlc.csv out/pcb/poly/panels/CB-09/CB-09-cpl-jlc.csv
CB-10 (F29 F30 F27) out/pcb/poly/panels/CB-10/CB-10-gerbers.zip out/pcb/poly/panels/CB-10/CB-10-bom-jlc.csv out/pcb/poly/panels/CB-10/CB-10-cpl-jlc.csv
CTL-01 (T15K T10K T09K T14K T16K) out/pcb/poly/panels/CTL-01/CTL-01-gerbers.zip out/pcb/poly/panels/CTL-01/CTL-01-bom-jlc.csv out/pcb/poly/panels/CTL-01/CTL-01-cpl-jlc.csv
CTL-02 (T03K T11K T08K T05K T13K) out/pcb/poly/panels/CTL-02/CTL-02-gerbers.zip out/pcb/poly/panels/CTL-02/CTL-02-bom-jlc.csv out/pcb/poly/panels/CTL-02/CTL-02-cpl-jlc.csv
CTL-03 (T06K T02K T12K T07K T04K) out/pcb/poly/panels/CTL-03/CTL-03-gerbers.zip out/pcb/poly/panels/CTL-03/CTL-03-bom-jlc.csv out/pcb/poly/panels/CTL-03/CTL-03-cpl-jlc.csv
CTL-04 (T01K) out/pcb/poly/panels/CTL-04/CTL-04-gerbers.zip out/pcb/poly/panels/CTL-04/CTL-04-bom-jlc.csv out/pcb/poly/panels/CTL-04/CTL-04-cpl-jlc.csv
HUB out/pcb/hub/EXO-430-gerbers.zip out/pcb/hub/hub-bom-jlc.csv out/pcb/hub/hub-cpl-jlc.csv
CAM out/pcb/camera/EXO-450-gerbers.zip out/pcb/camera/EXO-450-bom-jlc.csv out/pcb/camera/EXO-450-cpl-jlc.csv

If out/pcb/poly/panels/ doesn't exist yet, build it first: PCB_OUT=out/pcb/poly uv run python -m exo.pcb.panel. Each panel already has its rails, fiducials, tooling holes, mouse-bite tabs and per-board designators (T01_U1).

The order form (once per row of the table)

PCB options:

option CB-xx (contact panels) CTL-xx (controller panels) HUB CAM
Layers 6 6 4 6
Dimensions the panel size (table below) the panel size 80 × 56 16.45 × 18.7
PCB qty 5 5 5 5 (panels)
Different design the panel's design count the panel's design count 1 1
Delivery format Panel by Customer Panel by Customer Panel by JLCPCB, 1 × 1, edge rails top and bottom, at least 7 mm each (so the panel reaches the 70 mm minimum) Panel by JLCPCB, 3 × 1, edge rails on
Thickness 1.0 mm 1.0 mm 1.6 mm 1.0 mm
Surface finish ENIG ENIG ENIG ENIG
Outer / inner copper 1 oz / 0.5 oz 1 oz / 0.5 oz 1 oz / 0.5 oz 1 oz / 0.5 oz
Via covering Epoxy filled & capped (POFV, free on 6-layer) Epoxy filled & capped Tented Epoxy filled & capped (the board has vias in pads, inpad_vias.json)
Impedance control No No Yes: JLC's 1.6 mm 4-layer stack-up (USB 2.0 HS pair, 90 Ω differential) No
Mark on PCB Remove mark Remove mark Remove mark Remove mark
Electrical test flying probe flying probe flying probe flying probe

PCB Assembly options:

option CB-xx CTL-xx HUB CAM
PCBA type Standard (0201 parts) Standard Standard Standard (double-sided)
Assembly side Both sides Both sides (DF40 headers on top, everything else on the bottom) Both sides Both sides
PCBA qty 2 2 2 2 (panels: 6 boards)
Tooling holes Added by customer Added by customer Added by JLCPCB Added by JLCPCB
Confirm Parts Placement Yes ($0.45) Yes Yes Yes
Others unticked unticked unticked unticked

Then, for each order:

  1. Upload the BOM and CPL.
  2. On the parts page, check every line against cost.json: same LCSC number, stock green.
  3. Tick the My Parts entries for the Mill-Max pin, the DF40C-10DP and the consigned PAT9125.
  4. In the placement preview, check these: - pin 1 of every QFN (ADS131M08, RP2040, 74AHC138); - the SC70 op-amps and buffers; - DF40 polarity and the FPC connectors; - that every Mill-Max pin sits on the scalp face.
  5. Compare the quote with the row for that order below.

Per-order fees ($), from cost.json → panels:

order designs panel mm PCB ×5 (est.) setup stencil loading joints joint $ hand-placed pins $ other total
CB-01 5 105.67 × 173.82 64.47 255.60 20.62 30.60 11,430 18.29 9.21 17.38 416.17
CB-02 5 107.31 × 162.46 61.19 255.60 20.62 30.60 9,530 15.25 7.48 17.38 408.12
CB-03 5 101.95 × 147.31 52.71 255.60 20.62 30.60 8,556 13.69 6.53 17.38 397.13
CB-04 5 92.83 × 153.45 50.00 255.60 20.62 33.66 7,566 12.11 5.95 17.38 395.31
CB-05 5 86.95 × 145.12 44.29 255.60 20.62 24.48 5,868 9.39 4.66 17.38 376.41
CB-06 5 73.33 × 135.07 34.68 255.60 20.62 24.48 4,214 6.74 2.92 17.38 362.42
CB-07 5 81.51 × 137.9 39.45 255.60 20.62 24.48 3,548 5.68 2.48 17.38 365.69
CB-08 5 70.0 × 149.7 36.78 255.60 20.62 24.48 3,262 5.22 2.11 17.38 362.18
CB-09 5 106.16 × 89.36 32.83 255.60 20.62 22.95 2,064 3.30 1.33 17.38 354.00
CB-10 3 82.44 × 74.02 17.90 153.36 16.42 22.95 1,150 1.84 0.68 17.37 230.52
CTL-01 5 105.67 × 173.82 64.47 255.60 20.62 22.95 2,008 3.21 0.00 17.38 384.23
CTL-02 5 107.31 × 162.46 61.19 255.60 20.62 24.48 2,200 3.52 0.00 17.38 382.79
CTL-03 5 101.95 × 147.31 52.71 255.60 20.62 24.48 2,356 3.77 0.00 17.38 374.56
CTL-04 1 70.0 × 70.0 12.59 51.12 16.42 22.95 500 0.80 0.00 17.37 121.25
HUB 1 80.0 × 70.0 5.12 51.12 16.42 99.45 3,468 5.55 0.07 17.37 195.10
CAM 3 70.0 × 70.0 12.59 51.12 16.42 30.60 1,152 1.84 0.00 17.37 129.95
Global Sourcing inspection 40.00
total 642.97 3373.92 313.12 494.19 110.20 43.42 278.04 5295.83

How the fees are built:

  • Setup: $51.12 per order on double-sided Standard PCBA, plus the same again for each extra design in a panel. A panel of n designs therefore costs n setups, so panels save stencils, fabrication and the per-order fees, not setup.
  • Stencil: $16.42, plus $4.20 for a self-panelled stencil with 5 or more designs.
  • Loading: $1.53 for each unique part.
  • Joints: $0.0016 per joint.
  • Hand-placed pins: $0.017 per pin.
  • Other: confirm placement $0.45, packing $0.50 + $0.00003/cm², and fixtures $16.42.
  • PCB: 6-layer panels are priced at $2 up to 25 cm², rising linearly to $35.10 at 100 cm², then in proportion to area above that. The 4-layer hub uses $2 rising to $9.55. All of these are for 5 pieces.
  • Global Sourcing: $20 inspection per part type.

Sources: assembly price, extra charges, panelization, ordering, PCBA capabilities, minimum qty, Global Sourcing, consignment, 6-layer.

2. LCSC (cart)

Go to lcsc.com → BOM Tool, upload a CSV with the columns LCSC Part #, Quantity from the table below, check that every row matched, then check out.

LCSC item links qty total
C2857702 JS05B-12P-200-4-8: 12 Position FFC, FPC Cable 0.5mm 20cm F22.J300-T04K.J301, T10K.J100-HUB.P07, CAM3.J2-HUB.C3, CAM4.J2-HUB.C4 5 $0.59
C2857703 JS05B-12P-250-4-8: 12 Position FFC, FPC Cable 0.5mm 25cm T14K.J100-HUB.P09, T09K.J100-HUB.P04, T15K.J100-HUB.P14 5 $0.68
C2857704 JS05B-12P-300-4-8: 12 Position FFC, FPC Cable 0.5mm 30cm T05K.J100-HUB.P03, CAM2.J2-HUB.C2, T03K.J100-HUB.P06 5 $0.46
C3002771 JS05B-12P-130-3-5: 12 Position FFC, FPC Cable 0.5mm 13cm F09.J300-T12K.J303 5 $0.46
C5151980 JS05B-12P-100-3-4: 12 Position FFC, FPC Cable 0.5mm 10cm F23.J300-T16K.J301, F24.J300-T10K.J301, F19.J300-T12K.J301, F12.J300-T11K.J302, F13.J300-T01K.J302, F25.J300-T 14 $1.39
C5151984 JS05B-16P-100-3-4: 16 Position FFC, FPC Cable 0.5mm 10cm F03.J300-T04K.J304, F04.J300-T04K.J303, F02.J300-T03K.J302, F01.J300-T07K.J303 5 $0.48
C5371249 JS05B-12P-080-4-8: 12 Position FFC, FPC Cable 0.5mm 8cm F29.J300-T02K.J301, F26.J300-T06K.J301, F08.J300-T01K.J304, F32.J300-T05K.J301, F14.J300-T07K.J301, F07.J300-T 9 $0.84
C5371250 JS05B-12P-120-4-8: 12 Position FFC, FPC Cable 0.5mm 12cm F18.J300-T01K.J301, F28.J300-T14K.J302, F05.J300-T04K.J302, F30.J300-T01K.J303, T11K.J100-HUB.P05 5 $0.49
C55509681 0.512P400B4/4*8/8: 0.3mm 12P 0.5mm Same Side 40cm P=0.5m the only 400 mm 12-way 0.5 mm FFC at LCSC; its model number says type B but LCSC's description says 'Same Side 10 $1.61
C357534 Pan Head Phillips Machine Screws PM2X6 Nickel Plated pan head Phillips, nickel-plated steel: the closest stocked M2 x 6; not an A2 ISO 7380 button head; for: 92 x 100 $0.19
C51939026 Double Knurled Heat-Set Threaded Insert M233.5 Brass for: 4 x M2 x 3 heat-set insert + M2 x 5 button head (battery cover) 50 $0.50
C5222494 Torx Pan Head Machine Screw PM2×5 Black Oxide Torx pan head, black oxide: the closest stocked M2 x 5; for: 4 x M2 x 3 heat-set insert + M2 x 5 button head ( 100 $0.41

About the FPC jumpers:

  • Every link is Type B (contacts on opposite sides at the two ends), because both ends use the same bottom-contact connector wired pin to pin (see the shell report's FPC type note).
  • F01–F04 and their controllers use 16-way cables. The rest are 12-way.
  • The 400 mm 12-way cable (C55509681) is labelled type B in its model number but "Same Side" in LCSC's description. Check the photo before you order it.

3. Other suppliers

item where qty total
OV2640 2 MP 160° camera module, 24-pin 0.5 mm FPC, 21 mm tail (ESP32-CAM pinout) Probots (India) PRO2229 5 $56.57
M2 x 8 socket head cap screw, stainless, 50-pack Zoro M510500200008 50 $2.99
Nylon spacer 4 mm OD, 2.7 mm ID, 2 mm long, 50-pack Pololu Pololu 1970 50 $3.33
Li-po 1S 3.7 V 2000 mAh, 54 A continuous, 70 x 45 x 9 mm; order with a JST-PH lead MaxAmps (USA) Lipo-2000-1S-Pack-10 1 $51.00
Carhartt A18 knit cuffed beanie, 100 % acrylic rib knit carhartt.com A18 1 $19.99
PETG 1.75 mm, 1 kg spool (the shell uses 428 g) prusa3d.com Prusament PETG Jet Black 1 kg 1 $23.99

Things to know before you buy:

  • Battery: Li-po 1S 3.7 V 2000 mAh, 54 A continuous, 70 x 45 x 9 mm; order with a JST-PH lead (MaxAmps (USA), Lipo-2000-1S-Pack-10). Price $51.00 from the listing as recorded 2026-10-28 (a live re-fetch was rate-limited). 54 A continuous against the hub's 3.33 A average / 3.79 A peak with all five cameras streaming; the shell's pocket is sized for it (72 x 47 x 10 mm inside). Choose the JST-PH 2.0 lead; the hub's 3-pin S3B-PH (BAT+, NTC, BAT-) takes it with a 10k resistor (or NTC) on the TS pin.
  • Camera module: the price is converted from INR at the rate stored in bom.json → fx.
  • Spacers: no stocked spacer is 1.5 mm thick with a 2.2 mm bore. Print the spacers in PETG, or change the DF40 stack height.

4. The shell print

  1. Print out/stl/EXO-140.stl … EXO-144.stl in PETG on an Ender-3 V3 SE: 0.4 mm nozzle, 0.2 mm layers, 6 walls, 5 top and bottom layers, 20 % infill, 240 °C nozzle, 80 °C bed, 60 mm/s, 40 % fan, a brim.
  2. The parts are already in print orientation. See docs/shell.md for the times and grams.
  3. Heat-set the 4 battery-cover inserts.