--- title: EinarBoard v6 — Phase 2 — Schematic Delta (v5 → v6) — Build Spec tags: [project-drogheda, hardware, einarboard, v6, schematic, kicad, gnss, 4g, rf, delta] project: Project Drogheda author: Helgen CTO + Claude date: 2026-08-24 status: Active — THE schematic spec for v6. Every net/pin below is verified against the as-drawn `hbox-watchdog-v5.kicad_pcb` netlist (extracted 2026-08-24), not assumed. authority: implements Phase 2 of `2026-08-24_…EinarBoard-v6_GNSS-4G-Integration_Design-Brief_v1.0.md`. Supplements `watchdog-electrical-design-state.md` (canonical) and `watchdog-production-schematic-delta.md` (the v3 precedent for this document's format). --- # EinarBoard v6 — Schematic Delta > **Base:** `kicad/hbox-watchdog-v5` (EinarBoard 3.0 / v5.5, 15 pcs in fab since 22-Ago, > git checkpoint `c3e8e48`). **Target:** `kicad/hbox-watchdog-v6`. > > **Method rules, unchanged and non-negotiable:** file-level KiCad edits only (the MCP backend > clobbered disk state on 24-Jul — read-only MCP queries are fine); git checkpoint after every > block; every structural edit verified by an independent parse; `%.10g` coordinates; footprint > rotation = R(−θ); zone refills in the GUI only. > > ⚠ **Before starting:** clear the stale `.git/*.lock` files and confirm the v5.5 fix commit > actually landed. This has bitten two sessions running. --- ## 0. ⚠ Two corrections to the v6 brief, from the extracted netlist The brief was written before the netlist was pulled. Both of these were wrong: 1. **"Spare PCF8574 pins" — there is only ONE.** `U13` (PCF8574T, SOIC-16 **WIDE**) has P0–P3 on `/BATLED1–4`, P4–P6 on `/RGB_R/G/B`. **Only `P7` (pin 12) and `~INT` (pin 13) are free.** All new control signals therefore go on **MCU pins**, of which there are plenty (§3). 2. **`/MODEM_RST` is not MCU-controlled today.** It connects only `J7.5` and `SW4G1.1` (a pushbutton). The firmware has **never** been able to reset the modem in software — its only tool is killing `SW_5V` via `PWR_CTRL`. **v6 fixes this** (Block T). A third finding worth recording: **`/3V3_MODEM` is made by `U7` (MP1584) → `L7` → `3V3_MODEM`**, input `/SW_5V`. `U7`'s job changes completely in v6 (§Block P). --- ## 1. Verified v5 baseline (extracted 2026-08-24) ### 1.1 STM32F411RET6 (`U16`) — as drawn | Pin | Port | Net | Pin | Port | Net | |---|---|---|---|---|---| | 2 | PC13 | `/LED_C13` | 41 | PA8 | `/CHRG_EN` | | 8 | PC0 | `/ETH_INT` | 42 | PA9 | `/USART1_TX` | | 14 | PA0 | `/BAT_SENSE` | 43 | PA10 | `/USART1_RX` | | 15 | PA1 | `/PWR_CTRL` | 44/45 | PA11/12 | `/DFU_DM` `/DFU_DP` | | 16 | PA2 | `/GNSS_TX` | 46/49 | PA13/14 | `/SWDIO` `/SWCLK` | | 17 | PA3 | `/GNSS_RX` | 50 | PA15 | `/ETH_RST` | | 20 | PA4 | `/5V_SENSE` | 55 | PB3 | `/CHRG_STAT` | | 21 | PA5 | `/IGN_SENSE` | 56 | PB4 | `/CHRG_FAULT` | | 22 | PA6 | `/FAN_PWM` | 57 | PB5 | `/BYP_CTRL` | | 26 | PB0 | `/EXT_LED` | 58/59 | PB6/PB7 | `/I2C_SCL` `/I2C_SDA` | | 27 | PB1 | `/NTC_TEMP` | 61 | PB8 | `/SER_IRQ` | | 28 | PB2 | `/BOOT1_STRAP` | 33–36 | PB12–15 | `/ETH_CS/SCK/MISO/MOSI` | **Free (unconnected in v5): PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PD2, PA7, PB9, PB10** — 16 pins. **USART6 = PC6/PC7 is free**, which is what makes v6 possible without disturbing anything. ### 1.2 The three nets that carry the whole GNSS/4G architecture | Net | v5 members | Meaning | |---|---|---| | `/USART1_RX` | `U16.43` (PA10) · `Rdfu1.1` (22k) · **`K1.1` (NC)** · **`MOD1.23`** (F9P TX2) | receiver's UART2 uplink; MCU taps it passively | | `/DIN_4G` | **`K1.5/6` (COM)** · `J7.3` | modem's data-**in**; fed from the relay | | `/DOUT_4G` | `J7.2` · **`MOD1.17`** (F9P RX2) | **RTCM downlink, hardwired, never switched** | `K1` (G5V-1 DC5): `1`=NC=`/USART1_RX` · `5/6`=COM=`/DIN_4G` · `10`=NO=`/USART1_TX` (PA9) · `2`=`/SYS5V` · `9`=`/KCOIL` ← `BYP_CTRL` (PB5) via `R40`→`Q6`. ### 1.3 Power tree (verified) ``` P1.1 ─/24V_IN─┬─ D10 (SMBJ33A) └─ Q10 (IRFR5305, rev-pol) ──/24V── U2.7 (MP1584 fan buck) ──/SW_FAN─► 5V_FAN P2.1 ─/VEH5V── RS1 (8 mΩ) ──/VIN_SW── U6.7 (LTC4040 VIN) U6 (LTC4040) ──/MAIN5V── Q7 (AO4406A cutoff, gate /IGATE) ──/SYS5V── F1 (PPTC 3A) ├─ U12 (MP1584) ─► /3V3_ETH └─ K1.2 (relay coil supply) /SW_IN ── Q1 (AO3401A, gate /GATE_LS ← PWR_CTRL) ──/SW_5V──┬─ MOD1.5 (shield 5 V) └─ U7.2/7 (MP1584) ─L7─► /3V3_MODEM U17 (AMS1117-3.3) ──/3V3 ``` --- ## 2. Deletions | Ref | What | Action | |---|---|---| | `MOD1` | simpleRTK2B Pro, Arduino UNO R3 socket, 32 pads @ (90.6, 129.9) | **DELETE** — nets `/GNSS_RX` `/GNSS_TX` `/DOUT_4G` `/USART1_RX` `/SW_5V` re-terminate on `U18` | | `J7`, `J8` | XBee 2.0 mm sockets, 10 pads each @ (174.2 / 196.5, 74.8) | **DELETE** — nets re-terminate on `U19` | | `SW4G1` | modem RESET pushbutton | **DELETE** — replaced by MCU control (Block T) | | `Rmled1`, `MODEM_LED_A` | modem LED + resistor | **KEEP**, re-source from the A7670SA `NETLIGHT` pin | | `MH7`, `MH9`, `MH10`, `MH11` | shield / heatsink M2.5 bolt holes | **DELETE MH7/MH9/MH10**; **KEEP MH11** and add one partner near `U19` for the modem heatsink clamp | | `U7`, `L7`, `C41`, `C43` | the 3V3 modem buck | **REPURPOSE** — see Block P | **Do not delete `K1`.** It is rewired (Block T), not removed — it is the fail-safe that keeps corrections flowing with a dead MCU. --- ## 3. MCU pin allocation — v6 additions | New net | Pin | Dir | Function | |---|---|---|---| | `/USART6_TX` | **PC6** | OUT | MCU → modem (AT, GGA uplink, `$PHLG`) — **via `K1` NO** | | `/USART6_RX` | **PC7** | IN | modem → MCU (AT responses, RTCM tap) | | `/MODEM_PWRKEY` | **PC8** | OUT | open-drain via `Q20` (2N7002) | | `/MODEM_STATUS` | **PC9** | IN | level-shifted 1.8 → 3.3 V | | `/MODEM_PWR_EN` | **PC10** | OUT | enables `U20` buck — the `HARD_CYCLE` path | | `/MODEM_RST` | **PC11** | OUT | open-drain via `Q21` (2N7002) — **new MCU control** | | `/GNSS_RESET_N` | **PC12** | OUT | open-drain; `U18` needs a 7–13 kΩ pull-up | | `/GNSS_ANT_DETECT` | **PC1** | IN | antenna-open telemetry | | `/GNSS_ANT_SHORT_N` | **PC2** | IN | antenna-short telemetry | | `/GNSS_TIMEPULSE` | **PA7** | IN | TIM3_CH2 input capture | **Unchanged:** `/GNSS_TX` PA2 · `/GNSS_RX` PA3 (USART2, `HardwareSerial GNSS(PA3, PA2)`) · `/USART1_RX` PA10 (receiver UART2 tap) · `/BYP_CTRL` PB5 (K1 coil). **Freed:** **PA9** — `K1.10` moves to PC6. Leave PA9 as a test point. **Still spare after v6:** PC3, PC4, PC5, PB9, PB10, PD2, PA9 — **7 pins.** > ⚠ **Verify no double-allocation** with an independent netlist parse before ERC. That check > is the reason this table exists. --- ## Block N — GNSS island (`U18`) **Part:** `ZED-F9P-04B`, 54-pin LGA 22.0 × 17.0 × 2.4 mm — **LCSC `C5120257`, Extended.** *(Alternative under evaluation for v7: LG290P, 12.2 × 16 mm — see brief §1.4. **Do not** attempt a dual footprint; the pad rings overlap and the pin functions do not align.)* | Signal | Connect to | Note | |---|---|---| | `VCC` | `/3V3_GNSS` | **from `U21` LDO only** — never the shared `/3V3` | | `V_BCKP` | `/3V3` via 1 kΩ + Schottky | 45 µA hot-start; keeps ephemeris across a power-cycle | | `GND` | GND | full pad-under-module via field | | `UART1 TX/RX` | `/GNSS_RX` / `/GNSS_TX` | ⚠ net names are **MCU-relative** in this design: `/GNSS_TX` = MCU PA2 out → receiver RX | | `UART2 RX` | `/DOUT_4G` | **RTCM in — hardware path, unswitched** | | `UART2 TX` | `/USART1_RX` | uplink NMEA → `K1.1` (NC) and PA10 | | `RESET_N` | `/GNSS_RESET_N` | **7–13 kΩ pull-up to `/3V3_GNSS` required** | | `TIMEPULSE` | `/GNSS_TIMEPULSE` | 4 mA drive | | `ANT_DETECT` / `ANT_SHORT_N` | `/GNSS_ANT_DETECT` / `/GNSS_ANT_SHORT_N` | free antenna-fault telemetry — you have already lost H0005 and H0014 to antenna faults | | `VCC_RF` | Block S bias tee | 50 mA typ / **300 mA abs max** | | `D_SEL` | leave open (UART mode) | open/high = UART; low = SPI | | `SAFEBOOT_N` | leave open | | | `USB` (`V_USB`, D+/D−) | **test pads only**, not a connector | u-center access at first article; 90 Ω pair, ESD if ever fitted | **Decoupling:** 100 nF per supply pin **≤ 2 mm**, 10 µF + 1 µF bulk ≤ 10 mm, per the Capacitor-Placement-Map rules. ### `U21` — GNSS LDO **3.3 V, ≥ 300 mA, low noise.** Candidates: `TPS7A2033PDBVR` (low-noise, preferred) or `AP2112K-3.3TRG1` (cheap, LCSC `C51118`). **Input = `/SW_5V`, output = `/3V3_GNSS`** — deliberately *not* the shared `/3V3`. Two reasons: the receiver stays on the MCU-gated stack rail, so `PWR_CTRL` (PA1 → `Q1`) still power-cycles it exactly as it does today; and an LDO fed from 5 V has ~1.7 V of headroom, which is what gives it the PSRR to reject the three MP1584 switchers this board carries. The ZED-F9P has **no internal SAW** — it will lock onto buck harmonics given the chance. > 🔴 **`ZED-F9P` VCC ramp rate ≤ 20 µs/V is a DAMAGE limit, not a guideline** — 0 → 3.3 V in > **≤ 66 µs**. Most LDOs with soft-start are far slower. **Measure the chosen LDO's rise time > on the bench before fab.** If it cannot meet it, add a fast load switch or a supervisor. > This is a fab gate, not a nice-to-have. --- ## Block O — LTE island (`U19`) **Part:** `A7670SA-LASC`, 88-pin LGA 24 × 24 × 2.5 mm — **LCSC `C18548276`**, in the JLCPCB library, Extended, **X-ray inspection required, MSL 3**. ⚠ **`-SA` only.** `-E`/`-C` variants have no B4/B66 and will never attach on Telcel. ⚠ A7670 (88-LGA) ≠ A7672 (124 LCC+LGA) ≠ SIM7070 (68-LCC). Not interchangeable. | Signal | Connect to | Note | |---|---|---| | `VBAT` **pins 55, 56, 57** | `/VBAT_MODEM` | **all three, mandatory** for RF performance. Trace/pour **≥ 3 mm** | | `GND` | GND | full via field | | `UART_TXD` | `/DOUT_4G` (level-shifted, Block R) | → `U18` UART2 RX **and** → `/USART6_RX` | | `UART_RXD` | `/DIN_4G` (level-shifted) | ← `K1` COM | | `PWRKEY` | `/MODEM_PWRKEY_M` | via `Q20` open-drain. **Low ≥ 50 ms = on; ≥ 2.5 s = off.** Internal 50 kΩ to VBAT. **≤ 100 nF total capacitance** or you get spurious auto-power-on | | `RESET` | `/MODEM_RST_M` | via `Q21` open-drain, low 2–2.5 s. Same ≤ 100 nF rule | | `STATUS` | `/MODEM_STATUS_M` | 1.8 V out; asserts ≈ 11.2 s after power-on | | `NETLIGHT` | `Rmled1` → `/MODEM_LED_A` | reuse the existing LED | | `VDD_1V8` | `/1V8_MODEM` + 2.2 µF | **50 mA max — level-shift reference ONLY, never a system rail** | | `USIM1_*` | Block Q | internal 4.7 kΩ pull-up on `USIM1_DATA` — no external needed | | `USB` D+/D−, VBUS | `J9` (kept) | 90 Ω pair. **Reserve a `USB_BOOT` test pad** — the only recovery if a firmware update bricks it. `USB_BOOT` must **not** be pulled low at power-up | | `RF_ANT` (pin 60) | Block S | **single antenna** — Cat-1bis, no diversity port | **Decoupling at the VBAT pins:** 33 pF ∥ 10 pF ∥ 100 nF ∥ 1 µF ceramics, plus the Block P bulk. --- ## Block P — modem 3.8 V rail (`U20`) — replaces `U7`'s modem duty > **Why this block exists, in one sentence:** the 10-Ago fleet boot-loop was caused by > exceeding the SD-15B's 3 A, and putting a 2 A LTE modem back on that same rail would > recreate it. ``` /24V ──────────► D20 (SS34) ──┐ ├──/VIN_MODEM──► U20 (buck, 3.8 V) ──L20──► /VBAT_MODEM ──► U19 /MAIN5V ──► D21 (PMEG3050) ───┘ ▲ │ EN /MODEM_PWR_EN (PC10) ``` | Item | Spec | |---|---| | `U20` | **4.5–40 V in, ≥ 3 A, synchronous buck.** Candidate: `AP64350` class. ⚠ **40 V rating required** — `D10` (SMBJ33A) clamps at ~53 V, a 28 V part such as TPS54331 is **not** acceptable. **NOT a fourth MP1584** — the existing three are the source of EMC findings 3 and 4 | | Output | **3.8 V** (mid-window of the A7670SA's 3.4–4.2 V) | | `D20` | SS34 — already in the BOM (`D2`, `D12`). Drop irrelevant on the 24 V leg | | `D21` | **low-Vf Schottky** (PMEG3050 class, Vf ≈ 0.35 V @ 2 A). In blackout `MAIN5V` ≈ 5 V → `VIN_MODEM` ≈ 4.65 V → duty ≈ 0.82. **Verify `U20`'s max duty covers it**; if marginal, use a P-FET ideal diode (`AO3401A`, already in the BOM as `Q1`) | | Bulk | **≥ 470 µF low-ESR** within 20 mm of the VBAT pins (spec floor is 300 µF; the extra is cheap insurance against the 2.8 A GSM burst) | | `Cin` | **1 µF + 10 µF within 3 mm** of `U20`'s VIN-GND — EMC finding 4, mandatory | | Feedback | divider **at the FB pin**, `/FB_MODEM` short and routed away from `/SW_MODEM` — EMC finding 3, mandatory | | Enable | `/MODEM_PWR_EN` (PC10). **Power-cycle = EN low ≥ 2 s.** Add a 1 kΩ bleed across the bulk so it actually collapses | **Behaviour:** cabinet live → modem's ~9.5 W comes from **24 V at ~0.45 A** and the SD-15B never sees it. Blackout → same buck accepts `MAIN5V` (pack via LTC4040), unit keeps reporting (**invariant #2**). ### `U7` / `L7` / `C41` / `C43` — disposition `/3V3_MODEM` no longer feeds a modem. **Repurpose `U7` as the 3.3 V supply for the level shifters and the LTE-island logic**, renaming the net `/3V3_LTE`, **or** delete `U7`/`L7`/ `C41`/`C43` entirely and take that logic from `/3V3`. **Decide before routing the 3V3 tree** — this is the same open decision that was left dangling on `U12`/`L8` in the 3.0 brief, and it should not be left dangling twice. Recommendation: **delete**, feed from `/3V3`; the shifters draw milliamps. ### 🔴 Also fix in this block **The LTC4040 input-limit errata.** `RS1` (8 mΩ) sets a 3.12 A input limit **above** the SD-15B-05's 3 A rating. Bring the limit **below** the PSU rating, or specify a larger PSU. This has been a standing errata since 10-Ago. **v6 is where it gets fixed.** --- ## Block Q — MFF2 SIM (`U22`) | Item | Spec | |---|---| | Package | **MFF2 / DFN-8 5 × 6 mm (SON-8)** | | Signals | `USIM1_VDD` · `USIM1_CLK` · `USIM1_DATA` · `USIM1_RST` · GND | | Pull-ups | none — `U19` has an internal 4.7 kΩ on `USIM1_DATA` | | Voltage | 1.8 V / 3.0 V auto-detect, no strapping | | ESD | array at the SIM lines (`ESDA6V1W5` / `SMF15C` class) | | Placement | **≤ 20 mm from `U19`**, short matched-ish traces, GND guard | ⚠ **Sourcing is a lead-time item, not an engineering task.** You need a real Telcel/AT&T MX or Mexican-profile MVNO MFF2. Flat-rate sensor IoT SIMs (500 MB / 10 years) are **an order of magnitude too small** for 50–200 MB/month. Start this in Phase 0. --- ## Block R — level translation (`U23`, `U24`) **A7670SA I/O is 1.8 V. The STM32's V_IH ≈ 2.31 V — 1.8 V will not read as HIGH.** | Line | Direction | Method | |---|---|---| | `/DIN_4G` (MCU/K1 → modem RX) | 3.3 → 1.8 | `SN74LVC2T45DCUR`, DIR fixed | | `/DOUT_4G` (modem TX → MCU + receiver) | 1.8 → 3.3 | `SN74LVC2T45DCUR`, DIR fixed | | `/MODEM_STATUS` | 1.8 → 3.3 | same device, 2nd channel | | `/MODEM_PWRKEY`, `/MODEM_RST` | 3.3 → open-drain | `Q20`, `Q21` = 2N7002. **Not** through a shifter — MCU absent must leave them unasserted | - `VccA` = `/1V8_MODEM` (from `U19`'s `VDD_1V8`, 2.2 µF); `VccB` = `/3V3`. - **Prefer direction-fixed `74LVC2T45` over auto-direction `TXS0108E`** — auto-direction parts misbehave against strong drivers and multi-load nets, and `/DOUT_4G` drives **two** loads. - ⚠ **The RTCM path passes through `U24`.** Add DNP 0 Ω bypass footprints across it so a suspect shifter can be jumpered out at bring-up. - `/DOUT_4G` fan-out on the 3.3 V side: `U18` UART2 RX **and** `/USART6_RX` (PC7) through a **100 Ω series** resistor for isolation. --- ## Block S — RF front ends ### Stackup (unchanged topology, new requirement) `F.Cu` signal + GND pour · `In1` **solid GND** · `In2` 3V3 plane · `B.Cu` signal + GND pour. ✔ **New: order as controlled impedance.** JLCPCB 4-layer `JLC04161H-7628`, F.Cu→In1 prepreg ≈ 0.2104 mm. Target **50 Ω CPWG on F.Cu referenced to In1** — roughly 0.35 mm trace / 0.25 mm gap at εr ≈ 4.4. **Confirm with JLCPCB's own impedance calculator before layout, not after.** **Rules for both RF traces, no exceptions:** referenced to an unbroken `In1` (no plane split, no `In2` island underneath), as short and straight as possible, ground-stitched both sides at ≤ λ/20, nothing crossing on any layer. ### S1 — GNSS (`J12`) ``` J12 (U.FL) ─╥─ C_DC (100 nF) ─── U18.RF_IN ║ └─ L_BIAS (≥68 nH 0603, SRF > 1.6 GHz) ─┬─ 100 nF ∥ 100 pF ─ GND └─ VCC_RF (U18) D_ESD (>2 GHz rated, <0.5 pF) at J12 ``` Active antenna is **mandatory** — the ZED-F9P has **no internal LNA**. ### S2 — LTE (`J13`) ``` U19.RF_ANT ─── π-match pads (series 0402 + 2× shunt 0402, series = 0 Ω default) ─── J13 (U.FL) ─── D_ESD (low-cap <0.5 pF) ``` ### S3 — 🔴 GNSS desense — the #1 technical risk A 23 dBm transmitter drawing 2–3 A bursts next to a GNSS front end is a classic RTK-killer. **The Ardusimple shield has been hiding this. A bare module hands it to you.** 1. **Board separation:** `U18` in the freed `MOD1` area (bottom-left), `U19` in the freed XBee area (right edge) → **≈ 149 mm apart, the full diagonal.** The GNSS corner is also the furthest point from all four switchers (nearest, `U7` at 140.0/112.9, ~60 mm). 2. **Antenna separation ≥ 20 cm** on the enclosure — two bulkheads. **Design rule, not an optimization.** 3. Modem return path routed away from the GNSS island; no shared reference but `In1`. 4. **No 1575 SAW** — it would kill L2 on a dual-band receiver. Specify an active antenna with good out-of-band rejection instead. 5. **Measured at gate G3** (Phase 6): fix quality and C/N₀ with the modem idle vs. transmitting at full power. Pass/fail, not opinion. ### S4 — ESD everywhere (EMC finding 5) **Every external connector gets a clamp within 10 mm.** `D14/D15/D16` move from the MCU to within 10 mm of `J11`. `J9` gets the ESD array it never had (**< 2 pF** on the data lines). `J12`, `J13`, `P1`, `P4`, `P15`, `P16` all get appropriate clamps. --- ## Block T — `K1` rewiring (one net change, big consequence) | `K1` pin | v5 | **v6** | |---|---|---| | 1 (NC) | `/USART1_RX` | **unchanged** — receiver UART2 TX | | 5/6 (COM) | `/DIN_4G` | **unchanged** — modem RX | | 10 (NO) | `/USART1_TX` (PA9) | **`/USART6_TX` (PC6)** ← the only change | | 2 | `/SYS5V` | unchanged | | 9 | `/KCOIL` ← `BYP_CTRL` (PB5) | unchanged | **What this buys.** Energised (normal operation) the MCU owns the modem's RX line: it can send AT commands, forward the receiver's GGA byte-exact, and inject `$PHLG`. **De-energised — MCU dead or absent — the relay relaxes and the receiver's own GGA goes straight to the modem, so corrections keep flowing.** Invariants #2 and #3 both hold, with hardware, for the price of one moved net. **Consequence to state plainly: v6 makes Modo B the normal operating mode.** Consistent with the EPCT decision already on record. --- ## 4. New net list | Net | Members | |---|---| | `/3V3_GNSS` | `U21.out` · `U18.VCC` · decoupling | | `/VBAT_MODEM` | `L20.2` · `U19.55/56/57` · bulk + ceramics | | `/VIN_MODEM` | `D20.k` · `D21.k` · `U20.VIN` · Cin | | `/1V8_MODEM` | `U19.VDD_1V8` · `U23.VccA` · `U24.VccA` · 2.2 µF | | `/USART6_TX` | `U16.37` (PC6) · `K1.10` | | `/USART6_RX` | `U16.38` (PC7) · 100 Ω → `/DOUT_4G` (3.3 V side) | | `/MODEM_PWRKEY` / `_M` | `U16.39` (PC8) → `Q20` → `U19.PWRKEY` | | `/MODEM_STATUS` / `_M` | `U19.STATUS` → `U24` → `U16.40` (PC9) | | `/MODEM_PWR_EN` | `U16.51` (PC10) · `U20.EN` | | `/MODEM_RST` / `_M` | `U16.52` (PC11) → `Q21` → `U19.RESET` | | `/GNSS_RESET_N` | `U16.53` (PC12) · `U18.RESET_N` · 10 kΩ pull-up | | `/GNSS_ANT_DETECT` | `U16.9` (PC1) · `U18.ANT_DETECT` | | `/GNSS_ANT_SHORT_N` | `U16.10` (PC2) · `U18.ANT_SHORT_N` | | `/GNSS_TIMEPULSE` | `U16.23` (PA7) · `U18.TIMEPULSE` | | `/SIM_VDD` `/SIM_CLK` `/SIM_DATA` `/SIM_RST` | `U19` ↔ `U22` | | `/RF_GNSS` `/RF_LTE` | 50 Ω, own netclass, **no autorouting** | **Changed:** `/DOUT_4G` gains `U18`.UART2_RX, `U24` and the PC7 tap; loses `J7.2`, `MOD1.17`. `/DIN_4G` gains `U23`/`U19`; loses `J7.3`. `/USART1_RX` loses `MOD1.23`, gains `U18`.UART2_TX. `/USART1_TX` loses `K1.10` → PA9 becomes a test point. **Netclasses:** keep `HV24`; add **`RF`** (50 Ω, no auto-route) and **`PWR_MODEM`** (`/VBAT_MODEM`, `/VIN_MODEM` — min width 1.5 mm, target ≥ 3 mm). --- ## 5. Inherited EMC fixes — schematic-level, day-one | # | Fix | Where it lands in the schematic | |---|---|---| | 🔴 1 | `/SW_BAT` ≥ 2 mm polygon | netclass + layout; **load-bearing** — blackout now feeds the modem too | | 🔴 2 | `/BAT_PLUS` ≥ 1.5 mm + via farm | same | | 🟠 3 | `R20`/`R21` at `U2` pin 4, `/FB_FAN` short | schematic grouping so layout can honour it | | 🟠 4 | 1 µF + 10 µF ≤ 3 mm of every buck VIN — **including `U20`** | add the parts now | | 🟠 5 | ESD < 10 mm of every external connector | Block S4 | | 🟡 6 | Crystals → **3225** package, < 5 mm (`Y1`, `Y3`, `Y4` are HC-49 at 12–15 mm) | change footprints in the schematic pass | | 🟡 7 | ETH RX pair coupled and length-matched | layout, flagged here | | 🟡 8 | Fill the 8 empty 20 mm stitching cells | free — most were under `MOD1` | --- ## 6. Part additions | Ref | Part | LCSC | Note | |---|---|---|---| | `U18` | ZED-F9P-04B | **C5120257** | Extended, X-ray, ~104–129 in stock — **consign from Mouser for ≥ 100 units** | | `U19` | A7670SA-LASC | **C18548276** | Extended, X-ray, MSL 3, 220 in stock | | `U20` | 40 V / 3 A sync buck (AP64350 class) | verify | **40 V minimum** | | `U21` | TPS7A2033 or AP2112K-3.3 | C51118 (AP2112K) | ⚠ verify the ≤ 66 µs ramp | | `U22` | MFF2 SIM | carrier | lead-time item | | `U23`, `U24` | SN74LVC2T45DCUR | verify | direction-fixed | | `Q20`, `Q21` | 2N7002 | verify | open-drain PWRKEY / RESET | | `D20` | SS34 | in BOM (`D2`) | 24 V leg | | `D21` | PMEG3050 class | verify | low-Vf, 5 V leg | | `J12`, `J13` | U.FL / IPEX MHF1 SMT receptacle | verify | + 2 pigtails, 2 SMA bulkheads | | `L20` | buck inductor per `U20`'s datasheet | verify | ≥ 4 A saturation | | — | 2× 220 µF low-ESR + ceramics | verify | Block P bulk | | — | ESD arrays, RF ESD, bias-tee L/C, π-match 0402s | verify | Blocks S1–S4 | > **All "verify" rows must be confirmed against the live JLCPCB library at upload**, not from > a cached DB. The `v4-bom.xls` labels are on record as unreliable; check pin-counts vs > pad-counts every time. --- ## 7. Execution order & verification | Step | Work | Check | |---|---|---| | T0 | Clear stale `.git/*.lock`; confirm the v5.5 fix commit landed; branch `v6` from `c3e8e48`; copy v5 → `hbox-watchdog-v6` | parse-verify the copy opens clean | | T1 | Deletions (§2) | netlist parse: `MOD1`/`J7`/`J8`/`SW4G1` gone, no orphan nets | | T2 | Block T (`K1.10` → PC6) | 1-net diff, nothing else moved | | T3 | Block N + `U21` | ERC on the GNSS island alone | | T4 | Block O + Block Q + Block R | ERC; **confirm every 1.8 V line crosses a shifter** | | T5 | Block P + LTC4040 input-limit fix | recompute the backup power budget vs the 1S4P ~12 Ah pack | | T6 | Block S (RF + ESD) + netclasses | `RF` netclass exists and is excluded from autorouting | | T7 | EMC list §5 | each row ticked individually | | T8 | Full ERC + independent pin-map parse | **ERC 0**; no double-allocated MCU pin | **Gate G2:** ERC 0 **plus** an external review of the RF and power sections. This is Helgen's first RF design — do not let ERC-clean stand in for reviewed. --- ## 8. What is deliberately NOT in v6 - **A second GNSS footprint.** LG290P's pads overlap the F9P ring and the functions don't align. The cost-down is a v7 respin of one corner — which is exactly why Block N is an island. - **A modem mezzanine daughtercard.** Rejected with "full integration" (brief §0); revisit only if gate T1's cabinet temperature forces the industrial tier. - **eUICC.** MFF2 only, per the 24-Ago decision. - **Cat-4 / WCDMA.** See brief §2.3. --- ## 9. Cross-references - v6 brief: `2026-08-24_Drogheda_EinarBoard-v6_GNSS-4G-Integration_Design-Brief_v1.0.md` - Phase 1 firmware: `2026-08-24_Drogheda_EinarBoard-v6_Phase-1_NTRIP-Firmware-Spec_v1.0.md` - EMC fix list: `2026-08-22_Drogheda_EinarBoard-v5_EMC-Audit_v1.0.md` - Canonical electrical state: `watchdog-electrical-design-state.md` - Format precedent: `watchdog-production-schematic-delta.md` - Cap placement rules: `2026-08-14_Drogheda_EinarBoard-3.0_Capacitor-Placement-Map_v1.0.md` - Invariants: **#1** power-off safe (`Q20`/`Q21` open-drain, buck EN default off) · **#2** never vanish (Block P dual input, Block T fail-safe) · **#3** power-cycle recovery (`MODEM_PWR_EN`) · **#5** no head-of-line blocking · **#6** no secrets