Skip to content
RPRichard PruittTech & Cyber
Navigation
repo://poppyup/docs/04-component-selection.md

docs/04-component-selection.md

40 KB · 372 lines · markdown · View source · Download from the repository page

PoppyUp — Component Selection

Phase 1 deliverable #4. Source of truth for the final picks is 00-architecture-decisions.md (ADR, Baseline v0.3 — owner review decisions D1–D13 applied, change record ADR §15; the built-in 5G modem was removed in v0.2, ADR §14 and §(j) below). This document records the alternatives that were considered for each subsystem, the comparison data, and the reasoning. Pricing is budgetary at 1 k units, distributor/direct quotes, USD, mid-2026. Anything marked (verify) is a datasheet value I am quoting from memory and that must be confirmed against the current vendor document before schematic release.

Related: 02-system-architecture.md (topology), 03-datapath-bottlenecks.md (why the speed numbers matter), 05-power-budget.md (rails), 10-bom.md (costed roll-up), 11-certification.md (module certification leverage).


Selection principles

  1. Proven and obtainable over exotic. Every high-risk part (switch, USB4 bridge) must already ship inside a consumer or industrial product we can buy and tear down.
  2. Mainline Linux driver, or a vendor driver with a credible upstream path. The firmware phase must not inherit an out-of-tree kernel for a bridge chip.
  3. Second source or footprint-compatible alternate for anything with a single fab or NDA-gated documentation.
  4. Industrial temperature grade where the part sits near a heat source (SoM, switch, Ethernet PHY).
  5. Modular where the market moves (Wi-Fi, NVMe on M.2; card reader on a daughterboard), fixed where it does not (SoC, power).

(a) SoC

Criterion Rockchip RK3588 NXP i.MX 95 Qualcomm QCS6490 Raspberry Pi CM5 (BCM2712) Intel N100 (Alder Lake-N)
CPU 4× A76 @ 2.4 GHz + 4× A55, 8 nm 6× A55 @ 2.0 GHz + M7 + M33 4× A78 (Kryo 670 Gold) + 4× A55 4× A76 @ 2.4 GHz 4× Gracemont E-cores @ 3.4 GHz
PCIe 4× Gen3 lanes (×4 / ×2+×2 bifurcation) + 3× Gen2 ×1 combo lanes = 7 lanes 2× Gen3 ×1 controllers (verify) 1× Gen3 ×2 + 1× Gen3 ×1 (verify) 1× Gen2 ×1 (Gen3 unofficial), shared with RP1 I/O 9× Gen3 lanes, up to ×4 ports (verify)
USB device (gadget) 2× USB 3.0 (5 Gbps) dual-role, dwc3, mature 1× USB 3.0 dual-role 1× USB 3.1 Gen1 dual-role (verify) 1× USB 2.0 dual-role only (USB 3 is via RP1, host-only) None practical (xDCI not exposed on N-series)
Native Ethernet 2× 1 GbE RGMII 2× 2.5 GbE (one TSN) 1 GbE (via PHY) 1 GbE (RP1) none native; I226-V on PCIe
Crypto ARMv8 CE (AES/SHA) on all 8 cores + Rockchip crypto v2 engine ARMv8 CE + EdgeLock secure enclave ARMv8 CE ARMv8 CE AES-NI, SHA-NI
Realistic TLS/upload CPU headroom AES-128-GCM ≈ 1.5–2 GB/s per A76; SHA-256 ≈ 1 GB/s per A76; one A76 saturates 5GbE TLS with margin A55 ≈ 0.6–0.8 GB/s AES-GCM per core; 5GbE TLS needs 2–3 cores; SFTP single-stream bound ≈ 250 MB/s similar to RK3588, slightly better perf/W equal to RK3588 per core, but no I/O to feed it best single-thread; ≈ 3 GB/s AES per core
Mainline Linux Good since 6.6–6.9: PCIe, USB3, GMAC, crypto, thermal, PM. Gaps: some display/VPU (irrelevant), PCIe ASPM quirks Excellent (NXP upstream-first) Good and improving (Qualcomm upstream push, RB3 Gen2), some blobs Excellent Excellent
Power (SoM-level, idle / heavy I/O) 1.8 W / 5.5 W 1.2 W / 3.5 W 1.0 W / 4 W 1.5 W / 5 W 3.5 W / 12 W
Availability / longevity High volume; Rockchip states 10-year for industrial RK3588J (verify); many SoM vendors NXP 15-year longevity program; production ramp 2025 Qualcomm 10+ yr program, via CSPs (Thundercomm, Lantronix) Available; Raspberry Pi longevity to 2036 Intel IoT longevity ≈ 10 yr; many COM Express/SMARC vendors
SoM cost @1k (8 GB / 64 GB) $85–110 $140–190 $150–220 $75 (8 GB) $110–160
Documentation access Datasheet public; TRM public (partial); Rockchip SDK via SoM vendor Full public docs Under NDA/CSP Public but thin (BCM2712 has no public TRM) Full public docs
Kill criterion for us — Only 2 Gen3 lanes: CFe B capped at ~900 MB/s Lane budget and docs gating One PCIe lane for everything No USB device mode; 2–3× power

Pick: Rockchip RK3588 (RK3588J industrial bin). The carrier form — which SoM, or board-down — is undecided (D12) and is settled at PoC exit; see (b).

Why: It is the only candidate in the price class with both a Gen3 ×4 root that bifurcates (dedicated ×2 for CFexpress B plus ×2 for the switch) and two dual-role USB 3 controllers with a mature dwc3 gadget stack. The A76 cores have hardware AES/SHA so TLS, per-part MD5/SHA-256 and xxHash for a 5GbE upload fit on one or two cores. The SoM ecosystem is the broadest of any ARM SoC outside of Raspberry Pi, and the community's PCIe experience (NVMe, modems, Wi-Fi 7 cards on ROCK 5B/Orange Pi 5 Plus) de-risks exactly the peripherals we are attaching.

Risks: Rockchip mainline still lags vendor kernel for power management (suspend-to-RAM on some SoMs is fragile); dwc3 UAS gadget (f_tcm) is less battle-tested than f_mass_storage (mitigation: ship BOT mass storage first, UAS behind a flag); the 8 nm SoC needs a good heat path (see 06-thermal.md); Rockchip documentation quality is mixed, and errata arrive through SoM vendors rather than a formal errata sheet.

(b) System-on-Module

Criterion Firefly Core-3588J Forlinx FET3588-C Board-down RK3588J (ODM reference design) Turing Machines RK1 (dev kit)
SoC bin RK3588J (−40…85 °C) RK3588 / RK3588J option RK3588J, sourced by the ODM RK3588 (commercial)
PCIe exposed 4× Gen3 + 3× Gen2 combo (verify pin-out) 4× Gen3 + Gen2 combo (verify) All 7 lanes directly at the BGA; bifurcation is ours to set 1× Gen3 ×4 + 2× Gen2 ×1 (Jetson-compatible SODIMM-260)
USB3 OTG exposed both both both 1 OTG + 1 host (verify)
Connector 3× 100-pin board-to-board (verify) 4× 80-pin B2B none — removes the connector stack from the 6.5 mm rear-face Z-budget SODIMM-260 (Jetson pin-compatible)
Memory / storage options 4–32 GB LPDDR4x, 32–256 GB eMMC 4–16 GB, 32–128 GB 8 GB LPDDR4x + 64 GB eMMC + RK806 PMIC placed on our main board (ODM sources) 8–32 GB, 32–256 GB
Longevity statement 10 yr (industrial line) 10 yr Rockchip RK3588J 10 yr (verify); no SoM-vendor dependency, but DDR/eMMC/PMIC longevity becomes ours none formal
Price @1k (8/64) ~$95 ~$100 SoC + DDR + eMMC + PMIC ≈ $60–70 (verify) plus a 12-layer main board and ~$120 k NRE; nets $25–35/unit lower at volume ~$110 (retail-ish pricing)
Dev board / carrier reference ITX-3588J, AIO-3588J OK3588-C The ODM's own RK3588 reference design — path only viable if it exists and has shipped Turing Pi 2

Pick: UNDECIDED — PoC bake-off (D12), decided at PoC exit (month 2). Three paths are evaluated side by side at PoC (13-roadmap.md §1):

  1. Firefly Core-3588J SoM (8 GB / 64 GB) — the v0.2 default; carried in 10-bom.md for costing until the decision.
  2. Forlinx FET3588-C SoM — pin-incompatible with Firefly; carrier respin ~3 weeks.
  3. Board-down RK3588J on the main board, using the ODM's RK3588 reference design.

PoC comparison criteria (ADR §3.1): pcie3x4 ×2+×2 bifurcation and exposure of all 7 lanes; both USB3 OTG ports with dwc3 gadget (UAS/BOT to iOS/macOS); thermal interface (SoC top height, boss geometry, measured ΔT at 8 W); longevity and EOL terms in writing (≥ 5 years); price at 1 k / 10 k; second-source / pin-compatibility story; the ODM's ability to support the path. Dev-kit: Turing RK1 in a Turing Pi 2 or Jetson-style carrier for PoC bring-up only.

Board-down RK3588J (path 3). Pros: no board-to-board connector stack (frees ~1.5–2 mm of the rear-face Z-budget and the SoM retention screws), the single-vendor SoM continuity risk disappears, lowest unit cost at volume ($25–35/unit below the SoM, 10-bom.md cost-down levers), and the heat path is a direct SoC-lid-to-boss pad rather than SoM spreader + pad. Cons: LPDDR4x and PMIC layout and power-sequencing move onto our 10→12-layer main board (a major EVT layout delta, 09-pcb-architecture.md §1), DDR/eMMC/PMIC sourcing and the RK boot firmware (SPL/TF-A/U-Boot, DDR training blobs) land on the ODM, and PoC cannot be done on the real board — the path is evaluated on the ODM's reference board. Only viable if the ODM has a proven, shipped RK3588 reference design; otherwise it is dropped at PoC exit.

Why Firefly was the v0.2 default: Industrial bin, formal longevity, all seven PCIe lanes and both OTG ports on the connectors, and Firefly's carrier reference designs already show ×2+×2 bifurcation and M.2 module integration. Risk: the SODIMM-style modules (RK1) do not expose the second Gen3 ×2 controller, so PoC data on RK1 has to be replicated on the actual candidate carriers before EVT.

(c) PCIe packet switch

Criterion ASMedia ASM2812 ASMedia ASM2824 Broadcom PEX8724 Diodes PI7C9X3G808GP
Lanes / ports 4 up + up to 12 down (Gen3) 8 up + up to 24 down (Gen3) 24 lanes, 6 ports, Gen3 8 lanes, up to 8 ports, Gen3
Fits our need (2 up + 9 down)? Yes Yes (oversized) Yes No (8 lanes total → 2 up + 6 down)
Typical power ~1.8 W active, ~0.5 W ASPM (verify) ~3 W ~4–5 W ~1.2 W
Package 14×14 mm class BGA (verify) 19×19 BGA 19×19 BGA 10×10 QFN/BGA
Docs Datasheet under NDA via distributor; reference designs common NDA Public (Broadcom docs portal, registration) Public
Hot-plug on downstream ports Yes (used in NVMe enclosures) Yes Yes Yes
In shipping products we can tear down Quad-M.2 carrier cards, 2-bay TB enclosures Quad/8× M.2 carriers Server risers Industrial boxes
Cost @1k ~$12 ~$22 ~$35 ~$14

Pick: ASM2812, wired ×2 upstream — ASMedia is primary (D12): the owner has a team with ASMedia parts and documentation access, which removes the distributor/NDA gate that made the switch a top risk in v0.2. Fallback: PEX8724 retained as insurance, re-confirmed at EVT schematic freeze (it costs +2.5 W and +$23 and needs a bigger heat path — a fallback, not a peer).

Why: Lowest power in the class that has enough lanes, transparent (no firmware needed for basic switching, EEPROM optional), proven with Linux hot-plug in the same job (NVMe enclosures behind USB4 bridges). Risk: documentation remains NDA-gated; the ASMedia-access team and the ODM engaged in v0.3 (D12, ODM design-review package before EVT) cover it, and R2 in 12-risks-open-questions.md is re-scored accordingly.

(d) PCIe 2:1 mux (CFexpress B slot ↔ SoC / USB4 bridge)

Criterion Diodes PI3DBS16412 TI TMUXHS4412 (verify) ASMedia ASM1480
Rate 16 GT/s (PCIe 4.0), 2 lanes (4 diff pairs) 2:1 16 Gbps class, 4 channels 2:1 (verify) 8 GT/s (PCIe 3.0)
Insertion loss ~1 dB @ 8 GHz (verify) ~1 dB ~1 dB @ 4 GHz
Package 42-pin TQFN 3.5×9 mm class 42 WQFN 40 QFN
Power <50 mW <50 mW <50 mW
Cost @1k ~$2.80 ~$3.20 ~$1.50

Pick: PI3DBS16412 (plus a PI3PCIE2212-class 1-lane part or a clock-mux for the 100 MHz REFCLK). Why: Gen4-rated so the ASM2464PD-to-card link on the Pro SKU runs Gen4 ×2 (~3.5 GB/s) unencumbered; ASM1480 would cap the host path at Gen3. Risk: a passive mux eats ~1 dB of the Gen4 channel budget — keep slot-to-mux-to-bridge routing under ~60 mm on low-loss laminate (see 09-pcb-architecture.md).

(e) USB4 / host bridge for the CFexpress "FAST" path

Criterion ASMedia ASM2464PD Intel JHL8440 (Goshen Ridge) SoC dwc3 gadget only
Upstream USB4 40 Gbps / TB3 compatible USB4 40 Gbps hub/dock USB 3.0 5 Gbps
Downstream PCIe Gen4 ×4 PCIe Gen3 ×4 + USB3 hub ports + DP —
Behaviour with USB 3.2 host (iPhone Pro, older Macs) Falls back to USB 3.2 Gen2 UAS NVMe bridge — the NVMe card appears as a plain UAS disk (works with iPhone Files app) Falls back to a USB 3.2 hub; PCIe tunnel unavailable → card invisible unless another device is behind the hub Works everywhere at ≤ 400 MB/s
Realistic throughput to Mac/PC ~3.0–3.2 GB/s ~2.8 GB/s (Gen3 ×4) ~380–420 MB/s
Firmware / tooling ASMedia firmware via distributor; enclosure vendors ship it daily Intel TB developer program, NVM tooling gated none
Certification USB-IF USB4 optional; no Thunderbolt trademark claimed Same, plus Intel TB program if branded none
Cost @1k ~$14 + PD companion ~$2 ~$22 $0
Power ~2 W active, off when Port C idle ~2.5 W —

Pick: ASM2464PD on a dedicated Port C (Pro SKU only, depopulated on Base, decoupled from the Base launch — D7). Universal SoC gadget on Port A on all SKUs. Both host paths are read-only by default (D8).

Why: It is literally the silicon inside the current crop of USB4 CFexpress 4.0 readers and NVMe enclosures, so its behaviour with macOS/Windows/iPadOS is already characterised. Its USB 3.2 fallback presents the NVMe card as a UAS disk, which is exactly what an iPhone 15/16/17 Pro needs to hit ~900 MB/s in Files. Goshen Ridge would let us put the gadget behind the same connector, but the PCIe tunnel disappears on USB 3 hosts, the tooling is gated, and the dock-class power/cost is not justified for one slot. A single-connector design that muxes USB4 lanes between two upstream controllers was rejected: it needs a 20 GBd-class mux and coordination between two PD stacks — a schedule risk for a marginal UX gain.

Risks: ASM2464PD firmware quality varies by revision (sleep/wake, some hosts fail to re-enumerate after suspend); we must lock a firmware version and regress it across host OS updates. Two data connectors need clear labelling.

Read-only enforcement (D8). Source media must never be modified without explicit consent, and macOS writes .Spotlight-V100, .fseventsd, .Trashes and ._* files to any writable volume. Port A is simple: the SoC gadget sets the SCSI write-protect bit on every UAS/BOT LUN. Port C has no gadget in the path, so enforcement is layered (ADR §4.2, 02-system-architecture.md):

  1. NVMe Namespace Write Protection (NVMe 1.4 Set Features, Feature 0x84, state 1 "Write Protect"): the SoC, which owns the card until the mux flips, sets it before the flip; the host then sees a read-only namespace in both native USB4 and UAS-fallback modes. It works only on cards whose controller reports NWPC support (Identify Controller byte 531) — expected to be a minority of camera cards; the card library in 13-roadmap.md records NWPC per card at PoC. State 2 ("until power cycle") is unusable because the mode switch power-cycles the slot.
  2. ASM2464PD bridge write-protect, UAS/BOT fallback mode only (iPhone and USB 3.2 hosts): the bridge's SCSI Mode Sense WP bit or a firmware read-only configuration, if ASMedia's firmware tool exposes it — verify with the owner's ASMedia-access team at PoC. Has no effect in native USB4/PCIe-tunnelled mode, where the host talks to the card's NVMe controller directly and no bridge logic is in the data path.
  3. Fallback (native USB4 host + card without NWPC): read-only cannot be enforced, so the device does not switch automatically; the OLED and app ask "Mac wants write access to CFe B — allow?" and the user consents per session; the session is logged and the job engine re-verifies the card (identity + directory/mtime scan) on return. Tracked as a risk in 12-risks-open-questions.md.

(f) Card controllers

SD (full-size, UHS-II)

Criterion Genesys GL9755 Realtek RTS5260 Realtek RTS5306E
Host interface PCIe Gen3 ×1 (verify) PCIe Gen2 ×1 USB 3.2 Gen1
SD support UHS-II FD156/HD312, UHS-I UHS-II, UHS-I UHS-II
Linux sdhci-pci-gli mainline (since 5.5) rtsx_pci mainline rtsx_usb mainline
Why not — Aging part, availability thinning Not PCIe → not on the switch fabric; would need SoC USB host port
Cost @1k ~$3.80 ~$3.50 ~$2.50

Pick: GL9755. UHS-II is what V90 cards use; measured ~280–300 MB/s. Upgrade path: Genesys GL9767 (SD Express PCIe pass-through + UHS-I) is roughly footprint-class compatible (verify) if SD Express ever gets camera traction. UHS-III has no cards; SD Express cards fall back to UHS-I in our slot.

microSD

Criterion Genesys GL9750 Realtek RTS5227S RK3588 native SDMMC
Host interface PCIe Gen2/3 ×1 PCIe Gen2 ×1 SoC SDIO controller
Speed UHS-I SDR104 (~95 MB/s) UHS-I UHS-I SDR104
Linux sdhci-pci-gli rtsx_pci dw_mmc-rockchip
Fabric On ASM2812 → same enumeration path as every other slot On ASM2812 Not on PCIe; still exportable via gadget LUN, but a different code path and the SoM's SDMMC pins are often used for the SoM's own boot media
Cost @1k ~$2.20 ~$1.80 $0 + connector

Pick: GL9750. Consistency of the block-device path and freedom from SoM pin-mux constraints beat saving $2. Tradeoff acknowledged: the SoC-native option would work in gadget mode too, but not via a future host-side switch path, and it drags the reader board into the SoM's boot pin-mux.

CFast 2.0 (SATA III)

Criterion ASMedia ASM1064 ASMedia ASM1166 RK3588 combo-PHY SATA
Host PCIe Gen3 ×1 → 4× SATA 6 Gb/s PCIe Gen3 ×2 → 6× SATA Native SATA on combo PHY
Linux AHCI, mainline AHCI, mainline AHCI, mainline
Fits 1 lane, tiny wasteful Consumes one of the three Gen2 combo lanes (Wi-Fi + two spares since v0.2 freed the modem lane — so now viable, but SATA would then cross the mezzanine as a second signal class; ASM1064 keeps CFast on the same Gen3 ×1 scheme as the other reader-board controllers)
Cost @1k ~$3.50 ~$6 $0

Pick: ASM1064 on the switch. CFast cards read ~500–550 MB/s; a Gen3 ×1 lane behind the switch supports that (the ADR's ≥380 MB/s floor assumes Gen2 fall-back if the lane is ever moved to a combo PHY).

XQD

Not supported (D10). XQD is physically compatible with the CFe B connector but uses a proprietary non-NVMe PCIe protocol with no Linux driver; no licensing and no USB-reader workaround are pursued. The only related behaviour is firmware detecting a non-NVMe PCIe device in the CFe B slot and showing "XQD not supported".

(g) USB 3.2 host controller (Port B "SSD / TETHER")

Criterion ASMedia ASM3142 ASMedia ASM3242 RK3588 OTG0
Upstream PCIe Gen3 ×2 PCIe Gen3 ×4 —
Ports 2× USB 3.2 Gen2 (10 Gbps) 1× Gen2×2 (20 Gbps) 1× 5 Gbps
Realistic SSD ingest ~900 MB/s ~1.7 GB/s but almost no SSDs/hosts use Gen2×2 ~400 MB/s
Linux xHCI mainline xHCI mainline dwc3
Cost @1k ~$4.50 ~$7 $0

Pick: ASM3142 (one of two ports used; second to a test header). Samsung T7/T9 and Blackmagic-class SSDs are Gen2 devices; halving ingest speed to save $4.50 is a poor trade for a "future-proof" product.

Since ADR v0.2 Port B is also the tethered-uplink port (ADR §4.3): a USB-tethered iPhone (ipheth), Android phone (cdc_ncm / rndis_host) or USB LTE/5G adapter (cdc_mbim / qmi_wwan) enumerates on the same xHCI. That needs no extra silicon — only a dedicated 5 V/3 A Port B buck (TPS62933 class) behind the Port B eFuse, with the 0.5 / 1.5 / 3 A limit set by the EC, so the phone is charged while tethered without coupling its charge-current steps into the SoM's 5 V rail (05-power-budget.md §3.3). The RK3588 OTG0 alternative would serve tethering equally well (phones tether at USB 2.0-class rates), but not SSD ingest.

(h) Ethernet

Criterion Realtek RTL8126 Realtek RTL8125BG Intel I226-V Marvell AQC113C
Rate 5G/2.5G/1G/100M 2.5G/1G/100M 2.5G/1G/100M 10G/5G/2.5G/1G
PCIe Gen3 ×1 Gen2 ×1 Gen3 ×1 Gen4 ×1 / Gen3 ×2
Power at top link ~1.9 W ~1.2 W ~1.3 W ~4–5 W (10GBASE-T PHY)
Driver r8169 mainline (6.9+) r8169 igc atlantic
Cable reality 5G over Cat5e/6 short runs any any Cat6a for 10G at length
Payload ~590 MB/s ~295 MB/s ~295 MB/s ~1180 MB/s
Cost @1k (MAC/PHY) ~$5 ~$3 ~$6 ~$18
Magnetics Integrated-magnetics RJ45 (5G-rated, e.g. Bel/Pulse/Würth) ~$3.50 standard standard 10G-rated magjack ~$6

Pick: RTL8126 (5GBASE-T), 5G-rated integrated-magnetics RJ45 — final (D6). Why: 10GBASE-T costs 3–4 W continuous in a sealed 10 W-class enclosure and ~$20 of BOM, for a link speed virtually no venue uplink can use; 5GbE already exceeds every card except CFexpress. No 10GbE footprint option or watch item is carried.

(i) Wi-Fi / Bluetooth module (M.2 Key-E 2230)

Criterion MediaTek MT7925 Qualcomm QCNCM865 (WCN7850) Intel BE200 MediaTek MT7922 (Wi-Fi 6E)
Standard / streams Wi-Fi 7 2×2, 160 MHz, 6 GHz, basic MLO Wi-Fi 7 2×2, 320 MHz, MLO Wi-Fi 7 2×2, 320 MHz, MLO Wi-Fi 6E 2×2, 160 MHz
Peak PHY 2.9 Gbps 5.8 Gbps 5.8 Gbps 2.4 Gbps
Linux driver mt7925e mainline (6.7+), FW in linux-firmware ath12k mainline (6.7+) iwlwifi mainline mt7921e mature
AP + STA concurrency Supported (mt76 family, 2 vifs, same-channel) Supported in ath12k (maturing) AP mode limited (no 6 GHz AP, regulatory-locked); effectively STA-only Supported
Officially supported off-Intel platforms Yes Yes No (works on many, unsupported) Yes
Power (TX) ~1.8 W ~2.3 W ~2.2 W ~1.6 W
Module vendors AzureWave AW-XB591NF, Fn-Link 6252M-PUB Foxconn, AzureWave (limited) Intel AzureWave AW-XB468NF
Cost @1k ~$11 ~$16 ~$13 ~$8

Pick: MT7925 module (AzureWave AW-XB591NF or Fn-Link equivalent). Why: mainline driver with working AP+STA, lowest power, vendor-agnostic. 320 MHz is not worth the power: our upload is bottlenecked by the venue WAN, not the Wi-Fi PHY. Alternate: QCNCM865 if a 320 MHz spec bullet matters to marketing. BT lines are wired to a SoC USB 2.0 port but BLE duties live on the EC.

ADR v0.1 selected a Quectel RM520N-GL (Snapdragon X62, M.2 Key-B 3052, PCIe Gen3 ×1 / USB 3.1, mainline MHI) with RM551E-GL as an upgrade path, an RG255C RedCap "lite" option, a nano-SIM tray and an MFF2 eUICC. ADR v0.2 removes the built-in modem entirely. The full reasoning is ADR §14; the comparison that drove it:

Criterion Built-in RM520N-GL (v0.1) Built-in RG255C RedCap (lite option) Phone hotspot (Wi-Fi STA) / USB-tethered phone on Port B USB LTE/5G adapter on Port B (accessory)
Real-world uplink 2.5–10 MB/s typical, 12–25 MB/s good C-band 4–10 MB/s same cell, same uplink as the built-in module (the phone is an X70/X75-class modem with a better antenna volume than ours) same class as RM520N
BOM @1k ~$146 incl. rail, SIM, eSIM, 4 antennas ~$75 $0 (+ ~$1.20 dedicated 5 V/3 A Port B buck) $0 (retail $60–150, optional bundle)
Certification PTCRB, GCF, GSMA TAC, AT&T, Verizon ODI, cellular SAR, EN 301 908: ~$100–150 k, long pole after DVT same set, separate run none — the phone carries it none — the adapter maker carries it
Power 0.4 W idle, 4.5–6 W TX, 12 W ms bursts, dedicated 5 A rail ~1.5 W avg 1.0 W Wi-Fi TX at 10 MB/s, or 0.8 W xHCI + optional 2.5–15 W phone charging 2–4 W from Port B VBUS
Thermal hottest sustained source in a sealed enclosure moderate the heat is in the phone in the adapter
Mechanical tallest rear-face part (6.5 mm), 4 end-cap antennas with RF windows, SIM penetration 3042, same antenna set nothing nothing
Linux mhi_pci_generic + mhi_wwan_mbim, ModemManager, eSIM LPA USB qmi_wwan ipheth (iOS), cdc_ncm / rndis_host (Android) — all mainline cdc_mbim / qmi_wwan, or NCM/RNDIS for hotspot-class adapters — mainline
Failure modes carrier firmware lock, 12–20 wk lead time, hung PCIe modem needing EC reset same iOS trust prompt on first attach, hotspot idle timeout, USB 2.0-class tether link (~30–40 MB/s, still 3–10× the cellular uplink), phone thermal throttling adapter quality varies; keep a tested list

Pick: no built-in modem. Cellular reach = phone hotspot over Wi-Fi STA, USB-tethered phone on Port B, or a USB LTE/5G adapter on Port B (ADR §5). Firmware treats all three as metered links with per-link caps and warnings.

Why: No module in the v0.1 table changed the fundamental fact that cellular uplink is 150–650× slower than the card (03-datapath-bottlenecks.md), and the user already carries a better-antenna'd 5G modem in their pocket. The built-in module bought no uplink and cost ~19–24 % of the BOM, the largest one-time certification line, the schedule's critical path, the hottest sustained heat source, the tallest rear-face part and one sealed penetration.

Adapter recommendation list (to be validated at PoC, 13-roadmap.md): iPhone 15/16/17 (USB-C, Personal Hotspot over USB), Pixel / Galaxy (USB tethering), and at least one retail USB adapter in each of the two Linux classes — an MBIM/QMI dongle (Quectel/Fibocom-module based) and a hotspot-class device that presents NCM/RNDIS (Netgear Nighthawk M-series or TP-Link/ZTE MF-series in USB tethering mode).

(k) Antennas

Option Band coverage Form Efficiency in our window Cost @1k Notes
Wi-Fi: Taoglas FXP840-class dual/tri-band flex (verify) 2.4/5/6 GHz 40×10 flex, MHF4 pigtail good behind 1.8 mm PC+GF ~$2 2 pcs, front-frame upper band, 118 mm apart
Wi-Fi: Molex / Antenova tri-band flex 2.4/5/6 GHz similar similar ~$2 second source
Wi-Fi: custom LDS on PC frame tuned Laser-direct-structured on the PC+GF frame Best, repeatable ~$1.20/element + $15 k NRE Optional PVT path — with only two elements the NRE pays back slowly; decide at DVT
BLE: chip antenna (Johanson 2450AT18 class) on EC 2.4 GHz SMD, 6 × 12 mm keep-out fine behind PC window ~$0.30

Pick: 2× Wi-Fi tri-band flex + 1× BLE chip antenna (3 antennas, 2 MHF4 cables). LDS on the PC frame is an optional PVT cost-down, not a plan of record. The v0.1 wideband cellular flex options (Taoglas FXUB66 / Antenova / Ignion) are deleted with the modem. Detail in 07-rf-antenna.md.

(l) Embedded controller

Criterion Nordic nRF5340 STM32U575 + Wi-Fi-module BT Espressif ESP32-C6
BLE 5.4 LE integrated, own core none — BLE only while SoC + Wi-Fi module awake BLE 5.3
Always-on power ~50 mW with OLED, ~1 mA advertising ~30 mW ~80 mW
Secure boot / crypto TrustZone-M, CryptoCell-312, MCUboot TrustZone-M, SAU Secure boot v2, flash encryption
Provisioning while SoC off Yes No Yes
Toolchain Zephyr (nRF Connect SDK) Zephyr / STM32Cube ESP-IDF
Supply / longevity Nordic long-life ST 10-yr Espressif; less common in regulated gear
Cost @1k ~$6.50 ~$5 + $0 ~$2.50

Pick: nRF5340. BLE provisioning and status while the SoC sleeps is a core UX requirement (the device sits in a kit bag between jobs for weeks of standby); ESP32-C6 is cheaper but its 2.4 GHz coexistence, security story and vendor comfort in enterprise/regulated purchasing are weaker.

(m) Security element

Criterion Infineon OPTIGA TPM SLB9672 NXP EdgeLock SE050 Microchip ATECC608B OP-TEE only (RK3588 HUK)
Standard TPM 2.0, SPI, CC EAL4+ JavaCard SE, I²C, CC EAL6+ Crypto authentication IC, I²C Software TEE on SoC
Linux stack tpm_tis_spi, tpm2-tools, systemd-cryptenroll, measured boot Plug & Trust middleware, PKCS#11 cryptoauthlib OP-TEE client
Sealing to boot state Native (PCRs) via app logic limited via OP-TEE + RPMB
Suits our blobs (OAuth tokens, S3 keys) Yes — seal LUKS2 key, store identity key Yes Key storage only (no bulk) Yes but SoC-bound and Rockchip-blob dependent
Cost @1k ~$2.40 ~$3.20 ~$0.90 $0

Pick: SLB9672 for boot-state-sealed disk encryption and device identity, with OP-TEE as a second layer. Alternate: SE050 if a customer demands EAL6+ or factory-injected credentials.

(n) Power components

Function Pick Alternates Reasoning
Charger TI BQ25792 (buck-boost NVDC, 1–4S, 5 A, I²C, PD-aware via TPS25750) BQ25798 (adds MPPT — irrelevant), MPS MP2760 (2–4S buck-boost, cheaper, less Linux/EC tooling), Renesas ISL9241 (laptop NVDC, needs 2 inductors) Single-inductor buck-boost handles 5–20 V PD input into a 2S pack, seamless system-power path on unplug, TI reference with TPS25750
PD controller (Port A) TI TPS25750 TPS65988 (dual-port, more flexible, $6), Infineon CCG7D (automotive-grade, firmware SDK heavier) Preconfigured via web tool, direct I²C link to BQ2579x, sink + optional source role
PD/CC (Port B source) TPS25750 (Port B, source 5 V/3 A) TPS65988 single part for A+B keep each port independent for failure isolation. Port B buck unchanged (TPS62933 class, (g)); the D13 rule "3 A only while external PD power is present, 1.5 A default on battery" is EC policy — no part change
PD sink controller (Port C, Pro only, D7) TI TPS25750 (third instance, sink role, I²C to EC) TPS65988 (dual-port, would merge A+C) Lets a Mac (typically 15 W; up to its advertised contract) power the device during long reader sessions. Depopulated on Base together with the ASM2464PD; the ASM2464PD's own companion PD remains per the ASMedia reference design for the data role
VBUS priority power mux (Port C ↔ Port A into the charger input, Pro only, D7) TI TPS2121 priority power mux: Port A priority, break-before-make, 5–20 V, ≤ 3.25 A (verify rating at 20 V / 65 W; if short, two TPS2121 in parallel or an ideal-diode pair) TI TPS2120 (same family, lower current); onsemi / Diodes ideal-diode ORing pair with EC-controlled priority ORs Port C VBUS with Port A VBUS at the BQ25792 input so both ports are charging inputs without back-powering the other receptacle. Base: mux depopulated, 0 Ω bypass from Port A
Fuel gauge / protector TI BQ40Z50-R2 (1–4S, Impedance Track, protection, SHA-1 auth) BQ4050 (no IT accuracy), Maxim/ADI MAX17320 (2–4S, ModelGauge m5, compact) Runtime/SOH estimates exposed to the app; industry-standard SBS data
Secondary protector BQ294xx family — independent overvoltage
Cells Samsung INR21700-50E (4.9 Ah, 9.8 A) LG M50LT (5.0 Ah), Molicel P45B (4.5 Ah, 45 A — overkill), Li-Po pouch Energy density at moderate current; UN 38.3-tested cells from three vendors; pouch rejected for drop/swelling robustness and custom UN 38.3 pack burden
Bucks TI TPS62xxx / TPS56xxx class; Vicor/Monolithic alternates — see 05-power-budget.md
eFuses (slots, USB VBUS) TI TPS2596 / TPS25947 class onsemi NCP38x programmable current limit per slot

(o) Display

Criterion 2.42" mono OLED (SSD1309, 128×64) 2.13" e-paper (SSD1680, 250×122) Sharp memory LCD LS027B7DH01 (2.7", 400×240)
Operating temp −40…+70 °C 0…+50 °C (verify; slow/ghosting below 5 °C) −20…+70 °C (verify)
Sunlight Marginal (high-contrast mono helps) Excellent Excellent (reflective)
Dark set / dim stage Excellent (emissive) Needs external light Needs frontlight (not standard)
Refresh instant 300 ms partial, ~2 s full 20 Hz
Power 30–80 mW active, 0 asleep ~0 static, mJ per update 50–100 µW
Static image when device off no (unless kept on) yes yes while powered
Drop robustness small glass, easy to recess larger glass, fragile glass
Burn-in yes — mitigated by auto-off no no
Cost @1k ~$5 ~$7 ~$14

Pick: 2.42" OLED, driven by the EC, auto-off after 30 s with LED bar remaining. Film sets are often dim and winter exteriors are common; the e-paper 0 °C floor and slow refresh, and the memory LCD's dark-set problem, outweigh their sunlight advantage. Confirmed by the owner (D13, ADR §13.6).

(p) Card connectors

Slot Candidates Pick Notes
CFexpress Type B Molex 2153230001 class push-push (verify), Amphenol CFexpress B push-push, Hirose (verify) Molex, deep-insertion push-push, 10 k cycles Must leave ≥ 1 mm of card below shutter plane; metal cage with thermal pad interface
CFexpress Type A Molex / Amphenol CFe-A push-push (verify) Molex 10 k cycles
SD UHS-II Molex 47219-class UHS-II push-push (verify), Hirose DM3 series Molex 17-pin UHS-II, 10 k cycles
microSD Molex 5033982 class push-push Molex 10 k cycles
CFast 2.0 Amphenol / 3M CFast (SATA 7+17) receptacle with ejector Amphenol 5 k cycles — lowest life of the set

(q) External connectors

Function Candidates Pick Notes
USB-C ×3 Amphenol IP67 mid-mount USB-C, JAE DX07 waterproof series, GCT USB4135 IP67 Amphenol IP67 mid-mount, 24-pin (full USB4/PD) Sealed at the receptacle flange with an O-ring; shell tabs anchored to the magnesium chassis for strain relief (boss coated; Zn-Ni or Al hardware, see (s)). Same part on all three ports and both SKUs: on Pro the Port C receptacle also carries the PD sink (D7) — no part change
RJ45 Integrated-magnetics 5GBASE-T-rated magjack (Bel 0826-1X1T class, verify) vs discrete magnetics Integrated magjack Hinged silicone door for IP54; shield bonded to chassis

(r) Mezzanine (main ↔ reader daughterboard)

Criterion Samtec ADM6/ADF6 Hirose FX23 Molex SlimStack 0.35 mm
Pitch / stack 0.635 mm, 5–10 mm stack 0.5 mm, 3–5 mm 0.35 mm, 1.5–4 mm
Rated 56 Gbps PAM4 (Gen4/5 ready) Gen3/Gen4 (verify) ~8 Gbps
Pins 40–200 40–140 20–100
Ruggedness robust, guided good fragile under shock
Cost (pair @1k) ~$9 ~$6 ~$3

Pick: Samtec ADM6/ADF6, 80-pin (Gen4-capable for a future switch-side upgrade; shock-tolerant). Hirose FX23 as cost-down if DVT shows stack height allows.

(s) Chassis material and finish (D4)

The chassis-heatsink forms the rear and bottom skins and is the spreader for the SoM, switch and Ethernet PHY (06-thermal.md, 08-mechanical.md §4). The owner selected magnesium in v0.3; aluminum (CNC 6061 prototypes, ADC12 die-cast production) is no longer planned. All material data (verify) against supplier datasheets.

Option Use k (W/m·K) cp (J/g·K) ρ (g/cm³) Unit cost, incl. coating Lead time Thermal fidelity to production
AZ91D hot-chamber die-cast + boss machining Production (PVT/MP) ~72 ~1.02 1.81 ~$21 @10k Tool ~14–18 wk; ~$62 k (Mg tool ≈ +12 % vs Al) Reference
Machined AZ31B (plate/billet) EVT/DVT thermal-validation units ~96 (~30 % better than AZ91D) ~1.0 1.77 ~$58 @1k-class quantities 3–4 wk, no tooling Must be corrected −30 % on k before the EVT-exit fan gate is called
Thixomolded (or T0 die-cast) AZ91D DVT alternative to machined AZ31B ~72 ~1.02 1.81 ~$58 @1k incl. soft tool amortisation Soft tool ~6–8 wk, ~$35 k (carried in the DVT budget, 13-roadmap.md §8) Same alloy as production — no correction needed
Aluminum 6061 CNC / ADC12 die-cast (v0.2) no longer planned ~167 / ~96 ~0.90 2.70 $46 / $15 — ~935 g device vs ~828 g with Mg

Pick: AZ91D die-cast for production; machined AZ31B for EVT, with thixomolded AZ91D preferred for DVT if the soft-tool lead time fits, so the fan gate (D5) is called on the production alloy. Walls 1.6 mm, draft ≥ 1°, bosses ≥ 2.5 mm wall with faces machined to 0.10 mm flatness, inserts for all threads (DFM list in 08-mechanical.md §4).

Coating. Pick: chromate-free conversion coat over the whole casting (Gardobond X 4707 / Alodine 5200 class, ~1 µm) + light matte grey powder coat or e-coat 40–60 µm on all external surfaces (ε ≈ 0.9 for radiation, light colour for solar load). Masked bare-conversion pads at the SoM / ASM2812 / RTL8126 gap-pad bosses and the EMI-gasket lands — a 60 µm organic coat under an 8 W boss would add ~5 K (verify). Alternate: plasma electrolytic oxidation (Keronite / Tagnite class, 15–25 µm ceramic) under the same top-coat if a salt-fog / marine claim is added later; rejected as baseline on cost and because the conversion + organic system is what the volume Mg laptop-chassis supply chain runs. POM shutter tracks are separate mouldings and need no coating.

Fasteners and inserts (galvanic). Magnesium is anodic to everything else in the assembly, so: zinc-nickel-plated steel or 5056/6061 aluminum screws with aluminum washers in coated pockets; no stainless helicoils — aluminum or zinc-nickel-coated press-in / threaded inserts; stainless detent balls and springs sit in POM housings; the hard-anodized 6061 aluminum shutter slats never touch the chassis (POM tracks, silicone seals); conductive EMI gasket only on the masked conversion-coated lands. Verify contact resistance and 500 h neutral salt fog on coupons at EVT.


Final pick list

Subsystem Part Qty Alternate / second source
SoC / SoM RK3588J; carrier undecided — 3 candidates, PoC exit (D12): Firefly Core-3588J (costing default), Forlinx FET3588-C, board-down RK3588J on the ODM reference 1 the other two candidates
PCIe switch ASMedia ASM2812 1 Broadcom PEX8724
CFe B PCIe mux Diodes PI3DBS16412 + REFCLK mux 1+1 TI TMUXHS4412 (verify)
USB4 bridge (Pro) ASMedia ASM2464PD + PD companion 1 — (depopulate on Base)
SD UHS-II controller Genesys GL9755 1 Realtek RTS5260
microSD controller Genesys GL9750 1 Realtek RTS5227S
CFast controller ASMedia ASM1064 1 ASM1166
USB host controller ASMedia ASM3142 1 ASM3242
Ethernet Realtek RTL8126 + 5GBASE-T magjack (final, D6) 1 RTL8125BG (2.5GbE, spec regression)
Wi-Fi 7 module AzureWave AW-XB591NF (MT7925) 1 Fn-Link 6252M-PUB; QCNCM865
Cellular modem — none (ADR v0.2); phone tether / USB adapter on Port B 0 —
Port B 5 V/3 A tether buck TI TPS62933 class, EC-programmable 0.5/1.5/3 A limit via the Port B eFuse 1 MPS MP2315 / TI TPS563300
Wi-Fi antennas Taoglas FXP840-class tri-band flex 2 Molex / Antenova
BLE antenna Johanson 2450AT18-class chip antenna on EC 1 Pulse / Yageo
EC Nordic nRF5340 1 STM32U575 (loses standby BLE)
TPM Infineon SLB9672 1 NXP SE050
Charger TI BQ25792 1 MPS MP2760
PD controllers (Port A sink/source, Port B source) TI TPS25750 2 TPS65988
Port C PD sink controller (Pro only, D7) TI TPS25750 1 TPS65988 (merging A+C)
Port C / Port A VBUS priority mux (Pro only, D7) TI TPS2121, Port A priority, break-before-make, 5–20 V ≤ 3.25 A (verify at 65 W) 1 TI TPS2120; onsemi / Diodes ideal-diode pair
Fuel gauge / protector TI BQ40Z50-R2 + BQ294xx 1+1 ADI MAX17320
Cells Samsung INR21700-50E 4 LG M50LT, Molicel P45B
Display 2.42" SSD1309 OLED (confirmed, D13) 1 —
Card connectors Molex CFe B, CFe A, SD UHS-II, microSD; Amphenol CFast 5 Amphenol / Hirose
USB-C receptacles Amphenol IP67 mid-mount 3 JAE DX07
Mezzanine Samtec ADM6/ADF6 80-pin 1 pair Hirose FX23
NVMe (Pro) 1 TB M.2 2280 Gen3/Gen4 ×2-capable (e.g. Kioxia/WD industrial class) 1 any
Chassis material / finish (D4) AZ91D hot-chamber die-cast magnesium, chromate-free conversion coat + matte grey powder/e-coat 40–60 µm, masked bare bosses; EVT/DVT units machined AZ31B or thixomolded AZ91D 1 PEO (Keronite/Tagnite) under the same top-coat for a salt-fog claim