SouthPing · the carrier board, from the box to the first boot
Carrier Assembly
Five rev. 4 carriers arrive with every small part already
placed by the fab. What is left is the through-hole work — eighty joints a
board, all of them forgiving — cut here into six stages. Each stage says what
parts it takes and where they came from, explains in plain words what they do
and how they work inside, shows the board as it should look when the stage is
done, walks the joints, and closes with a meter check that has to pass before
the next stage starts — with the reason each reading comes out the way it does.
Written for someone soldering their first board, and meant to leave them
understanding the board, not just having built it.
Companion to carrier-pcb-brief.html
(what the board is) and probe-wiring-guide.html (the
same probe built without it). Parts and orders from
device/hardware/bom/bom-carrier.md and
inventory.md; nets from
device/hardware/carrier/connection-table.csv; placement
from the generator scripts; pin 1 of each port from the board file's copper. The
bring-up order is the carrier spec's. Since 2026-10-17 boards 2–5 are built from
its short form, the flight board checklist; boards 1–3
have been level with it since 2026-10-28.
⚠ Four rules that hold for the whole page
One power source at a time. The board runs either from the cell on
J5 with the JP1 shunt fitted,
or from USB on the FireBeetle with the JP1 shunt
pulled. Never both with the shunt in: unplug the cell before USB goes in.
One exception, the modem's bring-up (step 9 of the carrier spec): with the
JP1 shunt out and JP3 unbridged (as every board ships), USB and a cell on
J5 may share the bench. USB then feeds the 3.3 V rail
through the module, and the cell only the regulator's dead end at JP1 and the
modem's switch; the two 3.3 V sources meet nowhere
(lab-notes/2026-10-15-carrier-board-1-step-9-part-1.md, the split supply).
Power goes on only after that stage's resistance checks pass, and the
first time it goes on in a stage it goes through the meter, reading current.
A short shows up as a number before it shows up as smoke.
JP3 stays open. It is two bare pads, a fallback
feed through the module's own regulator whose decision is open (FW-19): energy
does not decide it, and a closed JP3 puts USB's ~4.7 V onto the 3.3 V rail.
Nothing on this page bridges it; stage 5's K reading is one input to that decision.
The cell is a Li-ion cell. Its two leads never touch each other; it
goes into its holder last and comes out first; the bare lead ends are taped
when not in use. Its protection circuit trips at a current nothing in the tree sources
(the audit of 2026-10-15 notes the cell boards' “~8 A” cites nothing) — either
way, still a spark and a burnt wire. Every plug is metered for sign before it mates (stage 1).
Nine ideas this page runs on
Everything below uses these, and nothing below explains them again. If one is
new, read it twice; each is a sentence of physics and a sentence of what it
looks like on this board.
Idea
What it is
Where you meet it here
Voltage
A difference in electrical pressure between two points. It is always measured between two points, never “at” one — which is why the black probe lives on a fixed reference and only the red one moves.
Every reading in volts: black on A, red on the point named.
Ground
The point everyone agrees to call 0 V. On this board it is the cell's − terminal, carried everywhere by the copper fill on both faces. “To ground” means a path back to that.
Point A; every pin called GND; the ground pins that solder slowly because the fill soaks heat.
Current
The flow, in amps. It only flows in a closed loop, and the same amount flows through every part of a series loop — so a meter placed in the loop reads what the whole board draws.
The meter in the + lead's gap; the 0.00 mA bare board; the module's tens of milliamps.
Resistance, and Ohm's law
How hard a path resists flow. Volts = amps × ohms, always. Put 3.3 V across 100 kΩ and 0.033 mA flows; put it across a 0 Ω solder bridge and only the source's limits stop the flow — that is a short, and the heat is the volts times the amps.
The ~0.03 mA in the switch test; the fab's resistors read through your joints; every “no short” check.
Open and short
OL on the meter means no path at all (infinite ohms). A short is the opposite: a path of a few ohms where there should be none. A bridge of solder between two pads is the way a beginner makes one.
Stage 0's four checks and the first check of every stage after it.
A rail
One net that carries a supply voltage to many parts, like a water main. This board has three: VBAT (the cell's voltage), 3V3 (always on), and two switched ones — 3V3_GPS and VBAT_RB — that are rails only while their switch is on.
The power-path lines in each stage's opener.
A capacitor
A tiny reservoir. It fills (charges) when voltage is applied, through whatever resistance is in the way, and once full no steady current passes. Across a supply it smooths dips; in a meter's Ω mode it first looks like a low resistance and then “climbs” to OL as it fills.
C1–C3 round the regulator; every “OL, or climbing” expectation.
Pull-up, pull-down
A resistor from a signal line to 3.3 V or to ground, so the line has a definite level when nothing is driving it — instead of floating and picking up noise. The resistor is large (10–100 kΩ) so that whatever does drive the line wins easily.
R1/R2 hold the switches off until the brain says otherwise; R3 holds the probe's data wire up.
A digital pin, and a diode
A brain's pin is either high (3.3 V) or low (0 V); as an input it draws almost nothing, which is why a jumper wire can safely stand in for it. A diode is a one-way valve for current that charges a toll of about 0.3–0.8 V to pass; the meter's diode mode measures that toll, and every MOSFET carries one inside.
The switch test; the diode-mode check on Q1.
How the page is cut
Stage
What goes on the board
What the check proves
0
nothing — the board as delivered
five boards, the placed parts present and the right way round, no short the fab made
1
J5, U1, JP1, J10 — the power inlet
the board makes 3.3 V from a cell and draws nothing doing it
2
J6, JP2, J7, J9, J8 — the other ports
every port reaches its net; the fab's resistors read right; the switched rails are off
3
SOCK_BARO, SOCK_BME — the sensor seats, and the BMP581's own header
both seats sit on the always-on rail and share one I²C bus with QW1
4
SOCK_FB — the module seat, soldered with the module as the jig
no bridges on 32 pins; every seat pin reaches its port; both load switches switch, driven from a jumper
5
nothing — the module, flashed, seated and run from the cell
the regulator holds the rail with an ESP32 on it
The sensors, the GPS, the thermistor, the probe and the modem are
not on this page: they need firmware, and they are the carrier spec's steps
6–9, which the flight board checklist carries on.
Everything the carrier work uses, and where it stands
Per board, and for the five. owned means
inventory.md counts it — the boards were counted and the
DigiKey bag opened on 2026-10-13, so no row here waits on an order any more;
not on record means an ordinary
bench item nobody listed.
Part
Per board
For five
Where from
Per the records
Stage
meteo-carrier rev. 4, top side assembled
1
5
JLCPCB W2026100309193023, 2026-10-02 (cost log order 4)
owned, 5 — counted 2026-10-13, all five passed stage 0; boards 1–3 built, level since 2026-10-28; 4 and 5 untouched, the spares
0
MCP1700-3302E/TO regulator, TO-92
1
5
10-pack, 2026-10-13 — the Bridgold bag of 2026-08-05 was not found
Panasonic NCR18650GA, protected, in a holder with leads
1 (bench)
1
cells: 2026-08-12 order and before; the holder: the demo rig's
owned, 19 cells
1–5
Qwiic → male-header cable, 150 mm
1 (bench)
1
inventory, wiring and consumables
owned, 4
3, 4
Kester 44 solder wire, 63/37, 0.020"
a metre or so for five boards
inventory, consumables
owned
1–4
Female–female jumper wires (Dupont), 2
bench
2
—
owned — packs of all three kinds, inventory.md 2026-10-14
4
Multimeter (the Klein MM325, the bench meter since 2026-10-30), soldering iron, flush cutters, pliers, tape, magnifier
bench
—
—
the meter is owned (inventory.md); the rest not on record
all
Not used on this page, though in the same DigiKey bag: the 17 XHP-3
housings and the 15 thermistors (the probes' harnesses, later), and 34 of the 36
leads. Note the leads are all black.
The kit, and the two skills
Tool
Why
Soldering iron, temperature-controlled, fine chisel or conical tip, at 320–350 °C
The 63/37 wire melts at 183 °C [D]; the board's pads are lead-free HASL, which hand solder wets fine. Brass wool or a damp sponge to clean the tip; wash hands after
Flush cutters and small pliers
Cutting the female strip, snapping the male strip, splaying U1's legs, trimming legs
A digital multimeter with a continuity beeper, DC volts, a mA range and a 10 A jack
Every check on this page. The bench meter is the Klein Tools MM325 since 2026-10-30 (manual ranging; •)) beeps below 50 Ω [D] and shows the ohms), the EverStart 10709WDI the second. Any meter with those four does
Masking tape or Blu-Tack; a magnifier or the phone camera's zoom
Holding parts while the board is upside down; looking at joints
Safety glasses, an open window or a small fan
Flux fumes and the occasional solder flick
One joint
Tin the tip: a little fresh solder on the hot tip, wipe, a little more. A tip that is not shiny does not transfer heat.
Touch the tip to the pad and the pin at once, on the underside, for about one second.
Feed the solder wire into the joint — where the pin meets the pad — not onto the iron. It should flow and run around the pin in a second. Two to three millimetres of 0.020" wire is a whole joint.
Pull the wire away, then the iron. Do not move the part for two seconds.
Look. Good: a small shiny cone that climbs the pin and spreads over the whole pad. Bad: a dull grey ball sitting on top (too cold, too quick — reheat and feed a touch more); a blob touching the next pad (a bridge — reheat and drag the iron away along the gap); solder on the pin but not on the copper (the pad was not heated).
Ground pins take longer, by design
Every ground pin — U1 pin 1, J5 pin 5,
J6 pin 2, J8 pin 2, J9 pin 3,
J10's GND, both seat GNDs, the sockets' GNDs — is tied into the
copper fill on both faces by narrow spokes, and the fill soaks heat. Stay on
those joints a second or two longer until the solder flows; do not answer a
slow joint with more solder. Five seconds on a pad is the limit before it
starts to lift.
One of them has failed twice.J10's GND pin is probe point
A, the black probe's home, and the carrier's one habitual bad joint: unwetted on board 1
(2026-10-14) and board 2 (2026-10-28) [M]; a dead A reads 0.00 V on every
rail. Ring it to J5 pin 5 before trusting a reading.
The meter
Mode
What it tells you
How it is used on this page
continuity ·)))
Beeps when the two probes are joined by under a few tens of ohms
Power off. A new joint beeps to where its net goes, and does not beep to the pad next to it. A single short chirp when the probes first touch is a capacitor charging, not a bridge; a bridge is a steady tone. Without a beeper, the lowest Ω range stands in — on the Klein, 2k (it has no 200 Ω position [M]), in kΩ to three decimals: OL is open and any small number is joined — 0.001 or 0.002 is probe contact on flux residue, not a weak joint, unless it stays however hard you press; touch the probes together for the leads' own baseline
Ω
The resistance between the probes
Power off. Reading a resistor the fab placed through two pins; and the first check on every stage — a rail to GND must read OL (open) or a number that keeps climbing as a capacitor charges, never a steady low number
→| diode
The voltage a diode drops, red probe on its anode
Power off. Once, to prove Q1 is in the path
V⎓ DC volts
Voltage between the probes
Power on. Black probe on A (J10 GND) always; red on the point named
mA
Current through the meter
Power on. Red lead moved to the mA socket. In this mode the meter is a piece of wire with a number on it: it sits in the + lead, bridging a gap you leave in it — never across two points. Across the cell it blows the meter's fuse, and then every current reads 0 until the fuse is replaced. On a manual-range meter OL (the EverStart draws it 0L) on a current range means over-range, not open: lift the probes and check the dial before anything else. And a reading that looks like a voltage — about 2.7 across JP1 with its shunt off, or the cell's 3.5 — means the dial is still on V: this has happened twice on board 1 [M]
10 A
The same, coarser, for the module
Stage 5 only. The mA range drops up to a volt at a hundred milliamps, enough to starve the regulator and fake a fault; the 10 A jack drops almost nothing
Probe tips are pointed and the pads are small. Hold the probe like a
pen, rest the heel of your hand on the bench, and touch the pin's solder joint
on the underside or the pin's top — not the pad's edge. A probe that slips
between two live pins is the one way a voltage check can cause a fault, which is
why J10 puts a GND pin between VBAT and 3V3.
Reading the stage drawings
Every stage shows the same map of the board, seen from above with the module's
USB edge at the top. The fab's placed parts are always drawn; the through-hole
parts change look with the stage:
not yet fittedfitted in an earlier stagefitted in THIS stageA–K: probe points the tables name; A is where the black probe always sits
Square pads are pin 1. The broken line beside each XH port is where
the silk draws the shroud's windowed wall. The fab's render,
device/hardware/kicad/meteo-carrier/out/board-top.png, is
the photo-like view to hold a real board against.
Stage 0 — the board as delivered
In plain words
What this stage is: looking, not soldering. The factory has already put
twenty-one tiny parts on the board. Before we add ours, we check that theirs are
all there, the right way round, and not shorted — because a factory mistake found
now costs a photograph, and found after eighty of our joints it costs a board.
What the factory's parts do — none of them is ours to touch, but it helps
to know what they are when the later checks mention them:
Q1 is a transistor used as a one-way valve: battery current gets in
only the right way round. A reversed battery plug does nothing instead of
damage.
F1 is a polyfuse — a fuse that heals. Too much current and it goes
high-resistance and stops the flow; cool it down and it works again.
U2 and U3 are load switches: electronic switches the brain turns
on with a pin. U2 gives the GPS its power, U3 gives the modem its power, and
while they are off those two draw nothing at all — which is how the probe
sleeps at its floor instead of at tens of milliamps.
QW1 and QW2 are Qwiic connectors: tiny four-wire plugs that carry
power plus a two-wire data bus (I²C) to the fuel gauge and to the GPS.
The Rs are resistors and the Cs capacitors, each with one small job —
holding a switch off until told otherwise (R1, R2), pulling a data line up
(R3), making the thermistor readable (R4), sensing a leak (R5, C6), protecting
the probe port (R6, R7), steadying the regulator (C1–C3) and softening the
switches' turn-on (C7–C10). They get named in the later checks as the fab's
parts being read through your joints.
Power: none. Nothing is connected and nothing is powered in this stage;
the meter's own little battery is the only source involved.
The multimeter (the Klein MM325); a magnifier or the phone
—
multimeter owned; the magnifier not on record
Target state — nothing added
What the fab placed: Q1 (three legs) and
F1 (a dark block) beside J5's pads; U3
and U2 (six legs each) with their small parts; the two white
Qwiic connectors on the right edge; resistors and capacitors in the corners.
Everything faint is still a row of empty plated holes.
How it works inside — what a factory-assembled board is
Two kinds of part, two kinds of joint. The fab's parts are surface-mount:
they sit on pads on the top face with no legs through the board, placed by a
machine onto printed solder paste and baked in an oven that melts the paste
under every part at once. Yours are through-hole: legs through plated holes,
soldered one joint at a time from underneath. The fab does the small, fiddly,
many-at-once kind; the hand does the big, forgiving, few kind. That split is the
whole reason this page exists.
What can be wrong on a machine-placed board. A part can be missing, can
have stood up on one end as the paste melted (a “tombstone”), can have paste
bridging two of its legs, or — for a part whose legs are symmetric — can be
turned 180° so that its pin 1 is at the wrong corner. The six-leg chips U2 and
U3 are that last kind: three legs a side, so they fit either way round and only
the mark tells. Q1 has two legs on one side and one on the other and cannot be
placed wrong. The resistors and capacitors have no orientation at all.
Why a resistance check before anything else. A bridge or a wrong part on the
fab's side would show as a low resistance between a rail and ground. Found now,
it is a photograph and an e-mail to the fab; found after your eighty joints, the
question of whose fault it was has no clean answer.
Steps
Count five and photograph each board, both faces. Hold one against the render out/board-top.png: the twenty-one placed parts, each where the render has it.
Pin 1 on the six-leg chips. The silk prints a small triangle at one corner of U2 and of U3; the chip's own mark — a dot, or the start of its printed code — must sit at that corner. The fab's engineer confirmed this from the placement image before production; you are confirming it survived the oven. Q1 fits its pads only one way round.
Every placed joint under the magnifier: no solder bridging two legs of U2, U3, QW1 or QW2; no part standing on one end; no part missing.
The short checks, in Ω — the pads are bare and plated, so touch them directly.
✔ Stage 0 passes when
Red probe
Black probe
Expect
What it proves
J5 pad 1 (square, top)
J5 pad 5 (bottom)
OL, or climbing
The battery input is not shorted to ground
JP1 upper pad
J10 GND pad (A)
OL, or climbing
The regulator's output is not shorted
JP1 lower pad
J10 GND pad (A)
OL, or climbing
The 3V3 rail is not shorted — this net reaches every sensor seat
JP2 upper pad
J10 GND pad (A)
OL
The modem rail is not shorted
A pair reading a steady few ohms is a fault the fab made: do not solder that
board, photograph it, compare with the other four.
Why the readings come out this way
OL or climbing, never a steady low number. Between each rail and ground
the design has only capacitors and sleeping chips — no resistor, no wire. The
meter's Ω mode pushes a tiny current; a capacitor takes it at first and the
reading starts low, then rises as it fills, toward OL. A bridge is a wire, and a
wire reads a few ohms and stays there.
Why these four pairs. They are the three rails that exist on a bare board —
the battery input, the regulator's output, the 3V3 rail — plus the modem rail,
each against ground. Every other net is a signal that goes nowhere until a
module or a sensor is plugged in, and so cannot short anything that matters
yet.
Why bare pads can be probed. The holes are plated through and finished
with a tin alloy (HASL) so that solder wets them; that finish conducts, and a
probe tip pressed on it makes a good enough contact for a resistance reading.
Stage 1 — the power inlet: J5, U1, JP1, J10
Four parts, fifteen joints, and at the end of it the board makes 3.3 V from a
cell. Everything later is checked against this rail, so it is proven first and
alone.
In plain words
The goal: turn a battery's 3 to 4.2 volts into the clean, steady
3.3 V that the brain and the sensors live on — and prove it with a meter
before anything that could be hurt is connected.
The parts and their jobs:
J5 is the socket where the battery comes in. In the probe the pack
arrives here through the charger board; on the bench, one cell in a holder
stands in for the pack. It has five positions but only the two outer ones
carry wires. This page has read the three empty ones as a key; FW-27 records
that the bench cable's XH end has no key against J5. Until that is settled, every
plug is metered for sign before it mates (below).
U1 is the regulator: a three-legged part that takes whatever the battery
gives (3.0–4.2 V as it discharges) and puts out 3.3 V regardless. It was
chosen because it wastes almost nothing itself — about 1.6 µA [D] — which matters
when the probe sleeps for most of every hour. C1 before it and C2/C3 after it
are small reservoirs that smooth the flow.
JP1 is a removable link in the 3.3 V line: two pins and a little
plastic bridge (the shunt). Pull the bridge and the regulator is cut off from
the rest of the board — which is how a current meter gets put in series
later, and how the board is kept safe when the module is on USB instead.
J10 is the service header: five pins in a row that copy the battery
voltage, ground, the 3.3 V rail, and the module's reset and boot pins. Once
the module is seated it covers most of the board and its own buttons face
down; J10 is how you still measure and still reset.
Two side branches start at VBAT, before the fuse: one to J10's VBAT pin
for measuring, and one to U3 — the modem will draw straight from the battery
through its switch, never through the regulator, because a transmitting modem
wants far more current than a 250 mA regulator can give. Nothing talks to
anything yet: this stage is power only.
Parts for this stage
Part
Qty per board
Where from
Per the records
J5 — JST B5B-XH-A, 5-position
1
DigiKey 455-B5B-XH-A-ND, order 5
owned
U1 — MCP1700-3302E/TO
1
10-pack, 2026-10-13 — the Bridgold bag of 2026-08-05 was not found
owned, 10
JP1 — 2 pins snapped from the male strip; J10 — 5 pins from the same strip
7 pins
DigiKey S1012EC-40-ND, order 5
owned
Shunt for JP1
1
DigiKey S9001-ND, order 5
owned
The bench harness: one XHP-5 housing, one 305 mm pre-crimped lead cut in half (two 150 mm leads, a contact on each)
bench, once
DigiKey 455-2268-ND and 455-3241-ND, order 5
owned
The bench supply: one NCR18650GA in a holder with leads; red tape
bench, once
the demo rig's cell and holder — unfused: the audit of 2026-10-15 names it (FW-25, awaiting the lead's go-ahead); the pack fuse rule is under the steps
owned
Target state — the inlet, powered through the meter
Four parts fitted. The harness on the left is the first-power
arrangement: the meter bridges a gap left in the + lead and reads the whole
board's current. Afterwards the gap is joined and the meter moves to volts,
black probe on A.
The MCP1700 datasheet's TO-92 drawing, redrawn: GND · VIN · VOUT
with the marked face toward you [D]. One widely copied
web page has this reversed; the datasheet does not.
The pins are symmetric — what the windowed wall fixes is which way the
plug can go, and so which wire lands on which pad. On J6
a header turned round would put the modem's VBAT wire on its ON/OFF pin.
How it works inside — the regulator, the valve and the fuse
The regulator (U1) is a throttle with a thermostat. Inside, a transistor sits
between VIN and VOUT like a tap; a reference tells it what 3.3 V is; it opens or
closes the tap continuously so the output stays there whatever the input does
and whatever the load draws. The price is heat: the volts it drops, times the
current, is wasted in the part — at 50 mA from a 4 V cell that is 0.7 V × 0.05 A
= 35 mW, warm to a finger at most. It needs the input a few tenths of a volt
above 3.3 to regulate; below that it simply passes what it has, minus the
tap. And it runs its own housekeeping on 1.6 µA [D], which is why this part and not
a bigger, faster one: the probe sleeps for most of every hour, so every idle
microamp is paid all day. The whole floor is ~648 µA [C] and the regulator's 1.6 is the
least of it: two LEDs left in by decision (2026-11-03), the FireBeetle's WS2812 ~500 µA
[D] and the gauge board's ~100 µA [C], are nearly all of it.
The valve (Q1) is a transistor used backwards. A P-channel MOSFET conducts
between two of its legs when the third, the gate, is pulled below the
source. Here the gate is tied to ground and the source faces the board: with the
battery the right way round the gate sits a whole battery-voltage below the
source, the transistor is fully on, and it costs a few thousandths of a volt —
far less than a diode's 0.3–0.8 V toll, which is why a transistor is used
instead of a diode. Reversed, the gate is not below the source, the
transistor stays off, and the diode it carries inside points the wrong way too.
Nothing flows; nothing is harmed. That internal diode is what the diode-mode
check reads.
The fuse (F1) is a thermostat with no moving parts. A polyfuse is a slab of
polymer loaded with carbon. Cold, the carbon grains touch and it conducts
(a few hundredths of an ohm cold, more after a trip; no datasheet note for it is filed). Too much current warms it, the polymer expands, the grains part, and
its resistance jumps a thousandfold — the flow stops. Remove the fault, let it
cool, and it is a fuse again. “1.1 A hold” means it never trips below that;
it trips at roughly twice it. It guards only the regulator's branch; the modem
taps VBAT before it, which is why the pack has a fuse of its own.
Why first power goes through the meter. A closed loop with the meter in it
shows the whole board's draw as a single number. Ohm's law says a bare board
should draw almost nothing — microamps of regulator housekeeping, zero through
pull-downs with 0 V across them, nanoamps through switches that are off. A
reading in milliamps means a path exists that the design does not have, and the
meter has found it before anything got hot.
Steps
J5. Windowed wall on the broken silk line, square pad at the end the silk calls 1=BATT+ — the top. Tape it, flip the board, solder one end pin, flip back, check it sits flat and square; if not, reheat that joint and press. Then the other end, then the three in the middle.
U1, the regulator. Flat face on the straight silk line (toward the board's middle); GND in the square pad. The holes are 2.54 mm apart; if the legs come closer than that, splay the outer two outward with the pliers, bending about 1 mm below the body, middle leg straight. Insert with 2–3 mm of leg showing above the board, bend two legs a little outward underneath to hold it, solder all three, trim the legs flush with the joint. This is bench gate ④'s first half — the pinout on a real part; the voltage check below is its second.
JP1 and J10. Snap a 2-pin and a 5-pin piece from the male strip (it snaps at the notch between pins). Short end down through the board, plastic sitting on the top face, long pins up. Tape, solder one pin, check it stands straight, solder the rest.
Look, then continuity — the first table below, power off.
Make the bench harness. Cut one 305 mm lead in half; tape one half red at both ends (every lead in the bag is black). Push the empty housing onto the soldered J5 — it goes only one way — and click the red lead's contact into the housing position sitting over the silk's 1, the black lead's into the position over 5; the contact's small barb faces the housing's lance window and will not click in the other way. Join the far ends to the holder's + and − leads (soldered and taped, or a small screw terminal), the red one to +. Leave a gap in the + lead for the meter: simplest is to not join it yet and bridge it with the probes. Once that lead is joined for good, the board's own gap takes over: JP1 with its shunt off is a break in the 3V3 rail, and the meter across its two pins (red on the upper, regulator side) reads everything the rail draws — that is what the seat is for, and it is the current check for every later stage.
First power, through the meter — both shunts off, nothing plugged in anywhere else, cell in its holder. Red lead in the meter's mA socket, dial on mA. Meter the plug for sign first: on the unmated XH plug, red probe on position 1, black on position 5, a plus sign expected. Then plug the harness into J5; no current flows yet. Close the gap: red probe on the cell's + lead, black probe on the red-taped lead going to J5. Read the second table.
Volts. Join the gap (twist and tape is enough for the bench), meter to DC volts, black probe on A, read the third table.
Fit the JP1 shunt — a separate part, not the two pins just soldered: the small black block from the S9001-ND bag, about 6 mm each way, two holes in its open face and a metal clip inside. Push it over JP1's two pins until its plastic sits on the header's plastic. Harness unplugged for this, then plug in through the meter again: still 0.00–0.01 mA. Then volts: D now reads what C did. The shunt's closed top covers JP1's pins from here on; D is the 3V3 rail's probe point for the rest of the page.
A plug is metered for sign before it mates; a pack has a fuse, this cell does not
One pack plugged into a gauge with + and − swapped, before 2026-10-25, killed a MAX17048
and both bq24074 chargers then owned; only the carrier's Q1 survived it. So the unmated plug is metered first — red probe on
position 1, black on the ground position, a plus sign expected — whether it goes into J5, a gauge or
a charger. The bench cable's XH end has no key against J5; a pack lead that mates one way only is
wanted (FW-27).
This bench cell has no fuse in its + lead; the audit of 2026-10-15 names that (FW-25, awaiting
the lead's go-ahead) and this page does not change it. A pack has one, a uxcell T1.6A
slow-blow micro fuse soldered inline in its + lead. The rule since 2026-11-02 (FW-28): pliers as a
heat sink on each leg and a few seconds of iron; the fuse metered 0.000 on the Klein's
2k range before it goes in; 0.00 V across it with the board drawing, read before the
hull closes. Five of the twenty are bad, and whether this is the right part is open (FW-28).
✔ Stage 1 passes when
Power off: fifteen cones, none touching a neighbour, and —
Red
Black
Mode
Expect
Proves
U1 left leg (square pad)
A — J10 GND
·)))
beep
U1's GND leg is in the ground
U1 right leg
C — JP1 upper pin
·)))
beep
VOUT reaches JP1
U1 middle leg
either end of F1
·)))
beep
VIN comes through the fuse
J5 pin 5
A — J10 GND
·)))
beep
The charger port's ground — and that A itself is wetted: its joint is the carrier's habitual bad one
J5 pin 1
B — J10 VBAT
→| diode
0.3–0.8 V [C]
Q1 sits between the port and the board: that is its body diode, and it only passes one way — red on J5 pin 1, black on B. The other way round it reads OL, which is right. With the probes as written, 0.00 means Q1 is bridged and OL means J5's pin 1 joint or Q1 is open. A meter without a beeper shows this mode in millivolts: 456 is 0.456 V (board 1 read 456 [M])
each J10 pin
the pin next to it
·)))
no beep, ×4
No bridge on the header — VBAT–GND and GND–3V3 are the two that matter
JP1 upper, then lower
A — J10 GND
Ω
OL / climbing
Still no short, now that U1 is in
First power, meter in the gap:
Reading
Expect
If not
current, bare board
0.00–0.01 mA [C]
Anything over 0.1 mA with nothing on the board is a bridge or a wrong part: open the gap, find it. The regulator alone takes 1.6 µA [D], the two switches less
touch U1, Q1, F1
cold
Warm on 0 mA is impossible; warm on a real current is the fault's address
Volts, black on A:
Red on
Net
Expect
B — J10 VBAT
VBAT
the cell's voltage, 3.0–4.2 V, within 0.02 V of the cell itself
U1 middle leg
VBAT_F
the same — nothing is drawn, so the fuse drops nothing
C — JP1 upper pin
3V3_RAW
3.20–3.40 V[D] — the MCP1700's ±3 % over its whole temperature range; at room temperature typically within ±0.4 %, so expect 3.29–3.31. This is bench gate ④'s 3.3 V
JP1 lower pin, and D — J10 3V3
3V3
0 V — the shunt is out, so the rail is dead; 3.3 V once it is in
Why the readings come out this way
“OL, or climbing” — in Ω mode the meter pushes a tiny current and reads
the voltage it causes. Between a rail and ground there is no resistor, only
capacitors: they accept the current at first (a low reading), fill, and the
reading climbs toward OL. A solder bridge would hold at a few ohms and never
climb.
The diode test's 0.3–0.8 V is the toll of a silicon junction — Q1's
internal diode — seen from the battery side. Red on the drain pushes current
through that diode toward the source. A bridge across Q1 would read 0.00 (a
metal path, no toll); an open joint reads OL.
Current 0.00–0.01 mA — add up what the design has on a bare board: 1.6 µA
of regulator housekeeping, 0 through R1 and R2 (0 V across them), under a
microamp through two switches that are off. The meter's last digit is 10 µA,
so the sum rounds to nothing.
VBAT equals the cell because Q1, fully on, drops only milliohms × microamps:
Ohm's law with almost no current gives almost no drop. The fuse's fraction of an ohm
costs the same nothing, but it sits after B — J10's VBAT pin is Q1's output,
ahead of F1 — so only U1's middle leg ever sees it. In stage 5, when the module draws
real current, B reads a few tens of millivolts below the cell: Q1, the harness and the
cell's own resistance.
3V3_RAW at 3.29–3.31 is the regulator's reference doing its job; the
±3 % figure is the worst case across −40 to +125 °C, not what a warm bench
sees.
The 3V3 rail at 0 V with the shunt out — the rail is simply an open
circuit from the regulator; no path, no voltage. Fit the shunt and the two
pins become one net.
Stage 2 — the other ports: J6, JP2, J7, J9, J8
Sixteen joints, the same technique as stage 1. Read the silk at each port:
J6 1=VBAT 5=ONOFF, NTC 1=EXC, LEAK 1=SENSE, DS18B20 1=DATA;
windowed wall on the broken line, square pad at the “1” end.
In plain words
The goal: fit every socket through which the carrier reaches the outside
world — the satellite modem, and the three cheap sensors that hang off wires —
and show that each socket is wired to the right place, with nothing yet plugged
into any of them.
The parts and their jobs:
J6 is the modem port, five wires to the RockBLOCK satellite modem. Two
are power: the battery voltage (through U3's switch) and ground. Two are a
serial link — the brain sends the modem short text commands on one wire
and reads its replies on the other, the same way a terminal talks to a
modem. The fifth, ON/OFF, is a line the brain pulls to tell the modem to
sleep. The modem runs on battery voltage, not 3.3 V, because its
transmit bursts draw more than the regulator could supply.
JP2 is a removable link in the modem's power line, exactly as JP1 is in
the 3.3 V line — a place to put the meter in series when the modem's draw
is measured, and a way to leave the modem unpowered until it is wanted.
J7 is the thermistor port. A thermistor is a resistor whose value changes
with temperature; it is wired between pin 1 and pin 3, and with R4 on the
board it forms a voltage divider. The brain puts 3.3 V on pin 1 for a moment
(the “excitation”, pin IO13 — only while measuring, so it costs nothing
asleep) and reads the voltage in the middle on IO39. Its job is to report the
battery pack's temperature in the message; the charger board has a
thermistor of its own that stops charging in the cold, and this one is the
brain's view of the same thing. They are separate parts so that one broken
lead cannot take both. The charger's own cold gate (a 10 kΩ thermistor in parallel with
200 kΩ on the bq24074's THERM pad) was measured by ice on all three chargers: they stop at
about −2.3, −2.0 and −0.4 … −1.0 °C and resume just above 0 °C [C],
accepted as built on 2026-11-03 (ADR 0018). The proof is the ice and the ISET pad falling to
zero, never the charge light, which went dark in charger 1's stop and stayed dark while it
charged [M], so it proves nothing either way.
J8 is the temperature probe port, for the waterproof DS18B20 that goes
out through the hull into the sea or the ground. Three wires: 3.3 V (through
R6, a 100 Ω guard), ground, and one data wire. That one wire is a
“1-Wire” bus: the question and the answer travel on the same line, which
R3 holds at 3.3 V whenever nobody is pulling it down to talk. R7 guards the
brain's pin if the cable ever floods.
J9 is the leak port: two bare pads low inside the hull. The same
excitation pulse feeds pin 1 through R5; dry, the brain's pin IO35 reads
3.3 V; water across the pads pulls it toward ground, and the probe reports
that it is taking water.
Still nothing plugged in, so the checks read the sockets empty: the modem's
rail must be off, the probe port's supply must be on, and the
fab's resistors are read through your new joints.
Parts for this stage
Part
Qty per board
Where from
Per the records
J6 — JST B5B-XH-A, 5-position
1
DigiKey 455-B5B-XH-A-ND, order 5
owned
J7, J9, J8 — JST B3B-XH-A, 3-position
3
DigiKey 455-2248-ND, order 5
owned
JP2 — 2 pins from the male strip
2 pins
DigiKey S1012EC-40-ND, order 5
owned
Shunt for JP2 — kept out until stage 4's switch test
1
DigiKey S9001-ND, order 5
owned
Target state — every port in
Five parts fitted. The modem port's pin 1 is at the top, like J5's;
the three bottom ports have pin 1 at the left. JP2's shunt
stays in the bag for now.
Why every harness is loaded with its housing plugged in
The XH pins are the same whichever way the header went in; the windowed wall
decides which way the plug goes, and so which wire meets which pad.
So build every harness the way the bench one was built in stage 1: empty
housing on the soldered header, then each contact into the position that
sits over the silk's number.
How it works inside — a serial link, a one-wire bus, a divider and two wet pads
The modem's serial link (J6 pins 3 and 4) is two one-way wires. The brain
sends on one and listens on the other — its TX goes to the modem's RX
and back the other way, which is why the carrier labels them from the modem's
side and the harness must not cross them. Each wire carries bits as timed
pulses of 3.3 V and 0 V at a speed both ends agree on beforehand (19200 per
second for this modem); there is no clock wire, the timing is the agreement.
The brain types text — AT+SBDIX — and the modem types answers
back. ON/OFF (pin 5) is simpler still: a wire the brain holds high to keep
the modem awake and drops to put it to sleep, so the modem's rail can stay on
while it draws almost nothing.
The probe's 1-Wire bus (J8 pin 1) is one wire doing both jobs. R3 holds it
at 3.3 V when idle. To send a bit, the brain pulls it to ground for a short or a
long moment; the sensor reads the length. To answer, the sensor pulls the same
wire down in slots the brain opens for it. Because nobody ever drives the
wire high — they only let go and let R3 lift it — two talkers can never fight,
and several sensors could share the wire, each with a factory serial number.
R7, in series, limits what a flooded cable could push into the brain's pin; R6
does the same on the supply wire.
The thermistor port (J7) is a voltage divider. Two resistances in series
across 3.3 V — the thermistor from pin 1 to pin 3, then R4 (10 kΩ) to ground —
share the voltage in proportion to their size. The middle, pin 3, sits at
3.3 × R4 / (R4 + Rntc): at room temperature the thermistor is about
10 kΩ too, so the middle reads about half, 1.65 V; cold, the thermistor grows
and the middle falls; warm, it shrinks and the middle rises. The brain reads
that voltage and looks the temperature up. The 3.3 V on pin 1 is an
excitation the brain supplies only during the reading, because a
divider across 20 kΩ burns 3.3/20000 = 165 µA [C] for as long as it is powered —
a quarter of the probe's whole sleeping floor, ~648 µA [C] (board 1 read
0.73 mA at JP1 [M]).
The leak port (J9) is a divider whose bottom leg is water. R5 (100 kΩ)
carries the same excitation to pin 1 and to the brain's pin IO35. Dry, nothing
flows through R5, so there is no drop across it and the pin sees the full
3.3 V. Wet, the water between the pads is a resistance of some tens of
kilohms to ground; R5 and the water now divide the 3.3 V, and the pin falls.
C6 (100 nF) is a small reservoir that keeps a damp fluctuation from reading
as a flicker.
Steps
J6 — as J5: windowed wall on the broken line, square pad at the top. One end pin, check, the rest.
J7, J9, J8 — the same, square pad at the left. Do all three before the checks.
JP2 — a 2-pin piece, as JP1 was. No shunt yet.
Look, continuity and the resistor readings — power off, first table.
Power through the meter — in the lead's gap, or across JP1 with its shunt off; JP2 out: 0.00–0.01 mA. Then JP1's shunt in, volts, second table.
✔ Stage 2 passes when
The resistor readings are the fab's parts being read through your new joints —
a value far off means a wrong part placed, which is worth knowing now.
Red
Black
Mode
Expect
Proves
J6 pin 2 · J8 pin 2 · J9 pin 3
A — J10 GND
·)))
beep, each
The three port grounds
J6 pin 1
JP2 lower pin
·)))
beep
The modem's supply pin is behind the shunt
J6 pin 1
J6 pin 2
·)))
no beep
No bridge on the modem port's supply
F — J8 pin 3
D — J10 3V3
Ω
~100 Ω [D]
R6, the DS18B20 supply's series resistor — too small for the beeper, right for Ω
G — J8 pin 1
D — J10 3V3
Ω
~4.8 kΩ [D]
R7 + R3: the data line's series resistor and its pull-up
J7 pin 3
A — J10 GND
Ω
~10 kΩ [D]
R4, the thermistor divider's bottom leg
E — JP2 upper pin
A — J10 GND
Ω
OL / climbing
The modem rail is not shorted, now that JP2 and J6 are in
Power through the meter: 0.00–0.01 mA. Volts, black on A:
Red on
Net
Expect
F — J8 pin 3
OW_3V3
3.3 V — the sensor port's supply, through R6 with nothing drawing
G — J8 pin 1
OW_DATA_J
3.3 V — the data line, held up by R3
E — JP2 upper pin
VBAT_RB
0 V — the modem switch is off; R2 holds its enable down
J6 pin 1
VBAT_RB_SW
0 V — and JP2 is out besides
J7 pin 1 · J9 pin 1
SENSE_EXC · LEAK_SENSE
0 V — both are module pins, and there is no module
Why the readings come out this way
100 Ω does not beep. A continuity beeper sounds below a threshold of a few
tens of ohms; R6 is above it. So the probe port's supply pin shows as
no beep to the rail, which is correct, and the Ω range is the right
tool: it reads the resistor the fab placed, through two of your joints.
4.8 kΩ from J8 pin 1 to 3V3 is R7 and R3 in series — resistances in a
chain add. The data pin reaches 3.3 V only through those two, which is also
why it reads 3.3 V in the volts table: with nothing drawing, no current
flows through them and so nothing is dropped across them.
10 kΩ from J7 pin 3 to ground is R4 alone: the thermistor is not plugged
in, so the top half of the divider is missing and only the bottom leg is there
to read.
J8 pin 3 reads a full 3.3 V through R6 for the same Ohm's-law reason:
no load, no current, no drop. Plug a sensor in later and a few millivolts will
go missing across R6 — harmless, and the sign that it is working.
JP2's upper pin reads 0 V because U3's ON pin is held at ground by R2
and a load switch that is off passes nothing — not even a leak the meter can
see. The rail exists only when the brain, or stage 4's jumper, lifts pin 26.
J7 pin 1 and J9 pin 1 read 0 V because they are wired straight to a
brain pin that is not there; an empty seat pin floats near ground on a board
this quiet.
Stage 3 — the sensor seats: SOCK_BARO and SOCK_BME
Seventeen socket joints on the carrier, and seven on the BMP581 breakout
itself, which ships bare. The breakouts then serve as jigs so the sockets go in
square.
In plain words
The goal: give the two sensors that live on the carrier itself —
the mission barometer and the weather sensor — sockets to plug into, and show
that both sockets sit on the always-on 3.3 V and share one data bus with the
fuel gauge's port.
The parts and their jobs:
The BMP581 is the mission's barometer: air pressure to ±0.3 hPa [D], the
measurement the whole science case rests on. It comes as a small board with
seven holes and no pins, so it gets a 7-pin header soldered on first. Only
its last four pins are used — data, clock, ground, 3.3 V — but the seat
is seven wide so the board cannot be plugged in one position off.
The BME280 measures temperature, humidity and pressure — the general
weather sensor. Its board has two rows of pins; the four-pin row is the one
wired (ground, 3.3 V, data, clock), the six-pin row only holds it steady.
SOCK_BARO and SOCK_BME are the female sockets you cut from the
strip, so each sensor plugs in and can be swapped without soldering.
How they talk: both sensors use I²C, a two-wire bus — one wire for
data (SDA), one for the clock (SCL) that paces it. Several devices share the same
two wires, each answering only to its own address: the BMP581 at 0x47, the
BME280 at 0x77, and the fuel gauge, plugged into QW1, at 0x36. All three hang
on the brain's pins 21 and 22, which the page calls I²C0. The GPS is deliberately
not on this bus: it sits on a second one (I²C1, pins 18 and 19,
through QW2) behind its own power switch, so it can be switched fully off.
A second barometer, a SparkFun Qwiic BMP581, rides the GPS's own second Qwiic port
(decided 2026-11-03): QW2 reaches the GPS and that sensor, both on I²C1, the barometer at 0x47
(the seat's address, on the other bus) and powered only while the GPS rail is up (FW-29); the
bench scan with that rail up finds 0x42 and 0x47 there.
Power:
3V3 rail → SOCK_BARO pin 7 · 3V3 rail → SOCK_BME pin 2 · 3V3 rail → QW1 red · (U2 → QW2 red stays at 0 V until stage 4 turns it on)
These sensors stay powered all the time — they draw microamps asleep and the
brain simply stops talking to them — so their seats are on the always-on rail, not
on a switch.
Parts for this stage
Part
Qty per board
Where from
Per the records
SOCK_BARO — a 7-way cut from the female strip
7 positions (+1 lost)
DigiKey 2223-SSK02-FPH-254-A40-ND, order 5
owned
SOCK_BME — a 4-way and a 6-way from the same strip
10 positions (+2 lost)
same strip
owned
DFRobot Fermion BMP581 (SEN0667) and the 10-pin male header it ships with, cut to 7
1
owned before 2026-09-09; three more arrived 2026-10-30
owned, 3 + 3 — LAND, SEA, the transfer standard; one of the first three is bad (2026-10-18)
SparkFun BME280 (SEN-13905), with its headers already on
1
1 owned; 2 more on SparkFun order 000460515; 2 on #000477281
owned — three on boards 1–3, one bad (2026-10-28), one spare
Qwiic → male-header cable, for probing QW1
bench
inventory, consumables
owned, 4
Target state — two seats, each holding its breakout while it is soldered
The BMP581 seat is seven wide though only its last four — SDA, SCL,
GND, 3V3 — are wired: the three extra holes stop the breakout being plugged in
offset by one. The BME280's 6-way is purely mechanical.
The BMP581's pin names are on its back silk, reading INT …
3V3; the header goes on that face so the sensor stays up and the names stay
readable when it is plugged in. Only the last four pins carry anything.
The breakout is the jig
A female socket soldered on its own leans. Drop the socket into its holes,
plug the breakout into the socket, and the breakout holds it vertical and —
for the BME280's two columns — parallel. Solder one end pin underneath, look
along it, then the rest. The breakout's pins get warm; that is all.
Pull both breakouts off before the checks. They are not part of this
page: the first time they are powered is the carrier spec's step 6.
The BMP581 covers J10
Seated, the barometer's board reaches over the service header with about
2.5 mm [C] between its underside and J10's pin tips:
the two rows are 7 mm apart on this revision, and the breakout is 16 mm wide.
Nothing on this page needs J10's pin tops while the sensor is in: the
meter points A, B and D are the cones underneath, and stage 4's jumper and
stage 5's reset are taken with the barometer pulled off, one tug. In flight
nothing plugs into J10. Moving the header clear is parked “with rev. 5, if there is
one” (backlog FW-18).
While the cell has no fuse in its + lead, no probe touches J10's pin tops at
all. The bench cell has none (FW-25; the pack's fuse rule is in stage 1's note). VBAT there
is the cell before any fuse, and GND is the next pin: on
board 1 a black probe moved onto J10 from above bridged the two and made
smoke (lab-notes/2026-10-14-carrier-board-1-stage-3.md, fault 4). The black
probe lives on A, the GND cone underneath; the red reads cones.
How it works inside — I²C, and why the carrier has no pull-up resistors
Two wires, many devices, one boss. I²C puts every device on the same two
wires: SDA carries the bits, SCL the clock that says when to read each one. The
brain is the boss — it drives the clock and starts every conversation by sending
a 7-bit address; only the device with that address answers, the rest stay
silent. That is how the BMP581 (0x47), the BME280 (0x77) and the fuel gauge
(0x36) share pins 21 and 22 without confusion. The BMP581 has a solder jumper
that moves it to 0x46, which only matters if two of them ever share a bus.
Nobody drives the wires high. Like 1-Wire, I²C devices can only pull a line
down; resistors — the pull-ups — lift it back when everyone lets go.
Two devices can therefore never push against each other. Each wire needs
pull-ups somewhere, and here is the design choice: the carrier has none.
Every breakout already carries its own pair, and three or four pairs in parallel
are still a fine pull-up. On the sensor bus that is merely tidy.
On the GPS bus it is the whole point. The GPS sits on a second bus
(pins 18/19 through QW2) with its rail switched by U2, and the GPS board's own
pull-ups are the only ones on that bus (the second barometer behind it shares
that rail, so it goes dark with it). A pull-up is a resistor to a rail — so a
pull-up on the carrier, tied to the always-on 3.3 V, would keep feeding the
switched-off GPS a trickle of current through its data pins, and the switch
would never really switch it off. With the pull-ups living on the GPS board,
they die when its rail does. Do not “improve” the carrier with pull-ups.
Why the seats are on the always-on rail. A sensor that is powered but not
spoken to sleeps on a microamp or two; switching it off and on would cost a
settling time at every reading and gain almost nothing. The GPS is different —
it draws tens of milliamps whenever it is powered — so it, and only it, gets a
switch.
Steps
Cut a 7-way, a 4-way and a 6-way from the female strip, each cut through the next cavity along.
The BMP581's own header. Snap 7 pins from the 10-pin header it came with. Pins through the board from the back (the face with the pin names), plastic against the back, long pins down; the sensor's face stays up. Push the long pins into the cut 7-way socket as a stand so the header sits square, then solder the seven on the sensor's top face.
SOCK_BARO. Drop the 7-way into its holes and plug the BMP581 into it, INT end at the silk's “INT<”, 3V3 end at “>3V3”. Solder one end pin underneath, check, then the rest.
SOCK_BME. The 4-way into the left column of holes (GND at the top), the 6-way into the right, the BME280 plugged across both so the two columns end up parallel. One pin in each, check, then all ten.
Pull the breakouts off — straight up.
Continuity, then power through the meter, then volts. Plug the Qwiic cable into QW1 to reach that port.
✔ Stage 3 passes when
Count socket positions from the square pad.
Red
Black
Mode
Expect
Proves
BARO position 6 · BME 4-way top
A — J10 GND
·)))
beep, each
The seats' grounds
BARO position 7 · BME 4-way 2nd
D — J10 3V3
·)))
beep, each
Both breakouts sit on the always-on rail
BARO position 4
BME 4-way 3rd
·)))
beep
SDA is one net across the two seats
BARO position 5
BME 4-way 4th
·)))
beep
SCL likewise
Qwiic cable black · red · blue · yellow
A · D · BME SDA · BME SCL
·)))
beep, each
QW1 is on the same bus
each socket position
the next one
·)))
no beep
No bridges — GND–3V3 at the top of each seat is the pair that matters
BMP581 breakout: its 3V3 pin
its GND pin
Ω
OL / climbing
Your seven joints on the breakout bridged nothing
On a meter without a beeper the ·))) rows are the lowest Ω range — the Klein's 2k (no 200 Ω position [M]): OL is no beep, and 0.000 to a few thousandths of a kΩ is beep — those few ohms are the trace and the probe contact.
Power through the meter, or across JP1 with its shunt off: 0.00–0.01 mA. Volts, black on A, red on the cones underneath: BARO position 7 and the BME 4-way's
2nd pin read 3.3 V; the Qwiic cable in QW1 reads 3.3 V on red; moved to
QW2 it reads 0 V on red — the GPS rail is switched, and its switch is off.
Why the readings come out this way
SDA beeps between the two seats, and SCL likewise, because a bus is one
net: every SDA pin on it is the same piece of copper. The Qwiic cable's blue
and yellow beep to the same two pins for the same reason — QW1 is a third door
onto the same two wires.
A seat position beeps to no neighbour because the four wired pins are all
different nets, and the bus wires carry no pull-ups on the carrier — so with
the breakouts off, SDA and SCL are not even joined to 3.3 V by a resistor.
Plug a breakout in and its pull-ups appear: SDA to 3V3 would then read a few
kilohms, not OL.
QW2's red reads 0 V and QW1's reads 3.3 because one is behind U2 and
one is not — the whole difference between the switched rail and the always-on
rail, seen in two measurements a centimetre apart.
The BMP581's own 3V3-to-GND reads OL/climbing for the same reason the
carrier's does: between a sensor's supply pins there is a capacitor and a
sleeping chip, nothing resistive. A steady few ohms there would be a bridge
among your seven joints on the breakout.
Stage 4 — the module seat
Thirty-two male pins that have to land exactly where a real FireBeetle's two
female strips are — so the FireBeetle itself is the jig. It is not powered and
nothing is plugged into it during this stage. Then the one test that exercises
both load switches before a module ever does.
In plain words
The goal: fit the seat for the brain, prove that every one of its 32 pins
reaches the right place on the carrier, and then — with a single jumper wire
standing in for the brain — prove the two power switches actually switch.
The parts and their jobs:
The FireBeetle 2 ESP32-E is the brain: a small computer on a 25 × 60 mm
board. It wakes once an hour, reads the sensors, stores the readings, and every
so often packs a batch into a short message for the modem; the rest of the
time it sleeps. It has WiFi
(never used here), a USB-C port for programming, and its own regulator and
battery charger (the carrier's U1 does that job better; the module's are
back-fed from the 3V3 pin, not bypassed — FW-19, stage 5's K reading). In this stage it is only a jig: unpowered, it holds the two pin
strips at exactly its own spacing while they are soldered.
SOCK_FB is the pair of male pin strips, 14 on the left and 18 on the right.
The module plugs onto them upside down — its own female strips are on the same
face as its radio can — so when seated you see its back.
The jumper wire plays the brain's part in the switch test: a brain
“turns a pin on” by putting 3.3 V on it, and a wire from a 3V3 pin — the
seat's own, left row second from the top — does exactly that.
Which pin does what — the carrier's silk names them, and these are the
ones that matter: 21/22 are the sensor bus (I²C0, stage 3); 18/19 the
GPS bus (I²C1, through QW2); 16/17 the serial link to the modem and 14
its ON/OFF line; 25 turns the GPS's power switch U2 on, 26 the modem's
switch U3; 4 is the temperature probe's 1-Wire line; 13 fires the
excitation pulse, 39 reads the thermistor and 35 the leak pads;
0 and RST are the boot and reset buttons, brought out on J10. The two
3V3 pins are where the carrier feeds the module, and VCC goes nowhere
while JP3 stays open.
With no module on, pins 25 and 26 rest at 0 V — R1 and R2 hold them down — so
both switches are off and both switched rails read 0. The jumper lifts one pin
to 3.3 V and the matching rail comes alive; pull it and the rail dies. That is the
whole power-gating idea of the probe, seen working on the bench.
Parts for this stage
Part
Qty per board
Where from
Per the records
SOCK_FB — a 14-pin and an 18-pin piece of the male strip
Shunt for JP2 — fitted during the switch test, then pulled
1
DigiKey S9001-ND, order 5
owned
Female–female jumper wire
1 (bench)
—
owned
Qwiic → male-header cable, for probing QW2
bench
inventory
owned, 4
Target state — the seat in, the carrier complete
All eighty joints in. The seat's pin names on the silk are what you
ring against: the right row's 21 and 22 are the wired I²C0 pins (the
left row's SCL/SDA are deliberately unconnected), 25 and 26 drive the
two switches, VCC goes nowhere while JP3 is open.
Pins into the carrier, module onto the pins (USB over the USB box,
its four mounting holes over the seat's four small holes), flip, solder.
Pull the module off afterwards, rocking end to end.
The one measurement that proves U2 and U3 — and R1, R2, C8, C9 —
with nothing that can be damaged, before a module ever drives them.
How it works inside — the load switch, and why the probe sleeps at its floor
A load switch is a transistor with a doorbell. Inside U2 and U3 is a MOSFET
between VIN and VOUT, like Q1's, plus a little control circuit on the ON pin.
ON high (anything over about a volt) and the control circuit drives the gate so
the transistor conducts — a few tens of milliohms, nothing lost. ON low and it is
off, passing under a microamp. The ON pin itself draws nothing measurable, which
is why a plain jumper from 3.3 V can work it and why the brain's pin can hold it
all hour for free.
R1 and R2 are the default. A pin with nothing connected floats, and a
floating ON pin could drift high and turn the GPS or the modem on by itself —
while the brain is asleep, or before it has booted and taken charge of its pins.
A 100 kΩ to ground makes “off” the answer whenever nobody is asking, at a
cost of 3.3/100000 = 33 µA only while the pin is held high, zero while
off.
C8 and C9 make the switch gentle. The CT pin sets how fast the output rises
when the switch turns on; with 4.7 nF there it ramps over a few milliseconds
instead of a tenth of one. The reason is the reservoirs on the far side: the GPS
board and the modem both carry capacitors on their supply, and a capacitor
presented with a voltage that appears instantly gulps a large current to fill
itself in no time. That gulp, pulled through the regulator or through the pack
link, would sag the rail and reset the brain. A ramp fills the same reservoirs
slowly and nothing notices.
Why this is the whole design in one test. The probe's budget rests on one
idea: the things that draw real current — the GPS at tens of milliamps, the
modem at hundreds during a burst — must draw nothing for the 59 minutes
an hour they are not needed. Not little; nothing. A switch in their supply is
the only way to get there, and this is the moment both switches are seen doing
it, with a voltmeter, before any firmware exists to blame.
Steps
Snap a 14-pin and an 18-pin piece from the male strip. Drop them, short end down, into the seat's two rows: the 14 on the left under VCC…17, the 18 on the right under RST…RX. Do not solder.
Plug the FireBeetle onto the long pins, upside down: its female strips face the carrier, so you are looking at the module's back; its USB connector sits over the carrier's USB box, its antenna end over the ANTENNA box. Its four mounting holes line up with the four small holes at the seat's corners — if they do not, it is turned round.
Flip the pair so the module lies on its back and the carrier sits on top of it, pins standing up through the carrier. Solder one pin at each end of each row. Flip back, look along the gap: the module must sit flat and parallel on the two strips. Flip and solder the other twenty-eight.
Pull the module off — straight up, rocking a little end to end, not side to side.
The bridge walk, then the net checks — first table, power off.
Power through the meter — across JP1 with its shunt off — no module: 0.00–0.01 mA. Volts: both seat 3V3 pins 3.3 V; seat VCC 0 V; seat 25 and 26 (I) 0 V — R1 and R2 holding the switches off with nothing driving them, the carrier spec's step 4.
The switch test — second table. Both sensors off their seats — the BMP581 covers J10. Jumper from the seat's own 3V3 pin (left row, second from the top — not J10's: the seat pin's neighbours are VCC on no net and GND, both harmless if the sleeve slips, and the cell's VBAT is nowhere near; board 1 did it this way) to seat 25, read, pull it; to seat 26, read, pull it; fit the JP2 shunt, jumper to 26 again, read at J6 pin 1, pull it. Pull the shunt. Unplug the cell.
✔ Stage 4 passes when
Bridges first: hold one probe on a seat pin and walk the other down the
row, pin by pin, both rows. No two neighbours share a net, so any steady
beep is a bridge. Without a beeper: the lowest Ω range (the Klein's 2k), OL down both rows, and
any number at all is a bridge. Then the nets:
Seat pin
Reaches
Mode
Expect
3V3 (left row 2nd) and 3V3 (right row 2nd)
D — J10 3V3
·)))
beep
GND (left row 3rd) and GND (right row 4th)
A — J10 GND
·)))
beep
21 · 22 (right row)
BME SDA · BME SCL
·)))
beep — I²C0
18 · 19
QW2 via the cable: blue · yellow
·)))
beep — I²C1, the GPS bus (and the second barometer behind it)
14 · 16 · 17
J6 pin 5 · J6 pin 4 · J6 pin 3
·)))
beep — ON/OFF, modem TX, modem RX
13 · 39
J7 pin 1 · J7 pin 3
·)))
beep — the thermistor's excitation and sense
35
J9 pin 1
·)))
beep — leak sense
4
G — J8 pin 1
Ω
~100 Ω — R7 is in the way
0 · RST
J10 IO0 · J10 RST
·)))
beep — the service header reaches the seated module's buttons
VCC (left row top, square)
anything
·)))
no beep to any rail — JP3 is open
The switch test, cell on, JP1 in:
Jumper from the seat's 3V3 pin →
Read, red on
Expect
Proves
seat 25
H — Qwiic cable red, in QW2
3.3 V; pull the jumper, 0 V within a second
U2 switches the GPS rail on and off
seat 26
E — JP2 upper pin
the cell's voltage; pull the jumper, 0 V
U3 switches the modem rail on — and the rail is the pack's voltage, not 3.3, as ADR 0014 wants
seat 26, JP2 shunt fitted
J6 pin 1
the cell's voltage; pull the jumper, 0 V
The shunt carries the rail to the modem port
The carrier is finished and every net on it has been seen from both ends.
Why the readings come out this way
Any beep between neighbouring seat pins is a bridge because the designer
arranged that no two adjacent pins share a net — so the walk down the row has
no exceptions to remember. (The two pins marked NC and the left row's SCL/SDA
are connected to nothing on the carrier; a bridge onto one of those is harmless
but still sloppy.)
Seat 4 to J8 pin 1 reads 100 Ω, not a beep — R7 sits between them, by
design, so a flooded probe cable meets a resistor before it meets the brain.
Board 1 read 0L here first and 99 [M]
once the probe was pressed into J8's cone: a probe resting on flux reads open.
Before reheating anything, read each end to D on the 20 kΩ range — seat 4 gives
R3, J8 pin 1 gives R7 + R3 — and if both answer, the gap is the probe.
Seat 25 and 26 read 0 V with nothing on them — R1 and R2 pulling them to
ground, the pull-down idea at work. If one read 3.3 V here, a switch would be on
with nobody asking, and a sleeping probe would be burning its GPS budget.
The jumper lifts a rail within a blink and pulling it drops the rail within a
second — the rise is the soft-start ramp (milliseconds), the fall is the far
side's reservoir draining through the meter's own 10 MΩ and whatever is on the
cable; nothing on the carrier actively discharges it, which is fine.
JP2's upper pin shows the cell's voltage, not 3.3, because U3's input is
VBAT: the modem is deliberately fed from the pack, ahead of the regulator, so
its transmit bursts never pass through a 250 mA part. That was decision ADR
0014; this reading is it, on the bench.
The current during the test is ~0.03 mA — the 3.3 V on the jumper, across
R1's or R2's 100 kΩ to ground. Ohm's law, and the only thing on the board that
is drawing.
Stage 5 — the module's first boot from the carrier
Nothing is soldered. Two things are asked: does the carrier's regulator hold
the rail with an ESP32 drawing from it, and does feeding 3.3 V into the
module's own 3V3 pin — how this board powers it, and undocumented by DFRobot —
leave the module running cleanly. The first is pass/fail; the second is a
measurement to record either way.
In plain words
The goal: the brain runs on the carrier, from the cell, for the first
time — and the regulator you fitted in stage 1 keeps the 3.3 V steady while a
real computer draws from it.
The parts and their jobs:
The FireBeetle, this time powered. It carries the project's firmware in
its bench build: the same program the probe will run, with every “hour”
shortened to ten seconds so a whole day of wake-read-sleep plays out in a
minute. It prints what it is doing over USB — but USB is not plugged in
during this test, so what you watch instead is the current it draws and the
voltage it leaves on the rail.
The cell and harness from stage 1, and the JP1 shunt — in, so the
regulator feeds the module. The JP2 shunt stays out: no modem is
connected, and its rail stays dead.
The meter on its 10 A range in the + lead, because the module's draw
would make the fine mA range itself steal too much voltage.
How the power reaches the brain:
cell → J5 → Q1 → F1 → U1 → JP1 → 3V3 rail → the module's 3V3 pin → the ESP32
That last hop is the unusual one. The module's 3V3 pin is normally an
output of its own regulator; the carrier pushes 3.3 V into it
instead, which DFRobot never documented either way. If the module runs cleanly,
fine. If it keeps resetting, or its USB-side rail (probe point K) comes
alive from the inside — it has, on every module measured — that is one input to whether JP3, the
alternative feed through the module's own regulator, ever gets closed, not the whole of it (FW-19). Either way you write the numbers down; this stage is as much a measurement as a test.
Talk: none yet. The sensors are not plugged in, so the firmware will note
that it found nothing and carry on; the modem port is dead. Both are the next
phases' work, on USB, with the JP1 shunt pulled — the flight board checklist's, for boards 2–5.
Parts for this stage
Part
Qty
Where from
Per the records
DFRobot FireBeetle 2 ESP32-E, flashed with the project firmware's bench build
1
ordered 2026-08-09
owned, 3
A USB-C cable and the laptop with PlatformIO, for the flash — off the carrier
bench
—
not on record
The bench harness and cell from stage 1; JP1's shunt
—
—
made in stage 1
Target state — the module seated and running from the cell
JP1 in, JP2 out, no USB. The module hides the seat pins, which is
what J10 is for: VBAT, GND and 3V3 stay reachable beside
it, and the module's reset and boot buttons, now facing the carrier, are
reachable through J10's RST and IO0 — with the BMP581 pulled off its seat first,
since it covers J10. The meter in the gap is on the
10 A range for this stage.
How it works inside — what the brain does with the power, and what the meter will show
A boot is a surge, then a rhythm. When power arrives the ESP32 charges its
own reservoirs and starts its clocks — a brief spike of a hundred milliamps or
more — then runs the firmware's loop: wake, try the sensors, try the GPS, note what
answered, sleep. In the bench build an “hour” is ten seconds, so on the
10 A range you will see the number flick up during a wake and settle during a
sleep, over and over. A radio burst would be a far bigger spike, and this build
never makes one.
Why the mA range would lie here. A meter measures current by passing it
through a small internal resistor and reading the voltage across it. On the mA
range that resistor is a few ohms: at 100 mA, Ohm's law says it drops a few
tenths of a volt — enough, from a 3.7 V cell, to pull the regulator's input
under what it needs and brown the module out. The 10 A jack uses a resistor a
hundred times smaller, and the drop vanishes. The price is a coarser last digit,
which this test does not need.
Why the module runs on its own 3V3 pin. The FireBeetle expects to be fed
5 V on VCC and to make its own 3.3 V. The carrier skips that: U1 was chosen
for its 1.6 µA [D] idle, and feeding 3.3 V straight into the pin the module's
regulator would normally drive keeps that second regulator's own idle out of the sleep
budget. A regulator
whose output is held at its own setpoint simply does nothing — unless some
current finds its way backwards through it into the module's 5 V side, which
is what the K reading looks for, and on every module measured it does: the back-fed
VCC reaches the module's battery node through Q3, where the WS2812 hangs through the uncut
Low Power Pad. JP3, if it is ever closed, would feed VCC
instead; energy does not decide it, and a closed JP3 puts USB's ~4.7 V onto the
3.3 V rail (FW-19, where K, which follows the module, is one input).
What “the rail holds” means. The regulator can give 250 mA; a brain
without its radio asks for well under that. If J10's 3V3 stays near 3.3 V while
the current moves, supply and demand are matched. If it keeps dipping and
recovering, the module is drawing more than the regulator can give at some
instant — resetting, and starting again — and the design, not the soldering, is
what that result is about.
Steps
Flash the module off the carrier, on USB, with the project
firmware's bench build — pio run -e bench -t upload from
device/firmware/, as its README says. It prints over serial
at 115200 and never touches WiFi or Bluetooth, which is the point: the radio's
bursts are what a 250 mA regulator cannot feed. A module that arrives with
a factory demo on it may well scan WiFi at boot, so do not seat an unflashed
one. On a Mac the module's CH340 may need WCH's own driver before a port
appears at all — board 1's module reports a USB product ID that Apple's
built-in driver does not list — and a cable that only charges shows no port
either. Watch the serial monitor for a wake line
before unplugging: that is the flashed build running.
Unplug USB.JP1 shunt in, JP2
shunt out, cell not yet plugged. Seat the module, USB end to the USB box.
Move the meter's red lead to the 10 A jack, dial on A. Put it in the
+ lead's gap as before — or, when that gap has been soldered shut, across
JP1's two pins with the shunt off, as board 1 did — and
plug the harness into J5. Across JP1 the meter is
the shunt: nothing lights until both probes land, the module boots the moment
they do, and a minus sign is only the probes the other way round.
Read the table. Then unplug the cell. That closes the soldering.
✔ Stage 5 passes when
Reading
Expect
Means
current, 10 A range
0.02–0.15 A [C]
An ESP32 running without its radio is tens of milliamps. On the bench build the “sleep” keeps the chip and its serial port awake, so the number may hold still — board 1 read 0.03 A [M], boards 2 and 3 the same by 2026-10-28, and it did not move (lab-notes/2026-10-14-carrier-board-1-stage-5.md). A steady 0 is a module not booting; a steady half-amp is a fault — unplug
D — J10 3V3, on its cone underneath, meter out of the gap and the gap joined
3.2–3.37 V, steady
The regulator holds the rail. A reading that keeps dipping toward 2.5 V and recovering is the module browning out and resetting — stop, record it: that is the design's problem, not the soldering's
B — J10 VBAT, its cone underneath
the cell's voltage, down a few tens of mV
Q1, the harness and the cell's own resistance carrying a real current — B is upstream of the polyfuse, so F1 is not in this reading
K — the square pad at the top of the 14-pin row, underneath the board
record it
That is the module's VCC — its USB-side rail. 0 V would mean the carrier's feed stays on the 3V3 side; a reading near the rail means it passes back through the module's regulator onto VCC, and through Q3 to the module's battery node (the CH340K USB chip is on VUSB behind D2 and is not back-fed, on paper; the VCC-side µA reading is owed, FW-30). Either is a fact the power budget needs; neither is a fault on this page. Board 1 read 3.03 V with 3.33 V on the rail [M] — the leak case; later, three modules read 3.29, 3.14 and 3.24 → 3.02 V [M]: K follows the module, not the board (FW-19)
touch U1 after a minute
barely warm at most
At 50 mA from a 4 V cell it dissipates ~35 mW [C]
Why the readings come out this way
The current sits at tens of milliamps because the chip is working with
its radio off. The bench build's “sleep” keeps the chip and the serial
port awake, so the number need not move at all; it is the real build's deep
sleep that drops it to the floor, ~648 µA [C] as built (board 1 read 0.73 mA
at JP1 [M]), which only a meter with a fine current range can see. A zero is a
chip that never started.
VBAT is now a few tens of millivolts below the cell — the same Q1
that dropped nothing on the bare board now carries real current, and Ohm's law
gives it a real drop, plus the harness's contacts and the cell's own internal
resistance. B is Q1's output, ahead of F1, so the fuse is not in this reading
(at a working 0.1 Ω it drops 0.1 Ω × 0.05 A = 5 mV [C], seen only at U1's middle leg).
U1 is barely warm because its waste is the volts it drops times the
current: 0.7 V × 0.05 A = 35 mW [C], a small fraction of what a finger notices.
K is “record it”, not pass/fail, because either answer is consistent
with a working board. 0 V would say the module's regulator blocks backward flow;
a reading near the rail says it does not, and that the module's battery node (its charger
chip, a divider and the status LED) is being fed through Q3, which the sleep budget must
then account for. So far every module has, by a different amount.
To see the serial output and go on to the sensors: pull the
JP1 shunt, plug USB in. The module then feeds the carrier's
3V3 rail from its own regulator, every seat is live, and the carrier spec's
steps 6–9 — the I²C scans, the DS18B20, the thermistor, the leak pads, the modem
last — run from there — for boards 2–5, in the flight board checklist. They need
firmware, not solder.
What this page does not prove
FW-01 · FW-30
Anything in microamps. The EverStart's mA range reads to 10 µA at
best; every “0.00 mA” above means “below the first digit”, not a
measurement. The Klein MM325 reads 0.1 µA steps since 2026-10-30, and the floor as built
— ~648 µA [C] (~617 at JP1), the two LEDs most of it — is FW-30’s
reading, not this page’s: board 1 read 0.73 mA at JP1 on 2026-11-03 [M]
(1.0–1.3 before its BME280 went into forced mode, FW-31); boards 2–3 and the VCC side are owed.
FW-19
What the back-fed VCC side costs. Stage 5 showed the module's
own regulator passing the carrier's 3.3 V backwards onto its VCC rail, which reaches the
module's battery node through Q3; the CH340K USB chip is on VUSB behind D2 and is not
back-fed, on paper. What the VCC side idles at is a µA reading on each module (K follows the
module, not the board). This page only records the volts.
FW-02 · FW-03
The modem and the GPS. Both rails are shown to switch here; the loads have since been on them, off this page. The modem sent three times on 2026-10-17 and its cold start is measured: 12.0 s, 7.0 s, and 9.0 s on both modems outdoors [M]; FW-02 owes only the pack's low end. The SAM-M8Q gave NMEA at 0x42 over I²C1 and a fix in 26 s [M]; FW-03's adapter is what remains.
DOC-18
Which carrier flies. This page builds the fabbed carrier; the wiring guide builds the hand-made one to the same standard. The decision between them is an ADR after bench gates ①–④, not a soldering outcome.
not tracked
The shunts for flight.JP1 and JP2
are shunts on the bench and get soldered or replaced by a wire link before a board
goes to sea — a loose shunt on a drifting buoy is a silent dead station. Not yet.
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.