# A (Power tree) + F-5x (temperature sensors / fan) — v6 audit findings Snapshot: sch ecee9fed… / pcb 6ddec80d… (evidence pack 2026-09-28) Auditor: POWER (block §4-A plus the temperature-sensor and fan parts of §4-F). All values come from the evidence pack (`nets.json`, `ref_pins.json`, `components.csv`, `pcb_pads.csv`, `pcb_tracks.csv`, `vias.csv`, zone fills parsed from `src/hbox-watchdog-v6.kicad_pcb`) and from datasheets fetched this session. Scratch scripts and results are in `/home/claude/v6audit/work/A_power/` (`q.py` net/ref dump, `segs.py` segment lists, `path.py` widest-path bottleneck and resistance per current path, `pdist.py` pad edge-to-edge distances, `islands.py`/`island_of.py` GND-pour island map, `under.py` copper under parts). Conventions: "edge" = pad-copper to pad-copper distance (shapely, true pad shapes); "ctr" = pad centre distance. Track resistance assumes 1 oz (35 µm) copper, ρ = 1.72e-8 Ω·m. Trace temperature rise uses IPC-2221 (k = 0.048 external, 0.024 internal). IPC-2221 is known to be pessimistic for inner layers next to planes, and IPC-2152 gives roughly half the internal rise. Both are quoted where it matters. The GND-island analysis uses the **zone fills stored in the file**. Refill before fab and re-run `islands.py`. ## Sources read - `findings/_COMMON_BRIEF.md`, `INDEX.md`, `evidence/MANIFEST.md`, master brief §3–§5, §4-A, §4-F (temperature/fan). - `docs/2026-09-28_Drogheda_EinarBoard-v6_Review-vs-V5.5-Lessons_v1.0.md` (§1 F1/F4/F5/F6/F7/F8, §2, §3, §4 checklist). - `docs/2026-09-27_Drogheda_EinarBoard-V5.6_ECO_ES_v1.0.md` (§0 R1–R5, §A, §C, §D, §E, §F, §H, §I). - `docs/2026-09-28_Drogheda_EinarBoard-V5.6_Schematic-Change-Report_v1.0.md` (§1, §2, §6). - `docs/2026-09-28_H0008_charging-overnight-log.md`. - `docs/project/claude__2026-09-27_HBOX-V5.5-V4_Modem-on-battery_Diagnosis-and-0.5.8-Field-Strategy.md`. - Memory copies in `docs/memory/`: `drogheda-battery-hightemp`, `drogheda-einarboard-modem-rail`, `drogheda-backup-lowpower`, `drogheda-power-cost`, `drogheda-fan-policy`, `drogheda-einarboard-v5-audit`, `drogheda-einarboard-harness`, `drogheda-einarboard-short-incident`, `drogheda-einarboard-v6-brief`, `preferences`. - Evidence: `components.csv`, `nets.json`, `ref_pins.json`, `ic_pins_U6/U25/U20/U2/U12/U17/U21.csv`, `mcu_pins.csv`, `pcb_footprints.csv`, `pcb_pads.csv`, `pcb_tracks.csv`, `vias.csv`, `zones.csv`, `net_routing_summary.csv`, `drc_summary.md`, `clearance_24v.md`, `diff_v56_v6.md`, `sch_pcb_sync.md`, `bom.csv`, `firmware_constants.csv`; firmware `src/fw/hbox_v5_bringup.ino`, `board_v5.h`. - Datasheets (fetched this session): - **LTC4040** Rev B (ADI `4040fb.pdf`): pin functions p.10–11; EC p.3–5 (ICHG 950/1000/1050 mA at RPROG 2k, VCLN 23.5/25/26.5 mV, VBSTFB 0.78/0.80/0.82 V, PFI 1.17/1.19/1.21 V falling with 30 mV hysteresis, RSTFB 0.74 V, NTC hot 34.9 %VIN / cold 76.5 %VIN, safety timer 4.25 h Li-ion, ILIMBST 5.5/6.5/7.5 A, IBATQ 40 µA, IINQ 570 µA); "2.5 A from a battery as low as 3.2 V" p.15; "external load prioritized … charge current drops to zero" p.13/16; RPROG = 2000 V/ICHG p.18; CSYS "at least 100 µF low-ESR ceramic" p.10, "≥75 µF transient" p.21; θJA 43 °C/W; overtemperature protection only (no charge-current thermal regulation), p.5 Note 2; layout p.22–23; abs max VIN 6 V steady / 7 V transient, VSYS/BAT/SW 6 V p.2; OVSNS "6.2 k to the connector if OVP used, else short to VIN" p.11. - **TPS54360B** (TI `tps54360b.pdf`): Vref 0.792/0.800/0.808 V; fSW = 92417·RT^-0.991 (162 k → 600 kHz); tON,min 135 ns; peak switch limit 4.5/5.5/6.8 A; EN 1.2 V, Ip 1.2 µA, Ih 3.4 µA, VIN UVLO 4.1–4.3 V; gmps 12 A/V, gmea 350 µS; compensation equations; 5 V/3.5 A example design (53.6k/10.2k, 13k/6.8 nF/39 pF, 8.2 µH, 2×47 µF ceramic, B560C, 2×2.2 µF/100 V); soft start 1024 cycles; θJA 42 °C/W; abs max VIN 65 V. - **AP64350** (Diodes DS41976 Rev 5-2): abs max VIN 42 V DC / 45 V 400 ms, EN 42 V; VIN 3.8–40 V; UVLO rising 3.5–3.7 V, hysteresis 400 mV; EN high 1.18–1.25 V / low 1.03–1.09 V, EN pull-up 5.5 µA; FB 792–808 mV; RT = 100000/fSW (200 k → 500 kHz); HS limit 4.25/5/5.75 A; tON,min 100 ns; Table 1 (5 V: 14.0 k/3.3 nF/47 pF, 5.5 µH, 2×22 µF); R5 = 4.67e3·fc·VOUT·COUT; θJA 45 °C/W. - **MP1584** (MPS Rev 1.0): abs max VIN 30 V, all other pins (EN, FB, COMP, FREQ) 6 V; VIN 4.5–28 V; EN rising 1.5 V/hysteresis 0.3 V; UVLO 3.0/2.6 V; FB 0.776/0.8/0.824 V; switch limit 4.0–4.7 A. - **AMS1117** (AMS `ds1117.pdf`): dropout 1.1 V typ/1.3 V max at 0.8 A; ground current 5/11 mA; output cap 22 µF tantalum; VOUT 3.251–3.399 V. - **A7670X series Hardware Design V1.03** (SIMCom, Table 8 p.26–27): VBAT 3.4/3.8/4.2 V; 2 A peak (GSM max-power TX); supply ≥ 2 A for < 300 mV drop; ≥ 300 µF bulk (≥ 600 µF if the supply cannot give 2 A); VBAT trace ≥ 3 mm; off leakage 20 µA; PWRKEY ≥ 50 ms, STATUS ~7 s; A7670SA includes GSM 850/900/1800/1900. - JLC DB (`get_jlcpcb_part` / `search_jlcpcb_parts`): C524806, C2071691, C15051, C6186, C51118, C15578, C840531, C5440143, C2827940, C165527, C88734, C88744, C116241, C881921, C206910, C206912, C206914, C20627123, C699039, C224019, C152082, C50603, C85100, C8678, C2624, C35349, C105362, C687163, C17700165, C17700167, C17700171, C153036, C440198, C86817, C15849, C138687, C28695, C22843, C22840, C25957, C23082, C23080, C99269. ## Findings ### A-01 24 V front end: the `/24V` branch is unfused and outside the D32 clamp, and it feeds parts rated 30 V / 42 V - **Severity:** Blocker - **Block / refs:** §4-A (input protection; lead "F2 only protects the U25 branch"); lesson F8; memory `drogheda-einarboard-v6-brief` (T9 "9–36 V in"), `drogheda-einarboard-short-incident`, `drogheda-power-cost` (MP1584 finding). - **Evidence:** - Topology (netlist): `P1.1 /24V_IN` splits into two branches. - Branch 1: `F2 (0154002.DR, 2 A fast) → /VIN_FUSED → Q23 IRFR5305 → /VIN_PROT` (D32 SMCJ33A, C149/C150/C151) → U25. - Branch 2: `Q10 IRFR5305 → /24V` = {C10 47 µF/50 V, C11, C22, Ren1, **U2.7 (MP1584EN VIN)**, **D20 → /VIN_MODEM → U20.2 (AP64350 VIN)**}. It has **no fuse**, and its only clamp is **D10 SMBJ33A** on `/24V_IN` (600 W, VC 53.3 V @ 11.3 A, C224019). D32 (1.5 kW) sits on branch 1 only. - Ratings on branch 2: - U2 MP1584EN: VIN operating 4.5–28 V, **abs max 30 V**. EN = /24V·20k/120k = 6.0 V at 36 V vs **EN abs max 6 V**. - U20 AP64350: **abs max 42 V** (45 V for 400 ms). - D21 PMEG3050EP (VRRM 30 V, leakage 8 mA @ 30 V per JLC) is reverse-biased by VIN_MODEM − MAIN5V = 36 − 0.45 − 4.79 ≈ **30.8 V at the 36 V spec limit** and ≈ 48 V during a D10 clamp event. - Standards: 24 V truck systems see 28–28.8 V charging, ISO 16750-2 overvoltage 36 V/60 min, and ISO 7637-2 pulse 2a (+112 V, 2 Ω, 50 µs). Pulse 2a through D10 gives ≈ (112 − 45)/2 ≈ 33 A, above its 11.3 A 10/1000 µs rating, with a clamp ≥ 53 V. U2 dies at the 36 V overvoltage test and U20 is over its 42 V abs max during pulse clamping. - Layout: the `/24V` branch is 1.5 mm on In1 at **0.15 mm** from the In1 GND pour and has a via **0.15 mm** from the B.Cu `/3V3` pour (`clearance_24v.md`). An inner-layer breakdown there is an unfused vehicle-battery short, or 24 V straight onto 3V3. - F2 sizing today: U25 input at 2.5 A/5 V is 0.60 A @ 24 V, 1.25 A @ 12 V and 1.67 A @ 9 V. The Littelfuse 154 continuous-current derating (~75 %, lower when hot) puts a 2 A fuse at its limit on a 12 V machine. - **Consequence:** (1) A short of C10/C22, U2, U20 or D22 (a U20 high-side short puts 24 V on VBAT_MODEM and SMAJ5.0A D22 crowbars it) draws vehicle-fuse current through 0.3–1.5 mm board copper. That is a fire and harness risk. (2) U2, and in pulses U20 and D21, are over their absolute maximum ratings on the v6 target supply (9–36 V, 24 V trucks). (3) This design also carries the V5.5 U2 exposure forward. - **Fix:** Make U25 the only consumer of vehicle voltage. Everything else then runs from protected 5 V. 1. **Fan from VEH5V, delete the 24 V fan buck.** DNP U2, L2, Dbk1, Cbst1, Rcomp1, Ccomp1, Rfreq1, Ren1, Ren2, R20, R21, and close JP1 (`/5V_FAN` = `/VEH5V`, upstream of RS1, so fan current is outside the LTC4040 limit). JP1 today is an *open* solder jumper: change the footprint to `Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm`, or fit a 0 Ω 0805. Fan current (assumed 0.2–0.3 A) adds to U25: ≤ 2.68 + 0.3 = 2.98 A vs 3.5 A rating and 4.5 A minimum current limit. Fan stays dark on battery, as today (ECO D4). This also retires the MP1584 cost item ($2.21 @100, C15051) and EMC items E3/E4 for U2. 2. **Modem buck input from MAIN5V only ("Option A").** Delete D20 and its 48 mm `/VIN_MODEM` run, and replace D21 with a copper bridge or 0 Ω link. U20 then never sees vehicle voltage. On battery its input rises from ~4.4 V to ~4.74 V (no 0.30 V diode drop; see A-05). On vehicle power the modem load (≤ 1.8 A peak at 5 V) becomes LTC4040 system load. The LTC4040 prioritises system load over charge current (datasheet p.13), and U25 is stiff: estimated 0.16 V dip for a 1.8 A step, against PFI rising max 4.66 V and U25 min 5.18 V with A-04. **Needs the modem auditor's agreement.** Option B, if the 24 V modem feed must stay: fuse and clamp as below and replace U20 with a ≥ 60 V synchronous buck, because the 42 V AP64350 cannot live behind a 53 V clamp. 3. **Q10 branch.** With (1) and (2) done, `/24V` has no loads. DNP Q10, DzG1, Rrp1, C10, C11, C22, and keep Q23 as the single reverse-polarity FET. 4. **F2.** Keep it on the (now only) branch. Rate it **3 A (0154003.DR, C206912, 2217 in stock)** for 24 V-only fleets, or **4 A (0154004.DR, C206914, 778 in stock)** if 12 V machines are in scope. Same holder footprint. Optional layout: put F2 ahead of D10 so a shorted TVS opens the board fuse. - Effort check: every item is a schematic change (DNP/value) plus one short re-route (D21 bridge). No new parts. - **Effort:** both (mostly schematic/BOM; D21 → bridge and removal of the D20 run are layout) - **Confidence:** high on topology and ratings (netlist plus datasheets). Medium on the Option A system impact until the modem auditor reviews it and a bench test runs U25 with a 2 A modem step. ### A-02 LTC4040 (U6) thermal copper and placement repeat lesson F5 (the H0008 slow-charge mechanism) - **Severity:** Blocker - **Block / refs:** §4-A (LTC4040 thermal); lesson F5; ECO §D2 / §E1–E2; memory `drogheda-einarboard-v5-audit` (SW_BAT 0.3 mm critical); H0008 log. - **Evidence (measured):** | Item | v6 now | Target | Result | |---|---|---|---| | `/SW_BAT` U6.21/22 → L6.1 | F.Cu **0.50 mm × 11.9 mm** plus 0.25/0.30 mm necks at the pins; R ≈ 12.2 mΩ | ≥ 2 mm polygon | ❌ (V5.5 was 0.3 mm; improved but 4× short) | | `/BAT_PLUS` P3.1 → L6.2 (battery current) | F.Cu **1.0 mm × 21.3 mm**, 10.4 mΩ | ≥ 1.5 mm + via farm | ❌ | | `/BAT_PLUS` L6.2 → U6.23 (BAT pin, sense-class) | 1.0/0.5/0.25 mm, 18.8 mm | Kelvin from L6.2/CBAT | ⚠ acceptable electrically | | U6 VSYS pins 1/24 → CSYS | 0.30 mm necks (1.5 mm) + 0.5 mm × 6.7 mm; C32/C33/C34 **3.9–5.3 mm** edge | pour, CSYS ≤ 2 mm | ❌ | | CSYS GND return | C32.2 on F.Cu island 16 (the U6 EP island); **C33.2 on island 3**; C34.2 on its own 2.2 mm² island with 1 via | same island as EP, via array | ❌ | | U6 EP (pad 25, 2.65 × 3.65 mm, solid zone connect) | **0 vias in EP**; nearest GND via **5.21 mm** (188.6, 102.7) | ≥ 9 vias to In1/In2 | ❌ | | EP copper | F.Cu GND island 16 = **252 mm²** with 5 GND vias. Within 6 mm of U6: F.Cu GND 33.7 mm², In1 GND split between islands 0/1 (cut by 7 `/VFB_BST` + `/IGATE` + `/CHRG_*` In1 segments), In2 GND 99 mm², B.Cu = /3V3 pour | solid planes under U6 | ❌ | | L6 distance | L6.1 ↔ U6.21/22 **8.65–9.10 mm** edge (10.7–11.1 ctr; footprints 15.25 mm) | ≤ 5 mm | ❌ | | VIN caps C30 10 µF / C31 2.2 µF → U6.6 | **7.2 / 6.2 mm** edge | < 3 mm | ❌ | | CBAT C35 22 µF | at P3 (192.0, 112.7): 5.2 mm from U6.23 but **21.9 mm** from L6.2 | at L6.2/BAT pin | ⚠ | | Temperature sensor ≤ 10 mm of U6 | **none**; nearest is U3 SHT40 at **71.4 mm** | ≤ 10 mm | ❌ (F-51) | - Trace temperature rise (IPC-2221 external, `/SW_BAT` 0.5 mm): charging at 2.42 A (R50 825 Ω) **+32 °C**; at 1.40 A (A-03) +9 °C; sustained backup at 3.6 A battery current (2.3 A at VSYS) **+79 °C**. The same current at 2.0 mm gives +8 °C. - IC dissipation estimate (assumption: charger efficiency ≈ 90 % at 2.4 A, IC share ≈ 75 %): - At 2.42 A: ≈ 0.75 W. As-built θJA ≈ 60–70 °C/W (the datasheet's 43 °C/W assumes a via array), so ΔTj ≈ 45–53 °C, before the 45 °C port ambient and enclosure rise. - At 1.4 A: ≈ 0.25–0.3 W, so ΔTj ≈ 18–21 °C. - The LTC4040 has **overtemperature shutdown only, with no charge-current thermal regulation** (datasheet p.5 Note 2). The H0008 pulsing (60–70 mV at 30 s) and the ~1.3 A average versus 2.42 A programmed are what on/off thermal cycling would produce. This is not yet proven: the clamp-meter and IR checks in the H0008 "Pendientes" 1–2 are still open. - **Consequence:** R5 (≥ 1.3 A without thermal cycling) is not met by layout. In continuous backup the boost node and the VSYS necks run hot. This repeats the V5.5 lesson. - **Fix (layout instructions, for Michelle):** 1. Re-cluster: L6 pad 1 ≤ 5 mm from U6.21/22. C32/C33/C34 ≤ 2 mm from VSYS pins 1/24, with GND pads on the EP island. C30/C31 ≤ 3 mm from pin 6. C35 (or an extra 22 µF 0805, C86817) at L6.2 next to BAT pin 23. 2. `/SW_BAT`: F.Cu polygon ≥ 2 mm wide covering pins 21–22 to L6.1, kept compact (it is the switch node). 3. `/BAT_PLUS` P3 → L6.2: ≥ 1.5 mm F.Cu (or a pour), plus ≥ 4 vias to an In2 copper area if routed inner. 4. `/MAIN5V`: pour from pins 1/24 over C32–C34 to the Q7 drain pads, ≥ 2 mm, with no 0.3/0.5 mm necks. 5. EP: 12 vias (3 × 4 at 0.9 mm pitch, 0.3 mm drill / 0.6 mm pad), plugged or capped (JLC via-in-pad). Or use the `QFN-24-1EP_4x5mm_P0.5mm_EP2.65x3.65mm_ThermalVias` footprint and add vias to reach ≥ 9. 6. Keep In1 and In2 GND solid for ≥ 5 mm around U6/L6: move the `/VFB_BST` and `/IGATE` In1 runs (see A-14). 7. Put the TMP102 from F-51 between U6 and L6. - **Effort:** layout - **Confidence:** high (measured from the board file). The OT-cycling causality stays medium until the H0008 clamp/IR test. ### A-03 R50 = 825 Ω programs 2.42 A. Set 1.43 kΩ to meet R5 at worst case - **Severity:** Blocker - **Block / refs:** §4-A (R50); lesson F4; ECO §C; R5; H0008 log; memory `drogheda-battery-hightemp`. - **Evidence:** - Datasheet: ICHG = 2000 V/RPROG (p.18), accuracy ±5 % (950–1050 mA at 2 k, p.3). - R50 825 Ω/1 % (C50214): **2.42 A** nominal (2.28–2.57 A). - V5.6 value 1.5 kΩ: 1.333 A nominal, **1.254–1.414 A** worst case, so the low corner is **below the R5 floor of 1.3 A**. - **1.43 kΩ: 1.399 A nominal, 1.316–1.483 A** worst case, which is ≥ 1.3 A at every corner. - H0008 (V5.5, same R50): ≈ 1.3 A average delivered, 8.5 h to C/8, pulsing charge (A-02). At 1.4 A the IC loss drops by (2.42/1.4)² ≈ 3×, and delivered current is about what H0008 actually got, without the cycling mechanism. Charge time for the ~11.6 Ah pack from ~3.5 V is ≈ 6–7 h (CC plus CV taper). The Li-ion safety timer (4.25 h, 3.7–5 h) only runs in CV (p.14), so it does not cut CC. - Input side: 1.4 A × 4.0 V/(0.9 × 5.3 V) ≈ 1.17 A plus ≈ 0.35 A logic gives 1.52 A, against the RS1 limit of 2.14–2.41 A effective (A-07). The charger stops being input-limited. - **Consequence:** At 825 Ω, v6 repeats the H0008 behaviour. U25 also sits at the RS1 limit (≈ 2.5 A continuous) whenever charging, which drives the A-06/A-07 thermal problems. - **Fix:** R50 → **1.43 kΩ 1 % 0603, LCSC C22840** (Extended; 4965 in stock in the DB snapshot). If Leo prefers V5.6 BOM commonality, use 1.5 kΩ (C22843, Basic), but R5 is then met only nominally. - **Effort:** schematic-only - **Confidence:** high for the numbers. Medium that thermal cycling is the whole H0008 story (pending the clamp test). ### A-04 U25 set-point 5.00 V (4.87–5.14 V) is incompatible with the charge governor. Set R121 = 57.6 k - **Severity:** Major - **Block / refs:** §4-A (U25 set-point); lesson F7; ECO §A/§C ("≥ 5.30 V"); `firmware_constants.csv` (CHG_RAIL_ON 5.05, CHG_RAIL_OFF 4.90, V5_PFI 4.60). - **Evidence (Vout = Vref·(1 + R121/R122), Vref 0.792/0.800/0.808 V, resistors 1 %):** | R121 / R122 | min | nom | max | vs CHG_RAIL_ON 5.05 | vs LTC4040 VIN max 5.5 | |---|---|---|---|---|---| | 53.6 k / 10.2 k (as-is) | **4.871** | **5.004** | 5.140 | nominal below the start line: charger never (or randomly) enabled | ok | | 56.2 k / 10.2 k | 5.069 | 5.208 | 5.350 | low corner 0.02 V above | ok | | **57.6 k / 10.2 k** | **5.176** | **5.318** | **5.463** | ≥ 0.13 V above | 37 mV margin | | 57.6 k / 10.2 k, 0.1 % resistors | 5.256 | 5.318 | 5.380 | ok | 120 mV margin | - LTC4040 PFI from v6's R51 270 k / R52 100 k at 1.19 V: **falling 4.27/4.40/4.54 V, rising 4.38/4.51/4.66 V**. The firmware constant V5_PFI 4.60 V is stale (it comes from the old 287 k). - As-is margin U25 min → PFI rising max = 0.21 V. With 57.6 k: 0.52 V. - The ADC measures 5V_SENSE (R7/R8 10 k/10 k) against VDDA = the 3V3 LDO (±1.5 %, and lower on battery, A-08). Firmware thresholds carry ±2–3 % error unless calibrated with VREFINT. - With the as-is topology the modem does not load VEH5V (it runs from /24V), so the V5.5 LTE-sag argument is gone on vehicle power. It comes back if A-01 Option A is adopted. - **Consequence:** With FW 0.6.0 thresholds, v6 as-is will not start charging on most units, so R5 fails. The margins are thin under modem bursts if the modem moves to MAIN5V. - **Fix:** R121 → **57.6 k 1 % 0603, LCSC C23082** (Extended; 3673 in stock in the DB snapshot). Optionally specify R121/R122 at 0.1 % to take the upper corner to 5.38 V. In firmware v6 (FW 0.7.x), calibrate the ADC against VREFINT and set V5_PFI = 4.40 V. - **Effort:** schematic-only (plus firmware constants) - **Confidence:** high ### A-05 Backup mode: worst-case load reaches 93–97 % of the LTC4040 boost capability during a 2 A modem burst; W5500 always powered; U20 input weakly bypassed - **Severity:** Major - **Block / refs:** §4-A (backup path, budget); lessons F1/F2; ECO §A, §I-1; R1, R3; memory `drogheda-einarboard-modem-rail`, `drogheda-backup-lowpower`; modem-on-battery diagnosis. - **Evidence:** - **What stays alive on battery (netlist):** - `BAT → L6 → U6 boost → /MAIN5V`. Backup VSYS = 0.8·(1 + 499k/100k): **4.60/4.79/4.99 V** (VBSTFB 0.78–0.82 V). R53 must stay at 499 k because the 5.0 V limit sits at the top corner. - From MAIN5V: (a) **D21 → /VIN_MODEM → U20 → modem** (D21 anode is *before* P5, so the cutoff switch does not cut this path; EN is held low by R113 when the MCU is unpowered). (b) **P5 (cutoff) → /SYS5V** → D12 → U17 (3V3: MCU and all logic), **U12 (3V3_ETH, EN tied to VIN → always on)**, F1 → Q1 (PWR_CTRL) → U21 → F9P, K1 coil (BYP_CTRL). - `/VIN_MODEM` falls to MAIN5V − Vf(D21) once 24 V is gone. There is no separate "D21/MAIN5V" rail. - **LTC4040 boost:** 2.5 A load from battery ≥ 3.2 V; switch limit 5.5 A min (p.4, p.15). It runs only when PFI < threshold (p.13). BAT quiescent 40 µA. - **CSYS:** C32/C33 47 µF/16 V X7R 1210 plus C34 10 µF/50 V 0805 = 104 µF nominal, which meets the 100 µF text. Effective at 4.8 V ≈ 59 µF (assumed DC-bias loss −40 % / −40 %), below the 75 µF transient guidance (p.21). - **U20 input (A7670 needs a 2 A-capable supply, HD Table 8):** C127 10 µF/50 V 0805 + C128 1 µF only. The V5.6 ECO specified 2×22 µF + 10 µF. - **U20 UVLO:** falling ≈ 3.1–3.3 V against VIN_MODEM ≥ 4.2 V on battery, so ≈ 1 V margin (V5.5 had 0.1 V). **The V5.5 failure mechanism is fixed**, and the residual risk is boost current limit. - **Worst-case current budget.** Assumptions: - Logic (3V3): 90 mA typ, 120 mA worst including 4 gauge LEDs, plus AMS1117 Iq 5 mA. - F9P (3V3_GNSS): 100 mA cold, 85 mA steady, including LNA (u-blox ~68 mA typ). - W5500: 132 mA at 3.3 V (100BASE-TX), through U12 at η 0.85. - K1 coil: 30 mA (G5V-1 5 VDC, 167 Ω). - Modem VBAT: 2.0 A GSM peak (HD Table 8). LTE TX average assumed 0.7 A (HD table is TBD). Idle 20 mA. R112 bleeder 3.8 mA. - Efficiencies: U20 0.88, U25 0.87, boost 0.88. Battery 3.5 V. **On 24 V (as-is topology, charging with R50 825 Ω / with 1.43 k):** | Rail | Cold start | Steady | Modem TX burst | |---|---|---|---| | /3V3 (U17 out) | 0.120 A | 0.090 A | 0.090 A | | /3V3_GNSS | 0.100 A | 0.085 A | 0.085 A | | /3V3_ETH | 0.132 A | 0.132 A | 0.132 A | | /VBAT_MODEM | 2.0 A pk (0.3 A avg) | 0.024 A | 2.0 A pk | | /VIN_MODEM @ 23.5 V (from /24V) | 0.37 A pk | 0.005 A | 0.37 A pk | | /24V (+ fan 0.2 A @ 5 V via U2) | 0.42 A | 0.05 A | 0.42 A | | /SYS5V | 0.35 A | 0.31 A | 0.31 A | | /VEH5V (U25 out; charger held off 120 s at boot) | 0.36 A | **2.50 A (RS1-limited) / 1.48 A** | 2.50 / 1.48 A | | /VIN_PROT @ 24 V | 0.09 A | 0.60 / 0.38 A | 0.60 / 0.38 A | | P1 total @ 24 V | 0.50 A | 0.65 / 0.43 A | **1.02 / 0.80 A** | | P1 total @ 9 V (12 V vehicle low) | — | 1.73 / 1.1 A | **2.8 / 2.2 A** | **On battery (as-is topology; VSYS 4.79 V; VIN_MODEM ≈ 4.4 V after D21):** | Rail | Cold start (all on, modem registering) | Steady (registered, idle) | GSM TX burst | LTE TX | |---|---|---|---|---| | /VIN_MODEM | 1.96 A pk | 0.024 A | 1.96 A pk | 0.69 A | | /SYS5V (logic + F9P + W5500 via U12 + K1) | 0.36 A | 0.32 A | 0.32 A | 0.32 A | | **/MAIN5V = boost load** | **2.33 A (93 % of 2.5 A)** | 0.34 A | **2.28 A (91 %)** | 1.01 A (40 %) | | same at the VSYS low corner 4.60 V (VIN_MODEM 4.2 V) | **2.43 A (97 %)** | 0.34 A | 2.38 A (95 %) | 1.04 A | | Battery current (VSYS·I/(3.5 V·0.88)) | 3.62 A | 0.53 A | 3.55 A | 1.57 A | | with fixes below + FW sequencing (W5500 off, K1 off, F9P deferred, D21 bridged) | **1.95 A (78 %)** | 0.15 A | 1.95 A | 0.85 A | | with fixes + LTE-only on battery (peak ≈ 1 A assumed) | ≈ 1.2 A (48 %) | 0.15 A | — | 0.85 A | - **Consequence:** As-is, a cold modem registration (or a GSM burst) with everything else on uses 93–97 % of the boost rating, with no allowance for bursts above 2.0 A or a hot, aged pack. Hitting the limit droops VSYS: U17 drops out first (A-08), then U20 → VBAT_MODEM < 3.4 V. That is the V5.5 "modem dark on battery" symptom through a different mechanism. **R1/R3 are not robust on hardware as-is. They are achievable with firmware sequencing (mandatory) plus the fixes below.** Without U12 gating, W5500 alone costs ≈ 0.5 W continuous on battery, against a 20–50 mW duty-cycle sleep target. - **Fix:** 1. **U12 EN (pin 2)** off `/SYS5V` onto a new net `/ETH_PWR_EN` from **PD2 (pad 54, free)**, with **100 k to GND** (C25803). MP1584 EN threshold 1.5 V and abs max 6 V are compatible with 3.3 V drive. Default OFF. (E auditor: W5500 reset/strap implications.) 2. **CSYS:** add 2 × 47 µF 16 V X7R 1210 (**C5440143**) at U6 VSYS pins 1/24 (≈ 113 µF effective). 3. **U20 input:** with A-01 Option A (5 V input), add 2 × 22 µF 16 V 0805 (**C86817**) ≤ 3 mm from U20.2, GND to U20.7/EP, plus 1 × 220 µF 16 V polymer (**C881921**) at `/VIN_MODEM`. If the 24 V feed stays (Option B), use 50 V parts (e.g. 2 × 10 µF 50 V 1210 **C138687**). 4. **D21:** replace with a bridge (Option A), which removes 0.30 V and lowers U20 input current by ≈ 7 %. 5. **MAIN5V from U6 to U20:** ≥ 1.5–2 mm the whole way (today 0.3/0.5 mm necks and 60 mm; A-07). 6. **Firmware sequencing** (see firmware section): mandatory. - **Effort:** both - **Confidence:** medium. Datasheet limits are firm. Load currents for the modem (LTE average), F9P and fan are assumptions. Raise confidence with the ECO §I-1 bench test: MAIN5V and VIN_MODEM scope during a battery-only cold start at VBAT 3.5 V, plus a current probe on `/BAT_PLUS`. ### A-06 Switcher hot loops and exposed-pad grounding: loops close through inner planes via distant vias; no EP vias on any regulator - **Severity:** Major - **Block / refs:** §4-A ("input/output cap distance < 3 mm", compensation/BST); ECO §E4; Review §2 "Switcher EP vias"; datasheets TPS54360B/AP64350 layout sections. - **Evidence:** - Board-wide there are **69 GND vias** (8 in the SE power quadrant x > 150, y > 85). The F.Cu GND pour is split into **71 islands** (stored fill). The EP-pad zone connection defaults to *thermal* (0.5 mm spokes) except U6.25 and U2.9, which are solid. | Reg | Cin → VIN pin (edge) | Cin GND ↔ return (diode anode / GND pin) | EP vias / nearest GND via | Other | |---|---|---|---|---| | **U25** TPS54360B | C150 **2.88 mm** ✅, C149 6.37 mm | C149.2/C150.2 on **island 16**, D34.2 + U25 EP on **island 3** (3006 mm², only 3 vias at (145.7, 129.9), (148.1, 135.3), (198.8, 78.1): **≥ 30 mm** from U25). The input loop closes through In1/In2 via ≥ 11 mm and ≥ 30 mm detours. | **0 / 14.4 mm**; EP thermal-relief | D34 4.28 mm from SW; **L22 17.0 mm** from SW (`/SW_PWRIN` 20.4 mm at 1 mm); BST C152 1.49 mm ✅; FB/COMP/RT 1.0–2.9 mm ✅ | | **U20** AP64350 | C128 0.72 mm, C127 2.38 mm ✅ | C127.2/C128.2 → U20.7 **6.9/8.5 mm**; EP on a different island (3) from pin 7 (island 20) | **0 / 5.15 mm**; EP thermal-relief | L20 2.24 mm ✅; BST 1.8 mm ✅; COMP 0.7/2.2 mm ✅; FB 3.2/4.1 mm | | **U2** MP1584 (fan) | C22/C10/C11 **17.0–20.8 mm** ❌ | C22.2 ↔ Dbk1.2 11.7 mm | **0 / 19.7 mm** | Dbk1 6.5 mm, L2 11.9 mm from SW; FB divider R20/R21 **0.67/1.48 mm** ✅ (ECO E3 fixed) | | **U12** MP1584 (3V3_ETH) | C101 6.40 mm | C101.2 (island 41, 0 vias) ↔ D11.2 (island 40) 14.9 mm; U12.5/U12.9 on island 39 (21 mm², **0 vias**) tied by **0.2 mm** GND tracks | **0 / 6.4 mm** | D11 11.9 mm, L8 15.1 mm from SW; Cout C102/C103 28–36 mm; FB top R87 24 mm | - **D34 (B560C) thermal:** average current (1 − D)·Io ≈ 0.78 × 2.5 = 1.95 A → ≈ 1.0 W at 24 V. The GND pad has thermal-relief spokes and the cathode sits on a 1 mm SW trace. Estimated +75–100 °C over local ambient at full load, which approaches Tj max 150 °C in a 45 °C box. It drops to ≈ 0.55 W with A-03. - U25 IC loss ≈ 0.5–0.75 W (24–36 V) with no EP vias. - **Consequence:** For U25, SW-node and VIN-pin ringing and conducted/radiated EMI from a non-sync buck switching 2.5 A at 24–36 V. Ringing adds on top of the 53 V TVS clamp relative to the 65 V SW/VIN abs max. Poor regulator and diode thermals. For U12, a broken hot loop next to the Ethernet magnetics. U2 loses its local input bypass (MP1584 VIN abs max 30 V). U2 disappears if A-01 fix 1 is taken. - **Fix:** - **U25:** place C149/C150 ≤ 2 mm from pins 2/7 with their GND on the same F.Cu copper as D34.2 and the EP. D34 ≤ 3 mm from pin 8. L22 ≤ 5 mm from pin 8, SW copper ≤ 1.5× pad area. EP: 8 vias (4 × 2, 0.3/0.6 mm) and `zone_connect` solid on pad 9. D34 GND pad solid to ≥ 150 mm² F.Cu GND with ≥ 6 vias. - **U20:** C127/C128 GND ≤ 2 mm to pin 7/EP. EP 8 vias, solid zone connect. - **U12:** Cin C101 ≤ 3 mm with GND next to pin 5. D11 and L8 ≤ 4 mm from pin 1. EP ≥ 6 vias. Replace the 0.2 mm GND ties with pour. - **Stitching:** GND vias every ≤ 5 mm around each regulator and on both sides of each hot loop. (Layout auditor F owns board-wide stitching.) - **Effort:** layout - **Confidence:** high on the geometry. Medium on the island picture because it depends on stored fills: refill, then re-run `islands.py`. ### A-07 5 V power-path bottlenecks: VEH5V and VIN_SW run the full LTC4040 input current on inner 0.5/0.8 mm tracks - **Severity:** Major - **Block / refs:** §4-A; DRC `track_width` (183 warnings, T15 rules); lead "netclass patterns match no net". (A separate issue: the `24V`/`IGN_IN`/`Q10_GATE` patterns resolve nothing. Layout auditor owns clearance.) - **Evidence (widest path, `path.py`):** | Path | Bottleneck | Length / R | Current | IPC-2221 ΔT | Action | |---|---|---|---|---|---| | `/VEH5V` L22.2 → RS1.1 | **In1 0.5 mm × 13.6 mm** | 24.8 mm / 18.9 mΩ | 2.5 A (charging, as-is) / 1.5 A | **+168 °C / +52 °C** (internal; IPC-2152 ≈ half) | ❌ widen | | `/VIN_SW` RS1.2 → Q7.1–3 | **In2 0.8 mm × 23.6 mm** | 26.0 mm / 15.9 mΩ | 2.5 A | +77 °C internal | ❌ | | `/MAIN5V` Q7 → U6.24 / C32 | F.Cu 0.5 mm × 13.3 / 6.6 mm | 23 / 15 mΩ | 2.2 A (charger in) / 2.4 A (backup) | +26 / +32 °C | ❌ | | `/MAIN5V` U6.1 → C32 | **0.30 mm** neck 1.5 mm | 12 mΩ | 2.4 A | +73 °C (short neck) | ❌ (A-02) | | `/MAIN5V` Q7 → D21 (modem, battery) | 1.0 mm (In2 6.8 mm) | 40 mm / 20 mΩ | 2.0 A | +12 °C | ⚠ widen to ≥ 1.5 mm | | `/VIN_MODEM` D21 → U20.2 | 0.5 mm × 5.8 mm | 5.7 mΩ | 2.0 A | short | ⚠ ≥ 1 mm | | `/BAT_PLUS` P3 → L6 | 1.0 mm × 21.3 mm | 10.4 mΩ | 3.6 A backup peak / 2.42 A | +25 / +10 °C | (A-02) | | `/VIN_PROT` Q23 → U25.2 | 0.5 mm × 9.8 mm | 13.5 mΩ | 0.6 A @ 24 V, 1.7 A @ 9 V | +14 °C @ 9 V | ok for 24 V | | `/24V_IN` P1 → Q10 | In1 1.5 mm | 12.4 mΩ | ≤ 1.0 A (24 V) | small | ok | | `/SW_BAT` | see A-02 | | | | | | `/3V3_ETH`, `/SW_5V`, `/SW_IN`, `/SYS5V`, `/5V_FAN`, `/FAN_RET`, `/SW_FAN` | 0.25–0.5 mm (DRC-flagged) | | ≤ 0.4 A | < 5 °C | ok (DRC hygiene only) | - **RS1 Kelvin:** the CLN sense (U6.7) taps at the via (183.91, 104.21), **1.66 mm down the 0.8 mm trace** from the RS1.2 pad (+1.0 mΩ in the sense loop). The effective input limit is 25 mV/11 mΩ = 2.27 A typ (**2.14–2.41 A**) instead of 2.35–2.65 A. That is harmless (more conservative) but unintended. - **Consequence:** Hot inner copper under U6/Q7 at charge current, extra drop, and the 2.5 A input path sharing heat with the U6 area. - **Fix:** Put `/VEH5V` from L22.2 to RS1.1 on F.Cu ≥ 2 mm (or a pour) and move L22/C153/C154 toward RS1, or use ≥ 2 mm inner with ≥ 4 vias per transition. Put `/VIN_SW` on F.Cu ≥ 2 mm and move Q7 within 5 mm of RS1/U6. For `/MAIN5V`, see A-02, and run ≥ 1.5 mm to D21/U20. Route the U6.7 CLN and U6.6 VIN sense traces from the inner edges of the RS1 pads (Kelvin). Fix the netclass patterns (prefix `/`) so the T15 widths become rules instead of warnings. - **Effort:** layout - **Confidence:** high ### A-08 U17 AMS1117-3.3 drops out on battery and sets a 25–55 mW sleep floor - **Severity:** Major - **Block / refs:** §4-A ("dropout for the LDOs at the backup voltage"); memory `drogheda-backup-lowpower` (AMS1117 = #1 sleep-floor suspect); R1. - **Evidence:** - `LDO_IN = SYS5V − Vf(D12 SS34 ≈ 0.30–0.35 V at 0.1 A)`. On battery SYS5V ≈ VSYS 4.60–4.99 V minus ≈ 0.02 V, so **LDO_IN ≈ 4.25–4.65 V**. - AMS1117 dropout: 1.1 V typ / 1.3 V max at 0.8 A, ≈ 1.0 V at 0.1 A, so it needs ≈ 4.3–4.4 V. At the low boost corner, and during every boost-limited dip (A-05), 3V3 sags by ≈ 50–150 mV. - VDDA = 3V3 via R104 10 Ω. The firmware assumes ADC_REF = 3.3 V, so BAT_SENSE/5V_SENSE read up to +4 % high. The 3.40 V low-battery cut then trips at ≈ 3.27 V real. The NTC channels (R42/R126 from 3V3) are ratiometric and unaffected. - Ground current is **5 mA typ / 11 mA max** (25–55 mW at 5 V). - The datasheet asks for a 22 µF tantalum output cap. The /3V3 rail is all ceramic (C118 22 µF 0805 plus many 100 nF), which is a stability question for genuine AMS1117 parts. - **Consequence:** Degraded 3V3 exactly when running on battery, wrong battery-voltage telemetry, and a duty-cycle sleep floor already as large as the whole 20–50 mW target. - **Fix:** U17 → **TI TLV1117LV33DCYR, LCSC C15578** (SOT-223, same 1-GND/2-OUT/3-IN pinout and footprint; 1 A; dropout 455 mV at 1 A, ≈ 0.1 V at 0.15 A; IQ ≈ 100 µA; ceramic-stable; VIN max 5.5 V vs LDO_IN max ≈ 5.3 V with A-04). **Do not use** C48937499: it is listed under the same MPN but its spec (1.2 V dropout, 12 V) is the wrong die. Firmware: VREFINT calibration anyway. - **Effort:** schematic-only (value/LCSC; same footprint) - **Confidence:** high (AMS1117 numbers). Medium for TLV1117LV at 0.1–0.15 A: check the TI dropout curve during sourcing. ### A-09 Aluminium electrolytics: 85 °C/2000 h parts on the 5 V and modem rails (≈ 1-year life in a port box); modem bulk also over its ripple rating - **Severity:** Major - **Block / refs:** §4-A (Cout type/ESR); ECO §A (220 µF polymer); cross-ref modem auditor (C130/C131). - **Evidence:** - C78 (VEH5V bulk), **C130, C131** (VBAT_MODEM bulk) = C2827940 SamYoung MVG 16 V 220 µF, **−40…+85 °C, 2000 h @ 85 °C, 130 mA @ 120 Hz ripple**. - C10 (/24V) = C165527 MVK 50 V 47 µF, **105 °C/1000 h**. - C3 = C88734 and C103 = C88744: Rubycon TZV, 105 °C/2000 h. - C151 = C116241: Nichicon UUD, 105 °C/5000 h ✅. - 10 °C-rule life at 65 °C local (45 °C ambient plus enclosure/board rise, assumption): MVG ≈ 8,000 h (**0.9 y** of 24/7). MVK ≈ 16,000 h. TZV ≈ 32,000 h. UUD ≈ 80,000 h. - C130/C131 take the modem's GSM/LTE burst edges (2 A, 577 µs, 217 Hz). Ripple current exceeds the 130 mA rating, so self-heating shortens life further. - **Consequence:** Bulk capacitance and ESR drift within the first year. That affects the U20 loop (A-17), modem brown-out margin (HD: ≥ 300 µF) and U25 transient response. - **Fix:** C78, C130, C131 → **Lelon OVZ221M1CTR-0608 220 µF 16 V polymer, C881921** (same 6.3 × 7.7 can; 105 °C/2000 h, polymer ≈ ×10 per −20 °C, so > 100,000 h at 65 °C). C10 is removed by A-01; otherwise use a 105 °C ≥ 5000 h part. After the swap, re-check U20 compensation (A-17), because polymer ESR moves the ESR zero from ≈ 2.4 kHz to > 15 kHz. - **Effort:** schematic-only (same footprints) - **Confidence:** medium (lifetime model plus assumed local temperature). High on the part ratings. ### F-51 No charger-die or cell temperature reaches the MCU; the firmware thermal inhibit has no source on v6 (R4) - **Severity:** Major - **Block / refs:** §4-F (temperature sensors), §4-A (sensor ≤ 10 mm of U6); ECO §D2/§D3/§D5; lesson F5/F6; firmware `CHG_CELL_HOT_C 45 / CHG_CELL_COOL_C 40` ("TMP102 on the cell"); memory `drogheda-fan-policy` (thermalCtlTemp ignores the NTC), `drogheda-battery-hightemp`. - **Evidence — every temperature source on v6:** | Sensor | Ref / net | Position (mm) | MCU pin / ADC | Distance to U6 (187.0, 107.7) | Notes | |---|---|---|---|---|---| | Board air + RH | U3 SHT40-AD1B (I²C 0x44) | (122.4, 77.3) | PB6/PB7 I²C1 | **71.4 mm** | 52 mm from U19, 28.8 mm from U20 | | MCU die | U16 internal | (120.7, 67.4) | ADC1_IN16 (TS_CAL1/2 used) | 77 mm | | | External probe 1 | P7 NTC-HOTSPOT → `/NTC_TEMP`, R42 10 k to 3V3, C24 100 nF | (109.75, 44.0) | **PB1 = ADC1_IN9** | ~100 mm | jack only | | External probe 2 | P8 NTC-PROBE-2 → `/NTC2`, R126 10 k to 3V3, C157 | (133.0, 44.0) | **PC4 = ADC1_IN14** | ~83 mm | jack only | | Pack NTC | P3.3 → `/NTC` → **U6.17 only** (R55 10 k from VEH5V) | (196.0, 110.5) | **none** | — | LTC4040 window: hot pause **42.4 °C**, resume 40.1 °C, cold −3.1 °C (B3380); 39.7/37.9/0.6 °C (B3950) | | Modem die | A7670SA internal (AT) | (174.3, 72.0) | USART6 (AT) | — | firmware-only (F-53) | | Accelerometer | U26 SC7A20 (has a temperature output, low accuracy) | — | I²C | — | not a thermal sensor | | TMP102 | **absent** (V5.x U4 and the V5.6 U18 TMP102 were deleted in v6 T10) | — | — | — | | - Free MCU ADC pin: only **PC5 (pad 25, ADC1_IN15)**. Free digital pins: PB10, PA9, PD2. - **Consequence:** CHG_CELL_HOT/COOL (45/40 °C) have no cell sensor unless an installer tapes P7 to the pack. There is no charger-die visibility, so the A-02/H0008 cycling is invisible in telemetry. R4 is not met in firmware. (The cell is still protected in hardware by the LTC4040 NTC pause.) - **Fix:** 1. **Charger temperature:** TMP102AIDRLR **C99269** (SOT-563) placed between U6 and L6, ≤ 5 mm from the U6 EP, on I²C1 at **0x48** (ADD0 → GND; confirm the U10 SC16IS752 strap stays at 0x4D), with 100 nF C14663. 2. **Cell temperature to the MCU:** tap `/NTC` into **PC5** through 100 k (top, C25803) / 120 k (bottom) + 10 nF. PC5 ≤ 0.545·5.46 V = 2.98 V. The 220 k load shifts the LTC4040 hot threshold by < 0.6 °C. Firmware computes Rntc = R55·Vntc/(VEH5V − Vntc), using PA4 for VEH5V; it is valid whenever VEH5V is present, which is when charging is possible. 3. Firmware: `tchg`, `tcell` appended to `$PHLG`. The governor inhibits on tcell (Li-ion 45 °C / LFP 55–60 °C) and on tchg (e.g. > 85 °C shed). - **Effort:** both (2 parts plus 3 passives; place the TMP102 in the A-02 re-cluster) - **Confidence:** high ### A-10 No over-voltage protection on VEH5V now that the 5 V source is a non-isolated on-board buck - **Severity:** Minor - **Block / refs:** §4-A (input protection); LTC4040 p.11 (OVSNS); memory `drogheda-power-cost` ("galvanic isolation lost"). - **Evidence:** - U6.16 OVSNS is tied straight to `/VEH5V`, so the OVP feature is not used (datasheet: short OVSNS to VIN when OVP is not used). - A TPS54360B high-side short puts `/VIN_PROT` (24–36 V) on VEH5V. LTC4040 VIN abs max is 6 V steady / 7 V transient, and Q7 then passes it to MAIN5V → SYS5V → U17/U21/U12/U20. - V5 used the isolated SD-15B, so v6 adds this failure mode. - **Consequence:** A low-probability single-point failure destroys the whole board (F9P $85, modem, MCU). - **Fix (pick one):** (a) use the LTC4040 OVP arrangement per the datasheet OVP application: OVSNS through 6.2 kΩ from the U25 output node, plus the series N-FET (≥ 40 V V_DS) the application shows. Verify the topology against the datasheet figure before committing. (b) Minimum: a 1.5 kW 5 V TVS (SMCJ5.0A class) on VEH5V as a crowbar that forces F2 open. This is imperfect, because VEH5V can exceed 7 V for the fuse's melt time. - **Effort:** schematic + small layout - **Confidence:** medium (topology of the datasheet OVP figure not fully extracted) ### A-11 CHGOFF (PA8) has a pull-DOWN: the charger runs at full programmed current whenever the MCU is not driving the pin - **Severity:** Minor - **Block / refs:** §4-A (EN default states); LTC4040 p.10 ("CHGOFF: GND = enable, > 1.2 V = disable"); firmware line 356 ("HIGH = charge OFF"). - **Evidence:** R56 100 k from `/CHRG_EN` to GND. During MCU reset, DFU, boot and unflashed boards, CHGOFF = 0, so the charger is enabled with no governor or thermal inhibit (2.42 A with R50 as-is). This contradicts the board's own policy that MODEM_EN (R113) and PWR_CTRL default OFF while the MCU is not in control. - **Consequence:** An uncontrolled charge during DFU or boot loops. It is bounded by the LTC4040 input limit and NTC window, so there is no damage. - **Fix:** R56 → 100 k from `/CHRG_EN` to **/3V3** (C25803, same footprint re-netted), so the default is charge OFF. On battery the charger is inactive anyway. - **Effort:** schematic + one-track layout - **Confidence:** high ### A-12 Q5 base floats during MCU reset: the F9P rail (Q1/U21) is not guaranteed OFF - **Severity:** Minor - **Block / refs:** §4-A (EN defaults); firmware "PWR_CTRL LOW = stack OFF". - **Evidence:** `/BASE_LS` = {R1.2, Q5.1} only; `/PWR_CTRL` = {U16.15, R1.1}. The STM32 pins are floating inputs during reset. Datasheet-max pin leakage (1 µA) × hFE ≈ 100–300 µA into R2 10 k gives 1–3 V Vgs on the AO3401A, so partial turn-on is possible (typical leakage is nA, so it is benign in practice). - **Fix:** add 47 k 0603 from `/BASE_LS` to GND (Basic 0603 1 %). - **Effort:** schematic + small layout - **Confidence:** medium ### A-13 PFO goes only to TP2 (and CLPROG only to TP1): no hardware power-fail interrupt to the MCU - **Severity:** Minor - **Block / refs:** §4-A (CHRG/FAULT/PFO); LTC4040 p.11. - **Evidence:** `/PFO_TP` = {U6.20, TP2}. Firmware detects backup by polling 5V_SENSE (V5_OFF 3.80 V), but the LTC4040 has already switched to backup at PFI 4.40 V. `/CLPROG_TP` = {U6.3, TP1}: this is the VSYS current monitor, V = 32·(VIN − CLN), i.e. 0.8 V at the 2.5 A limit. - **Consequence:** Tens of ms late on backup entry, and the firmware cannot shed the modem/K1/W5500 before the boost takes the full load. Input current is not measurable in telemetry. - **Fix:** route `/PFO` to **PB10 (pad 29, EXTI10)** with 100 k to /3V3 (3V3 stays up on battery). Optional: CLPROG → an ADC pin through 1 MΩ (datasheet recommends isolation, PROG-side ≤ 40 pF). No ADC pin is left if F-51 takes PC5, so CLPROG is a Note. - **Effort:** schematic + layout (two tracks) - **Confidence:** high ### A-14 BSTFB divider 21–24 mm from U6 (feedback net 41 mm, 5 vias, cutting In1 under U6); IGATE 43 mm unguarded - **Severity:** Minor - **Block / refs:** §4-A (BSTFB); LTC4040 layout p.22–23 (guard IGATE with VSYS copper). - **Evidence:** R53.2 → U6.18 **21.4 mm** edge, R54.1 **24.0 mm**. `/VFB_BST` is F.Cu 16.8 mm + In1 24.4 mm with 5 vias; 7 of its In1 segments lie inside a 6 mm radius of U6, splitting In1. `/IGATE` is F.Cu 6.0 mm + In1 37.0 mm, with Q7.4 ↔ U6.15 at 23.2 mm. The IGATE charge pump has µA-class drive, so leakage in a humid port box can partially enhance Q7. Its body diode at 2.5 A dissipates ≈ 1.2 W. - **Fix:** R53/R54 ≤ 3 mm from pins 18/10, with the top leg Kelvin-tapped at the CSYS pads and the net on F.Cu. Q7 ≤ 5 mm from U6.15 with IGATE ≤ 8 mm on F.Cu, flanked by MAIN5V copper. - **Effort:** layout - **Confidence:** high (geometry). Medium (consequence). ### A-15 U25 footprint carries a second property `LCSC Part` = C2071691 (AP64350, pin-compatible) - **Severity:** Minor - **Block / refs:** §4-H cross-ref; `sch_pcb_sync.md`; INDEX gotcha 7. - **Evidence:** U25 `LCSC` = C524806 (TPS54360B), `LCSC Part` = C2071691. The TPS54360B pinout (1 BOOT, 2 VIN, 3 EN, 4 RT/CLK, 5 FB, 6 COMP, 7 GND, 8 SW) is **identical** to the AP64350 pinout. If a BOM tool picks `LCSC Part`, the boards assemble and run, but with a **42 V-rated** part behind a 53 V clamp and the wrong compensation. That is a latent field failure nobody would notice at test. - **Fix:** delete the `LCSC Part` property from U25 (PCB and schematic). - **Effort:** schematic-only - **Confidence:** high ### F-52 Modem temperature: no on-board sensor near U19 (ECO D3 dropped) - **Severity:** Minor - **Block / refs:** §4-F; ECO §D3 (TMP102 #2 at the modem); R4. - **Evidence:** The nearest board sensor to U19 is U3 at 52.1 mm. The only modem temperature path is AT over USART6. SIMCom A76xx has `AT+CPMUTEMP`; availability on A7670SA firmware is not verified. That path also works only while the modem is powered and responsive. - **Fix:** either firmware-only (poll `AT+CPMUTEMP` into a `$PHLG` `tmodem` field) or a second TMP102 C99269 at **0x49** (ADD0 → 3V3) between U19 and U20. The latter is cheap and independent of modem state. - **Effort:** firmware-only, or schematic + layout - **Confidence:** medium ### A-16 U25 EN/UVLO divider DNP: U25 runs from 4.1–4.3 V - **Severity:** Note - **Evidence:** R124 523 k / R125 84.5 k DNP. EN floats (1.2 µA pull-up), so the internal UVLO is 4.1–4.3 V rising with 325 mV hysteresis. Populating them gives a start of ≈ 8.0 V and a stop of ≈ 5.5 V (TI equations with Ip 1.2 µA, Ih 3.4 µA). Between ≈ 4.3 V and 5.8 V input, VEH5V sits in dropout inside the PFI band (4.27–4.66 V), so the LTC4040 toggles backup (hysteresis 0.11 V). This only matters for 12 V vehicles under crank. - **Fix (optional):** populate R124 523 k/1 % and R125 84.5 k/1 % (Basic 0603, pick LCSC in sourcing) if 12 V machines are in scope. - **Effort:** schematic-only - **Confidence:** medium ### A-17 U20 compensation is the AP64350 5 V table set (14 k / 3.3 nF / 47 pF, 500 kHz) applied at 3.8 V - **Severity:** Note - **Block / refs:** §4-A; V5.6 change report §6.1; Review §4 #14. - **Evidence:** - Output network: L20 4.7 µH, C132 22 µF/16 V 0805 (≈ 10–12 µF effective at 3.8 V), C133 1 µF, plus C130/C131 2 × 220 µF aluminium at 13–21 mm (ESR ≈ 0.15 Ω pair, assumed). - Datasheet: fc = R5/(4.67e3·VOUT·COUT). - Bulk-dominated (455 µF): fc ≈ 1.7 kHz. Phase is about −90° (integrator) −84° (fp ≈ 184 Hz) +27° (zero at 3.44 kHz) +36° (electrolytic ESR zero ≈ 2.4 kHz), so **PM ≈ 69°**. - Ceramic-only: fc ≈ 50 kHz ≈ fSW/10 (the guideline edge). - With polymer bulk (A-09) the ESR zero moves above 15 kHz and PM falls to ≈ 40°. - **Fix:** if A-09 goes ahead, set R116 = 10 k (keep C141 3.3 nF, C142 47 pF) and verify with a 0.1 → 2 A load step at VIN 4.4 V and 5.3 V. Otherwise bench-verify the current values. - **Effort:** schematic-only - **Confidence:** low-medium (estimate). Raise it with a Bode plot or load step. ### A-18 U25 compensation is the TPS54360B datasheet example (13 k / 6.8 nF / 39 pF), designed for 8.2 µH + 58 µF - **Severity:** Note - **Evidence:** - v6 has 10 µH, C153/C154 2 × 47 µF X7R (≈ 56 µF effective), C78 220 µF aluminium, and ≈ 70 µF effective downstream (C30/C31, C32–C34 through RS1 + Q7, ≈ 20 mΩ). - fco = R4·gmps·Vref·gmea/(2π·Cout·Vout) ≈ 43.7/(2π·Cout·5.3): ≈ 4–6 kHz with the bulk counted, ≈ 22 kHz ceramic-only. The compensation zero is at 1.8 kHz, and PM estimates > 60° in both cases. - Stable, but a slower load step: ≈ 0.16 V dip for 1.8 A, relevant if A-01 Option A moves the modem onto VEH5V. - **Fix:** none required. Optionally raise R123 to 24 k after A-01/A-09 to restore ≈ 10 kHz. Bench-verify with a 0.3 → 2.5 A step. - **Effort:** schematic-only (optional) - **Confidence:** medium ### A-19 Load-dump survivability of D10 SMBJ33A / D32 SMCJ33A depends on vehicle-level suppression - **Severity:** Note - **Evidence:** - SMCJ33A: VBR 36.7 V min, VC 53.3 V @ 28.1 A. SMBJ33A: VC 53.3 V @ 11.3 A. - Adequate for continuous 24 V systems (≤ 32 V), for the ISO 16750-2 36 V/60 min overvoltage test (below VBR min), and for ISO 7637-2 fast pulses behind the U25 65 V rating. - Not adequate for an ISO 16750-2 Test B suppressed load dump (24 V: Us* ≤ 58 V, 100–350 ms, Ri 1–8 Ω, i.e. ≈ 10 A for 350 ms, hundreds of J): the TVS would fail short. After A-01, F2 then opens. The alternative is a surge stopper, which is out of scope. - **Fix:** confirm the fleet has alternator load-dump suppression (Inputs needed). Keep SMCJ33A. Do not raise the TVS voltage, because U25 has 65 V abs max. - **Effort:** none / decision - **Confidence:** medium ### A-20 Other power items - **Severity:** Note - **Evidence / fix:** - (a) **U12 MP1584EN** (C15051, $2.21 @100, TA −20…+85 °C): if not replaced, gate EN (A-05). Optional swap to AP64350 C2071691 ($0.58, VIN 3.8 V min, synchronous, better battery margin; needs a re-layout for pinout). - (b) **F1 PPTC 3 A** (C20627123, 10–60 mΩ, trip 5 A) now protects only the F9P LDO branch (≈ 0.1 A). It is harmless (≤ 6 mV) and not protective. The V5.6 "≥ 4 A low-R" requirement was for the modem, which is no longer behind it. Keep it. - (c) **P2 bench jack** has no reverse protection (VEH5V −0.3 V abs max). A bench-only risk, which the silkscreen should state. - (d) **JP_CUT across P5 (V5.6 JP6) is absent.** Harness auditor G owns it. - (e) **C22 value mismatch:** the schematic says "22uF/50V" but LCSC C138687 is 10 µF/50 V (moot if U2 is removed; BOM auditor H). - (f) **K1 G5V-1:** operating range −40…+70 °C, which is close to the enclosure worst case. - (g) **R112 1 k VBAT_MODEM bleeder:** 3.8 mA / 14 mW while the modem is on. Fine. - **Effort:** — - **Confidence:** high ### F-53 Fan block - **Severity:** Note - **Evidence:** - Driver: U2 MP1584 from /24V, 5V_FAN = 0.8·(1 + 100/19.1) = **4.99 V** (4.76–5.23 V). - FB divider R20/R21 at **0.67/1.48 mm** from U2.4 and `/FB_FAN` 4.1 mm, so ECO E3 is fixed. - PWM: PA6 (TIM3_CH1) → Rg1 100 Ω → Q2 AO3400A low side, with Rgs1 100 k gate pull-down (**default OFF** ✅) and D2 SS34 flyback ✅. - 2-wire fan, no tach (`ENABLE_FAN_TACH 0`, a decision). Fan dark on battery by design (ECO D4). - U2 is out-of-rating on the 24 V bus (A-01) and its Cin is 17–21 mm away (A-06). - **Fix:** take A-01 fix 1 (fan from VEH5V via a bridged JP1, U2 block DNP). Firmware policy `vehiclePower && ignitionOn` is unchanged, and the fan supply then equals `vehiclePower` exactly. Add `tNtcC` to `thermalCtlTemp()` (memory `drogheda-fan-policy`). - **Effort:** schematic-only (with A-01) - **Confidence:** high ## Pass checks | Check | Evidence (one line) | Result | |---|---|---| | U25 output formula / tolerance | 0.8·(1 + 53.6/10.2) = 5.004 V; Vref 0.792–0.808 → 4.87–5.14 V | ✅ math / ❌ set-point (A-04) | | U25 RT / fsw / min on-time | 162 k → 600 kHz (TI eq.); tON at 36 V = 0.147/600 k = 244 ns ≥ 135 ns | ✅ | | U25 inductor | 10 µH ≥ Lmin 7.2 µH (36 V) / 7.7 µH (60 V), KIND 0.3; SRP1265A Isat 15.5 A, Irms 10 A vs peak 3.1–3.4 A | ✅ | | U25 current capability | load ≤ RS1 limit 2.14–2.41 A (+0.3 A fan with A-01) vs 3.5 A rating, 4.5 A min switch limit | ✅ | | U25 Cout / ripple | 2 × 47 µF X7R 1210 (≈ 56 µF eff) + 220 µF; ΔI 0.69 A @ 24 V, ΔV ≈ 3 mV | ✅ (life ❌ A-09) | | U25 compensation | datasheet example; fco ≈ 4–6 kHz, PM > 60° (estimate) | ✅ (A-18 Note) | | U25 BOOT cap | C152 100 nF, 1.49 mm edge to pins 1/8 | ✅ | | U25 Cin value | 2 × 2.2 µF/100 V X7R 1210 ≈ 3.4–3.8 µF eff at 24–36 V ≥ TI 3 µF | ✅ (placement A-06) | | U25 soft start / inrush | 1024/600 kHz = 1.7 ms; ≈ 0.9 A into ≈ 280 µF | ✅ | | U25 EN / UVLO | EN floats → on; internal UVLO 4.1–4.3 V | ✅ (A-16 Note) | | Reverse polarity Q23 (and Q10) | P-FET D→input, S→load, gate R119 100 k + D33 15 V clamp (Rrp1 10 k + DzG1); IRFR5305 −55 V/65 mΩ | ✅ | | DzG1 netlisted (V5 corruption) | DzG1.1 /Q10_GATE, .3 /24V | ✅ | | TVS standoff | D32 SMCJ33A / D10 SMBJ33A VRWM 33 V ≥ 32 V max 24 V system; polarity pad 1 = K on the + rail | ✅ (A-19) | | F2 part assigned | C206910 0154002.DR 2 A/125 V, 50 A breaking | ✅ part / ❌ coverage (A-01) | | RS1 input limit | 10 mΩ 1 W 1206 (C105362): 23.5–26.5 mV → 2.35–2.65 A (2.14–2.41 A with the CLN tap, A-07) < U25 3.5 A | ✅ | | LTC4040 PROG node | R50 1.26 mm from pin 2; `/PROG` 2.6 mm (≤ 40 pF) | ✅ | | LTC4040 BSTFB (backup VSYS) | 499 k/100 k → 4.60/4.79/4.99 V within 3.5–5.0 V; keep 499 k | ✅ (placement A-14) | | LTC4040 PFI | 270 k/100 k, 1.19 V: fall 4.27/4.40/4.54, rise 4.38/4.51/4.66 V | ✅ (FW V5_PFI stale) | | LTC4040 RSTFB / RST | RSTFB tied to BSTFB (datasheet allows), RST NC | ✅ | | LTC4040 OVSNS | tied to VIN → OVP unused | ⚠ (A-10) | | NTC window RNTB | R55 10 k: hot 42.4 °C / resume 40.1 °C / cold −3.1 °C (B3380) | ⚠ (chemistry D1 pending) | | Chemistry straps | JP2 1-2 (F2 = MAIN5V = Li-ion), JP3 F1 = 0, JP4 F0 = 1 → 4.00 V; LFP by JP2 2-3 (+ RNTB 5.6 k → +10.0…+60.4 °C) | ✅ | | Safety timer | Li-ion 4.25 h (3.7–5 h), counts in CV only | ✅ | | CHRG / FAULT | R57/R58 100 k to 3V3 → PB3/PB4 | ✅ | | CHGOFF default | R56 100 k pull-down → charger ON without MCU | ⚠ (A-11) | | BSTOFF | tied to GND → boost always armed (no FW shutdown; BAT UVLO 2.45 V is the only floor) | ✅ / Note | | Q7 ideal-diode orientation | AO4406A N-ch: S = VIN_SW (CLN), D = MAIN5V → body diode blocks VSYS→VIN | ✅ | | L6 | 2.2 µH (datasheet 1–2.2 µH), rated 8 A ≥ ILIMBST max 7.5 A | ✅ (placement ❌ A-02) | | CSYS | 104 µF nominal ≥ 100 µF; ≈ 59 µF effective | ⚠ (A-05) | | CBAT | C35 22 µF ≥ 10 µF | ✅ value / ⚠ placement | | U20 FB | 75 k/20 k → 3.70/3.80/3.90 V within A7670 3.4–4.2 V | ✅ | | U20 RT / min on-time | 200 k → 500 kHz (450–550); tON at 36 V = 211 ns ≥ 100 ns | ✅ | | U20 UVLO on battery | falling ≈ 3.1–3.3 V vs VIN_MODEM ≥ 4.2 V (≈ 1 V margin; V5.5 had 0.1 V) | ✅ | | U20 EN default | R113 100 k vs 5.5 µA pull-up → 0.55 V < 1.03 V → OFF; PC10 3.3 V > 1.25 V | ✅ | | U20 BST | C129 100 nF, 1.8 mm | ✅ | | L20 | 4.7 µH (MWSA0804S-4R7), rated 5 A vs peak 2.2 A (batt) / 2.7 A (24 V) | ✅ | | U2 FB / placement | 4.99 V; divider at pin (0.67/1.48 mm) | ✅ (rating ❌ A-01, Cin ❌ A-06) | | U12 FB | 100 k/31.6 k → 3.18/3.33/3.48 V | ✅ (EN ❌ A-05, loop ❌ A-06) | | U21 AP2112K | dropout 250 mV @ 600 mA; F9P ≈ 0.1 A; SW_5V ≥ 4.5 V on battery; EN = VIN follows Q1 | ✅ | | U17 AMS1117 on 24 V | LDO_IN ≈ 4.6 V ≥ 4.4 V | ✅ (battery ❌ A-08) | | DFU-only power | DFU_VBUS → D13 → LDO_IN; D12 blocks back-feed into SYS5V | ✅ | | K1 flyback | D6 1N4148W across the coil | ✅ | | Temperature sensor ≤ 10 mm of U6 | none (U3 at 71.4 mm) | ❌ (F-51) | | Fan PWM default | Rgs1 100 k → Q2 OFF at reset | ✅ | ## Review-vs-Lessons §4 checklist items re-verified - **#1 LTC4040 copper + thermal vias + re-cluster (F5):** still ❌. `/SW_BAT` is now 0.5 mm (was 0.25 mm on 25-Sep) × 11.9 mm with 0.25/0.30 mm necks. `/BAT_PLUS` main path 1.0 mm. EP 0 vias (nearest 5.21 mm). L6 8.65–9.10 mm edge. C30/C31 6.2–7.2 mm. CSYS GND on three F.Cu islands. → A-02. - **#2 U25 set-point (F7):** still ❌. R121 53.6 k → 5.00 V (4.87–5.14 V). Re-cluster status: C150 2.88 mm (improved), C149 6.37 mm, D34 4.28 mm, L22 17.0 mm (edge), Cin/diode GND on different islands. → A-04, A-06. - **#3 R50 (F4):** still ❌ 825 Ω. Also, 1.5 k only meets R5 nominally; 1.43 k is recommended. → A-03. - **#4 Modem rail integrity on battery (power parts):** U20 Cin is still C127 10 µF + C128 1 µF (no 2 × 22 µF) ⚠. `/VIN_MODEM` 0.5/0.8 mm (D21 → U20 5.8 mm at 0.5 mm) ⚠. VBAT_MODEM bulk C130/C131 at 13.2/20.9 mm from L20 on 2 mm copper (improved from 0.25/0.5 mm; modem auditor owns U19-side distances). D21 drop and boost budget → A-05. Topology → A-01. - **#5 Temperature sensor at the charger:** still ❌. → F-51. - **#6 W5500 in reset / U12 EN:** U12 EN still tied to VIN (always on, including on battery) ❌. → A-05 fix 1. (ETH_RST pull-down belongs to E.) - **#8 NTC window / chemistry:** unchanged ⚠ (R55 10 k, JP2 Li-ion). Decision D1 pending; BOM-only change. - **#10 F1 / F2:** F2 LCSC now assigned (C206910) ✅, but it protects only the U25 branch ❌ (A-01). F1 3 A PPTC is harmless (A-20b). - **#14 AP64350 compensation vs datasheet:** evaluated. It is the 5 V table set; the estimate is stable with electrolytic bulk and marginal with polymer. → A-17. - **"Switcher EP vias (U20, U25): 0"** (Review §2): still 0 on U20, U25, U2, U12 and U6. → A-06, A-02. - **#15 Bench validation (power parts):** still required: U6/L6 IR at 1.4 A charge and 2.3 A backup; U20 VIN scope during a battery cold start at VBAT 3.5 V; D34/U25 IR at full load. ### V5.6 power / charger / temperature fixes vs v6 | V5.6 fix (ECO / change report) | v6 status | |---|---| | A: modem buck AP64350 with MCU EN + 100 k pull-down | **equivalent** (U20, PC10, R113); fed from /24V + MAIN5V instead of SYS5V → A-01 | | A: Cin 2 × 22 µF + 10 µF at the modem buck | **missing** (10 µF + 1 µF) → A-05 | | A: 220 µF polymer output | **missing** (2 × 220 µF 85 °C aluminium) → A-09 | | A: L 4.7 µH ≥ 4 A | **has** (L20 4.7 µH/5 A, C17700167) | | A: C3 → 220 µF polymer (F9P rail) | **equivalent / not needed** (F9P behind the U21 LDO; C3 47 µF 105 °C + C40 + C119) | | A: R53 stays 499 k | **has** | | A (opt): U12 → AP64350 | **missing** (optional) → A-20a; U12 EN gating → A-05 | | C: RS1 10 mΩ | **has** (C105362) | | C: R50 1.5 k | **missing** (825 Ω) → A-03 (1.43 k) | | D1: RNTB / JP2 per chemistry | **unchanged**, pending decision | | D2 / E1 / E2: SW_BAT ≥ 2 mm, BAT_PLUS ≥ 1.5 mm, EP ≥ 9 vias | **missing** → A-02 | | D3: TMP102 near the modem | **missing** → F-52 (AT alternative) | | (V5.x U4 TMP102 "cell") | **removed in v6**, no replacement → F-51 | | D4: fan unchanged | **has**; E3 FB divider at pin **fixed** | | D5: NTC probe to PB1 | **has** (P7 → PB1) + second probe P8 → PC4 | | E4: buck Cin loops < 3 mm | **missing / worse** (U2 17–21 mm; U12 6.4 mm; U25 GND islands) → A-06 | | F: F1 ≥ 4 A low-R | **equivalent / not needed** (modem not behind F1) | | F: JP_CUT across the cutoff | **missing** (owner G) | ## Requirements input R1–R5 - **R1 (10 min off → wake → report on battery):** **needs change A-05 (+ A-08) plus firmware.** The hardware structure is right (independent PWR_CTRL / MODEM_PWR_EN, U20 UVLO margin ≈ 1 V). As-is, the boost reaches 93–97 % at a GSM burst with all loads on, W5500 cannot be powered off, and the AMS1117 floor eats the sleep budget. - **R2 (modem never dark; MCU can power-cycle it):** **satisfied as-is** for the power side (U20 EN on PC10 with pull-down, UVLO margin, the modem can be power-cycled alone). A-01 changes the U20 input source but not the control. - **R3 (report while on battery):** **needs change A-05 plus firmware** (same budget as R1). Also A-13 (PFO interrupt) for fast load shedding. - **R4 (temperature management):** **needs change F-51** (charger TMP102 plus pack NTC to PC5), plus firmware. Fan: satisfied, and simplified by A-01 fix 1 (F-53). - **R5 (charge ≥ 1.3 A without thermal cycling):** **needs A-03 (R50 1.43 k) + A-02 (copper/vias) + A-04 (R121 57.6 k or firmware retune).** A-07 is recommended. ## Firmware implications (things board_v6.h / FW 0.7.x must do) 1. **Pins (power-related):** - Unchanged: `PIN_CHRG_EN PA8` (HIGH = charge OFF; polarity unchanged by A-11, only the reset default becomes OFF), `PIN_CHRG_STAT PB3`, `PIN_CHRG_FAULT PB4`, `5V_SENSE PA4` (÷2), `BAT_SENSE PA0` (÷2), `NTC_TEMP PB1`, `NTC2 PC4`, `PWR_CTRL PA1`, `MODEM_PWR_EN PC10`, `BYP_CTRL PB5`. - New, if the fixes are taken: `PIN_ETH_PWR_EN PD2` (A-05), `PIN_PFO PB10` EXTI falling (A-13), `NTC_CELL PC5` ADC1_IN15, ratio 120/220 (F-51), TMP102 charger sensor at 0x48 (F-51), optional modem TMP102 at 0x49 (F-52). 2. **Constants:** - `V5_PFI` 4.60 → **4.40 V** (falling; rising 4.51 V). - With R121 57.6 k, keep `CHG_RAIL_ON 5.05` / `CHG_RAIL_OFF 4.90`. If R121 stays 53.6 k, the governor must be retuned (ON ≤ 4.80 V is not possible with PFI rising max 4.66 V and ADC error), so the hardware change is preferred. - The v6 supply cannot fold (RS1 2.14–2.41 A < U25 4.5 A min limit): the governor is a safety net only. 3. **ADC:** compute VDDA every window from VREFINT (`VREFINT_CAL` @ 0x1FFF7A2A). Never assume 3.30 V, especially on battery (A-08). 4. **Thermal inhibit:** CHG_CELL_HOT/COOL on `tcell` from PC5 (Li-ion 45/40 °C; LFP 55–60 °C). Shed on `tchg` > 85 °C from the new TMP102. Append `tchg`, `tcell`, `tmodem` to `$PHLG`. Include the NTC in `thermalCtlTemp()`. 5. **Backup entry (PFO EXTI or 5V_SENSE < V5_OFF):** - Immediately `ETH_PWR_EN` = 0 (or hold ETH_RST low if not fitted). - `BYP_CTRL` = 0 except inside the TX window. - Modem to **LTE-only on battery** (`AT+CNMP=38`) to avoid 2 A GSM bursts. 6. **Duty window (R1/R3):** - Never start the modem with W5500, K1 and the F9P acquiring simultaneously. - Order: modem EN → PWRKEY → wait STATUS (~7 s) and first RTCM on PC7, with the F9P OFF or already settled ≥ 4 s. Then the F9P for a hot fix. Then ≥ 2 `$PHLG` → modem OFF → F9P OFF → MCU STOP (LSE RTC). - Refuse a modem cold start below VBAT ≈ 3.4 V: the boost's 2.5 A rating holds only down to 3.2 V. 7. **Low battery:** BSTOFF is hard-wired to GND, so firmware cannot switch the boost off. At `VBAT_BACKUP_MIN` go to STOP with every load off. The hardware floor is only LTC4040 BAT UVLO 2.45 V plus the pack PCM. 8. **Fan:** if the fan moves to VEH5V (A-01), the fan exists exactly when `vehiclePower`. The policy stays as is, and the ignition proxy becomes optional. 9. **Charger status:** "pausa NTC" = CHRG low ∧ FAULT low (datasheet table p.14). Bad battery = CHRG high ∧ FAULT low. ## Inputs needed from Leo 1. Supply systems in the fleet: 24 V only, or 12 V machines too? This sets F2 at 3 A vs 4 A, the U25 UVLO (A-16), and whether 9 V operation matters. Do the machines have alternator load-dump suppression (A-19)? 2. The fan part (5 V, 2-wire) and its current. Assumed 0.2–0.3 A for the VEH5V feed (A-01). 3. **Decision on A-01 Option A** (modem buck from MAIN5V only, D20 removed, D21 bridged) versus Option B (keep the 24 V feed with a ≥ 60 V buck). Coordinate with the modem auditor. 4. Pack details: capacity (Ah), PCM cut-off voltage, NTC β (B3380 vs B3950), and the chemistry decision D1. 5. Is GSM/2G fallback required on battery, or is LTE-only acceptable? This sets the backup peak (A-05). 6. Must Ethernet work on battery? Assumed no, so U12 is gated. 7. Enclosure internal temperature at 45 °C ambient. Assumed 60–65 °C local near the regulators, for electrolytic life (A-09) and U6/D34 thermals. 8. Bench data from the H0008 "Pendientes": clamp-meter charge current and U6/L6 temperature. This confirms or refutes OT cycling (A-02/A-03).