SouthPing · every cable in the hull
Eight places on the carrier board take a wire. Five are JST-XH ports, two are Qwiic sockets, and one is a bare header that meter probes touch and no cable ever plugs into. This page follows each of those wires to the device at its far end, pin by pin, and then on past that device to the end of the chain: the panels, the cells, the antenna.
The carrier's side is connection-table.csv, the netlist the board is checked against. The far ends are the datasheet notes in device/hardware/datasheets/, the solar spec's cable table and the combiner's README. Companion to power-path.html (what flows), battery-pack-wiring.html (the cells to the plug) and thermal-probe-wiring.html (the one wire through the water).
Every wire in the hull either touches the carrier or hangs off something that does. The carrier's ports are J5 to J9, QW1 and QW2. Beyond them there are only three chains: the power chain (panels → combiner → charger ← gauge ← pack, with J5 tapped off the charger's pads), the modem's coax to its antenna, and the thermistor pair at the charger. The one wire added since the page was first drawn is the second BMP581's, on the GPS's second Qwiic port, so it too hangs off something that touches the carrier. Nothing else in the sphere carries a wire. If a wire is not on this page, the page is wrong or the wire is.
All five wire ports are JST-XH, top-entry. The three sensor ports are XH-3 bodies; the charger and modem ports are XH-5 bodies. Three of the five have a pin or pins deliberately left vacant, so that the wrong plug cannot reach a live pin and the right plug fits only one way (Carrier Brief has the keying table). The Qwiic sockets are keyed by their shape and cannot be put in backwards.
| Port | Body | Live pins | Far end | Cable |
|---|---|---|---|---|
| J5 | XH-5 | 1, 5 | The charger's LIPO and GND pads | Two 22 AWG pre-crimped XH leads, soldered at the charger, contacts in an XHP-5 at positions 1 and 5 |
| J6 | XH-5 | 1–5 | The RockBLOCK's 10-way PicoBlade header | Five XH leads in an XHP-5, spliced to five 28 AWG pre-crimped PicoBlade leads in a 10-way housing — built for board 1 on 2026-10-17, a second for board 2 by 2026-10-25. Pin 1 of the modem's header, unmarked on its board, is the end away from its mounting hole |
| J7 | XH-3 | 1, 3 | A 10 kΩ thermistor at the battery pack | Two XH leads in an XHP-3, the thermistor's legs soldered to their ends |
| J8 | XH-3 | 1, 2, 3 | The DS18B20, in the water, through the PG7 gland | The probe's own three-core cable, its ends in an XHP-3 |
| J9 | XH-3 | 1, 3 | Two A4-316 M3 × 10 screws in potted bosses on the cavity wall | Two XH leads in an XHP-3, their far ends soldered to the screws' shanks (hull spec §11.2) |
| QW1 | JST-SH 4 (Qwiic) | 1–4 | The fuel gauge's Qwiic socket, either one | Adafruit #4210, 100 mm [D], a plug at both ends |
| QW2 | JST-SH 4 (Qwiic) | 1–4 | The GPS breakout's Qwiic socket; the second BMP581 rides on the GPS's second Qwiic port (decided 2026-11-03) | Adafruit #4210, 100 mm [D]; the cable to the second BMP581 is not recorded |
| J10 | 1×5 male header | 1–5 | Nothing. VBAT · GND · 3V3 · IO0 · RST | No cable — meter points, and boot/reset for a seated module whose own buttons face the board. The seated BMP581 covers the pin tops, its board about 2.5 mm [C] above them: probe the solder cones underneath, or pull the barometer for the pins (FW-18, parked: rev. 5, if there is one) |
Pin numbers on the carrier side are the XH body's, pin 1 at the marked end. Net names are the netlist's. The far end is named the way its own board prints it, which is why the modem's serial pins look crossed: Ground Control labels them from the host's side, so what the carrier calls RB_RX — what the modem receives — lands on the pin printed TXD.
| J5 pin | Net | Far end | Carries |
|---|---|---|---|
| 1 | VBAT_IN | Charger LIPO pad | Battery plus, 3.0–4.2 V [D], through Q1 (a reverse-pack block that protects the carrier only; see the sign check below) to everything on the board |
| 2, 3, 4 | — | vacant | Nothing: no contact in the housing, no pin in the body |
| 5 | GND | Charger GND pad | Ground return |
The lead built on 2026-10-15, a JST-PH pigtail into an XHP-5, is the bench lead for a chain without the charger; it is not the flight lead.
| J6 pin | Net | ESP32 pin | RockBLOCK pin | Carries |
|---|---|---|---|---|
| 1 | VBAT_RB_SW | — | 8 · 5v In | Raw battery, 3.0–4.2 V [D], only while IO26 holds U3 on; 0.45 A for ~13 s, then 0.13 A for ~10 s, for the supercapacitor charge [M] |
| 2 | GND | — | 10 · GND | Ground return |
| 3 | RB_RX | IO17 | 6 · TXD | Serial into the modem, 3.3 V logic, no level shifter |
| 4 | RB_TX | IO16 | 1 · RXD | Serial out of the modem |
| 5 | RB_ONOFF | IO14 | 7 · OnOff | The modem's own sleep input; the owned units are v3.D and take 3.3 V logic directly |
The modem's pins 2 CTS, 3 RTS, 4 NetAv, 5 RI and 9 Li-Ion are left unconnected. Pin 9 sits behind a diode and takes 3.5–5.4 V [D]; pin 8 takes the pack directly (ADR 0014). The modem's own antenna connector is an SMA, and that link is below.
| J7 pin | Net | ESP32 pin | Far end | Carries |
|---|---|---|---|---|
| 1 | SENSE_EXC | IO13 | one leg of the NTC | 3.3 V, but only during the hourly read; the same line excites the leak pads |
| 2 | — | — | vacant | Nothing |
| 3 | NTC_SENSE | IO39 | the other leg | The divider's midpoint, R4 10 kΩ to ground on the board; ADC1, input only |
A thermistor has no polarity: the two legs may go either way round. This is the second thermistor — the one the message reports. The first, the one that stops charging in the cold, hangs on the charger and never reaches the carrier.
| J8 pin | Net | ESP32 pin | DS18B20 lead | Carries |
|---|---|---|---|---|
| 1 | OW_DATA_J | IO4 | DATA — yellow, assumed (HULL-28) | 1-Wire data, through R7 100 Ω on the board, pulled up by R3 4.7 kΩ |
| 2 | GND | — | GND — black, assumed | Ground return |
| 3 | OW_3V3 | — | VDD — red, assumed | 3.3 V through R6 100 Ω, always on |
The order DATA · GND · 3V3 is deliberate keying and is kept: ground in the middle means a plug one position off puts a live pin against ground, not against the other live pin. The three leads come out of the probe's own cable, which passes through the PG7 gland in the hull (Thermal Probe). The colours above are assumed except black: board 1's probe was rung out by diode test on 2026-10-15 and black is ground [M] (HULL-28).
| J9 pin | Net | ESP32 pin | Far end | Carries |
|---|---|---|---|---|
| 1 | LEAK_SENSE | IO35 | one pad | The sense node: IO13 through R5 100 kΩ on the board, C6 100 nF to ground; ADC1, input only |
| 2 | — | — | vacant | Nothing |
| 3 | GND | — | the other pad | Ground |
Dry, the pads are open and the node reads the excitation. Wet, water bridges them and the node falls. No pad carries a standing voltage, so nothing electrolyses between reads. The pads are two A4-316 M3 × 10 screws threaded into blind printed bosses on the cavity wall, heads exposed, about 3 mm above its floor [C]; the leads' wires are soldered to the shanks and the bosses potted (hull spec §11.2, fitted at §13.5 step 2). Bare copper is not acceptable.
| Qwiic pin | QW1 net | QW2 net | ESP32 pin | Far end |
|---|---|---|---|---|
| 1 · black | GND | GND | — | Ground |
| 2 · red | 3V3 | 3V3_GPS | — | QW1: the always-on rail, which powers only the gauge's LED and pull-ups. QW2: the GPS rail, on only while IO25 holds U2 on; the second BMP581 draws from it too |
| 3 · blue | SDA0 | SDA1 | IO21 / IO18 | I²C data: bus 0 to the gauge at 0x36, bus 1 to the GPS at 0x42 and the second BMP581 at 0x47 |
| 4 · yellow | SCL0 | SCL1 | IO22 / IO19 | I²C clock |
Both cables are the same part and either end plugs into either socket; the colours are the Qwiic standard's. Nine of the 100 mm cables and six 50 mm ones are owned, enough for three probes and spares. QW1 shares its bus with the two seated sensors (the Fermion BMP581 at 0x47, BME280 at 0x77). QW2 has its own bus and reaches the GPS and, on the GPS's second Qwiic port, a second BMP581 (SparkFun SEN-20171, at 0x47 too, on the other bus), there to cross-check the first. It has power only while the GPS rail is up, so !scan with the rail up finds 0x42 and 0x47 on that bus [M]. The GPS board's own I2C jumper carries the pull-ups the backfeed fix depends on — never cut it. (The BMP581 board has an I2C jumper of its own; whether it was cut is not recorded, and whether the board stays on the GPS rail is FW-29's.) The gauge will not answer on QW1 unless a battery is on one of its JST-PH ports: its chip runs from the pack it measures, not from the cable.
| From | To | Cable | Note |
|---|---|---|---|
| Each panel's two pads | Combiner J1–J3 | 24 AWG silicone, red V+, black V−, ≈ 150 mm (the spec's figure), soldered at both ends, as the spec has it | Three pairs, no connector in the spec. As built, every panel lead ends in an XH plug into a socket on the combiner's pad pair, on all three combiner boards; the second set's three plugs were crimped red-to-minus and caught at step 4, when the output followed the lowest panel. Whether to accept the plugs or solder is open (FW-29). Each pair comes down through the solar slot under its panel, which is then epoxied over. A panel is live in any light: it is covered until its leads are in the board, and polarity is metered at the lead ends before the panel is bonded in — a reversed panel is a destructive rework |
| Combiner J4, XH-2, pin 1 SOLAR+ | Charger Opt. Cap holes: VBUS (+), GND (−) | Two 22 AWG pre-crimped XH leads, 305 mm [D], in one XHP-2; the charger end cut and soldered; whether 305 mm spans the crown to the charger on the platform is not recorded | This plug is at the combiner, and it is not the only loose housing in the solar path: the panels' three plugs sit at J1–J3 as built (FW-29), and the THERM pair's 2-pin XH break below is a second housing this plug fits. A swapped lead puts the panels' negative on a pin rated −0.3 V [D] and kills the charger: the red-marked wire is rung to VBUS and polarity read at J4 before it first mates, the same sign check as for every plug |
| The pack's JST-PH pigtail | Gauge, left port | 20 AWG silicone, red + with a uxcell T1.6A slow-blow micro fuse (1.6 A [D]) soldered inline, no holder, black −, to a JST-PH 2-pin | The whole probe's current comes and goes through this plug, so it is metered for sign before it mates: red probe on position 1, black on the ground position, a plus sign expected, on the unmated plug, before it goes into the gauge, the charger or J5. One pack plugged into the gauge with + and − swapped (before 2026-10-25) opened the fuse and killed a MAX17048 and both owned bq24074s, which have no reverse protection; Q1 saved only the carrier. The bench cable's XH end has no key against J5; a pack lead that mates one way only is wanted (FW-27). The fuse goes in with pliers as a heat sink on each leg and a few seconds of iron, metered 0.000 on the meter's 2k range first, and 0.00 V across it with the board drawing is read before the hull closes. Five of the twenty fuses are bad — three open, two resistive — so the part itself is in question (FW-28). The two gauge ports are equivalent; left-for-pack is an assembly convention, silkscreen up. 20 AWG does not fit a PH contact (PROC-19) |
| Gauge, right port | Charger LiPo Batt socket | One JST-PH 2-pin jumper, 100 mm [D] | The modem's burst crosses the gauge between its two ports: 0.45 A for ~13 s, then 0.13 A for ~10 s [M], with the first OK at 7.0–12.0 s from cold [M] and 9.0 s on both modems outdoors on 2026-11-03. Only the pack's low end is still owed (FW-02) |
| Charger LIPO and GND pads | Carrier J5 | Two 22 AWG XH leads, soldered to the pads, XHP-5 positions 1 and 5 | The same electrical point as the socket beside it: J5 sees the battery's own voltage |
| Charger THERM and GND pads | A 10 kΩ NTC in parallel with 200 kΩ | Two thin wires, ≈ 150 mm (the spec's figure), twisted, with heat-shrink over the twisted joints before any pair goes into a hull; broken near the charger by a 2-pin XH plug, labelled, not keyed: the solar lead's plug fits it too; the pair at the end, taped against a cell | The cold-charge gate, in hardware, accepted as built (ADR 0018, decision 3): it stops between about −0.4 and −2.3 °C, by chip, and resumes just above 0 °C [C]. The charger's THERM link is cut first and read open, then the pair goes on (the solar spec, §4 point 1). The 200 kΩ is two 100 kΩ in series on the first probe [M]. Bare joints leak: with them wet in a 0 °C bath the bead read +8 °C warm [M]. Plugged in whenever the charger has power: unplugged, it reads as cold and the charger never charges |
| From | To | Cable | Note |
|---|---|---|---|
| RockBLOCK SMA | The antenna's SMA-male | Amphenol 135110-03-06.00, RG-316, 152.4 mm [D], SMA plug at the modem, SMA jack at the antenna | The jack is a bulkhead type used unmounted: it mates the antenna inside the cavity, loose or on a bracket. The antenna body itself passes out through the NPT¾ cap gland; its fit in the gland is HULL-10. The generic male-to-male jumpers in the drawer cannot mate the antenna |
Beyond the Qwiic cable, only the second BMP581 on the GPS's second Qwiic port. The SAM-M8Q breakout carries its own chip antenna and needs no coax.
The ESP32 module (FireBeetle 2, SOCK_FB), the BMP581 barometer (SOCK_BARO) and the BME280 (SOCK_BME) plug into female headers on the board and carry no wire of their own. The BME280 is not a Qwiic board, which is why it sits in a header and not on QW1. The module's USB socket is a bench connection only: with JP1 fitted it must never share the board with a cell on J5 (Carrier Assembly, the rules at the top).
Part of SouthPing — southping.org. This page is licensed CC BY 4.0: reuse it, adapt it, publish it, with credit to SouthPing and a link back. Source code in the project is Apache-2.0. Manufacturers' datasheets and product photographs remain theirs and are not covered by this grant.