Docs › Crescent City › DVT Report V1.0

Design Verification Testing

DVT Report — V1.0

How the first prototypes of Crescent City (V1.0, Rev A) were tested: 122 bench tests across 16 subsystems, plus a full battery discharge and a full charge.

Board V1.0 (Rev A) · ESP32-S3-WROOM-1-N8 Tests 122 Pass 120 Fail 2 Updated October 28, 2026
Current board: V2.0 report →

Summary

120 of 122 tests pass

Every planned test was run on the V1.0 prototypes. The breadboard fit is fixed on V2.0, and the USB part works on the first V2.0 boards (see Findings). The current board has its own V2.0 report. The numbers most people ask about:

Battery life
14 hper 1000 mAhWeather Clock 1.0, Wi‑Fi always on, ≈70 mA. With firmware 2.1 on V2.0: ≈24 h.
Charging
201 mAconstant currentV2.0: 303 mA
Deep sleep
0.88 mAon batteryV2.0: 0.78 mA
Battery cutoff
2.42 Vbattery protectionthen ≈1.2 µA

Findings

What we found, and what changed for V2.0

Battery life: about 14 hours per 1000 mAh, 24 with firmware 2.1

Confirmed

Battery run · October 2026

With Weather Clock 1.0 running and Wi‑Fi always on, the board averages about 70 mA: 25.4 hours of working time on a full cell (see below). Weather Clock 2.1 turns the radio off between weather updates and slows the processor on battery: about 41 mA, or 24 hours per 1000 mAh, measured on a V2.0 board (V2.0 report).

When the battery runs out, the board keeps rebooting

Fixed in firmware 2.1

Battery run · October 2026

For its last 2.5 hours on battery the board was on but not working: it rebooted over and over, then hung, until the battery protection cut off at 2.42 V. Weather Clock 2.1 adds a low-battery shutdown: it warns at 3.45 V, shows a low-battery screen at 3.30 V and sleeps until USB is plugged in. No hardware change was needed. On a V2.0 board it shut down cleanly with no reboots (V2.0 report).

Charging works as designed

Pass

CHG · 8 of 8 pass

Charge current 201 mA (design value 196 mA), the cell reaches 4.19 V (4.20 V charger setting), and charging stops cleanly at 15 mA with no restart. A full charge from empty took 6.7 hours per 1000 mAh on the test bench. V2.0 charges at 303 mA (V2.0 report).

USB did not connect on the first prototypes

Fixed

MCU-001 · fail

The USB protection part on the first prototype boards blocked the USB data lines. After rework, USB connects and flashes normally. The first V2.0 boards connect normally, and USB is checked on every board in the factory test.

Tight fit in a breadboard

Fixed on V2.0

VIS-011 · fail

The header rows are on the standard 2.54 mm grid; the pins tilted slightly when the headers were soldered, so the first prototypes took extra force to press in. The V2.0 boards seat in a standard breadboard.

Smaller changes for V2.0

Done

VIS-003 · VIS-007

Pin labels are now printed on the front as well as the back, and the battery connector is a JST‑PH 2.0 mm that sits flush with the board edge (V1.0 used JST‑XH).

Battery & power

Battery life, low-battery behavior and charging

A V1.0 board ran test builds of the Weather Clock (firmware 1.0, Wi‑Fi always on) through one full discharge and one full charge, logged every second. The V2.0 runs with firmware 2.1 are in the V2.0 report.

Working time
25.4 hat ≈70 mAabout 14 h per 1000 mAh
On, not working
2.5 hbefore the cutoffreboot loops; fixed in firmware 2.1
Charge current
201 mAconstant currentstops at 15 mA (7.6 %)
Charge time
6.7 hper 1000 mAhon the test bench

A full battery discharge

25.4 hours working at about 70 mA, then 2.5 hours on but not working before the battery protection cut off at 2.42 V.

Chart and details

A V1.0 board ran the Weather Clock on a single Li‑ion cell (18650, 4.06 V at the start) until the battery protection switched it off. Current, cell voltage and the 3.3 V rail were logged every second for 28 hours.

Two-panel chart of a full battery discharge. Left: over 28 hours the cell voltage falls from 4.06 V to about 3.7 V by hour 23, then drops steeply; the 3.3 V rail holds flat until about hour 25; battery current sits near 68 mA with a few 110 to 120 mA bumps. Right: the last four hours, shaded into phases (working, rail sags, reboot loop, hardware reset loop, hung), ending at the protection cutoff at 2.42 V, where the current drops to zero.
Fig. 1 — Left: the whole run. Right: the last four hours. The ≈110 mA episodes (20–25 minutes, about every 8 hours) are stretches when network traffic keeps the Wi‑Fi radio awake.
  • 25.4 hours working at about 70 mA. The 3.3 V rail held steady until the last half hour.
  • Then 2.5 hours on but not working. As the cell ran low, the 3.3 V rail sagged and the board rebooted hundreds of times, then kept resetting before the firmware could start, and finally hung at about 8 mA.
  • Protection cutoff at 2.42 V. The battery protection disconnected the cell; the board then draws about 1.2 µA.
  • The fix is firmware. The board already measures its battery voltage, so Weather Clock 2.1 shuts down cleanly before the rail starts to sag. That gives up about 30 minutes of runtime.

V2.0 with Weather Clock 2.1: 45.5 hours at about 41 mA (about 24 hours per 1000 mAh), then a clean shutdown at 3.30 V — see the V2.0 report.

Where the current goes

About 70 mA with Wi‑Fi always connected. When network traffic keeps the radio awake the current rises to about 110 mA, and short transmit pulses reach 400 mA for microseconds without disturbing the 3.3 V rail. Weather Clock 2.1 turns the radio off between weather updates and slows the processor on battery, which brings the average down to about 41 mA on V2.0.

Charging

201 mA constant current, then a taper to a clean stop at 15 mA: 1,938 mAh in 13.0 hours on the test bench, or 6.7 hours per 1000 mAh.

Chart and details

The same V1.0 board then charged the same cell from empty to full over USB‑C, again logged every second.

Two-panel chart of a full charge from empty. Top: cell voltage rises from 3.0 V to about 4.0 V during constant-current charging, then creeps up to 4.19 V just under the 4.20 V charger limit. Bottom: charge current holds at 201 mA for 4.8 hours, then tapers and stops at 15 mA after 13.0 hours.
Fig. 2 — Top: cell voltage. Bottom: charge current. The small step at 12.2 hours is the current meter switching range, not the board; charging carried on to the normal stop at 15 mA.
  • Constant current: 201 mA against a 196 mA design value.
  • Full charge: 4.19 V at the cell (4.20 V charger setting). The charger holds it while the current tapers.
  • Charging stops at 15 mA (7.6% of the charge current), as designed, and did not restart overnight.
  • 1,938 mAh in 13.0 hours on the test bench. The bench wiring added about 1 Ω, which starts the taper early, so a cell plugged straight into the board charges somewhat faster.

V2.0 charges at 303 mA: 1,888 mAh in 10.3 hours on the test bench, or 5.4 hours per 1000 mAh — see the V2.0 report.

How we tested
  • Current: a power profiler in the battery or USB supply line, 1 sample per second (100,000 per second for short traces).
  • Voltage: a data logger on the cell, the board’s battery input and the 3.3 V rail, 1 sample per second.
  • Firmware: a test build of Weather Clock 1.0 with a heartbeat output and a serial status line, to mark exactly when it stopped working.
  • Data: V1.0 full discharge and full charge, 10-second averages (CSV). The V2.0 data is in the V2.0 report.

All tests

Every test, by subsystem

Open a subsystem, then tap a test to see what was expected and what was measured.

VIS · Visual & mechanical inspection

10 pass1 fail
VIS-001Overall solder quality: tombstones, missing parts, obvious bridgespassPass

Expected: None

Measured: pass

Tracker VIS-001 · Plan §VIS-01

VIS-002D2, D3 polarity: cathode band toward V_SYS sidepassPass

Expected: Bands correct on both

Measured: pass

Tracker VIS-002 · Plan §VIS-02

VIS-003Pin-1 orientation vs silk: U1, U5, U6, D1, Q1, Q2, Q3passPass

Expected: All correct

Measured: pass

Tracker VIS-003 · Plan §VIS-03

VIS-004ESP32 module: aligned, castellations wetted, antenna cleanpassPass

Expected: Clean

Measured: pass

Tracker VIS-004 · Plan §VIS-04

VIS-005USB-C J1: all 16 pins wetted, no bridges, anchors solderedpassPass

Expected: Clean

Measured: pass

Tracker VIS-005 · Plan §VIS-05

VIS-006FPC1: 0.5 mm pins no bridges, actuator latch intactpassPass

Expected: Clean

Measured: pass

Tracker VIS-006 · Plan §VIS-06

VIS-007J2 battery conn: seated flat; J4/J5 headers straightpassPass

Expected: Clean

Measured: pass

Tracker VIS-007 · Plan §VIS-07

VIS-008SW1/SW4 buttons click mechanicallypassPass

Expected: Both click

Measured: pass

Tracker VIS-008 · Plan §VIS-08

VIS-009Board: no deep scratches, mousebite quality acceptablepassPass

Expected: OK

Measured: pass

Tracker VIS-009 · Plan §VIS-09

VIS-010Connect the OLED screen and frame, check the fitpassPass

Expected: OK

Measured: pass

Tracker VIS-010 · Plan §VIS-10

VIS-011Plug the board in breadboard, check the fitFailFail

Expected: Seats in a breadboard without extra force

Measured: Fail

Notes: The header pins tilted slightly when they were soldered, which makes the board hard to push into a breadboard. Fixed on V2.0.

Tracker VIS-011 · Plan §VIS-11

PRE · Unpowered electrical checks

12 pass
PRE-001V_USB → GND resistance (probe D3.2)5.8k ΩPass

Expected: Not a short (above 1 kΩ)

limits 1000 – +∞ Ω

Measured: 5.8k Ω

Tracker PRE-001 · Plan §PRE-01

PRE-002V_SYS → GND (probe D2.1)224k ΩPass

Expected: High / climbing (> 50 kΩ)

limits 50000 – +∞ Ω

Measured: 224k Ω

Tracker PRE-002 · Plan §PRE-02

PRE-0033V3 → GND (probe J4.2)42k ΩPass

Expected: > 5 kΩ and climbing (no short)

limits 5000 – +∞ Ω

Measured: 42k Ω

Tracker PRE-003 · Plan §PRE-03

PRE-004+5V pin (J5.12) → GND258k ΩPass

Expected: > 10 kΩ

limits 10000 – +∞ Ω

Measured: 258k Ω

Tracker PRE-004 · Plan §PRE-05

PRE-005Diode mode: red on D3.2 (V_USB), black on D2.1 (V_SYS)0.2 VPass

Expected: 0.15–0.40 V (SS34 forward)

limits 0.15 – 0.4 V

Measured: 0.2 V

Tracker PRE-005 · Plan §PRE-06

PRE-006Diode mode reversed: red on V_SYS, black on V_USBPass

Expected: OL

Tracker PRE-006 · Plan §PRE-07

PRE-007Diode mode: red on J5.12, black on V_SYS0.2 VPass

Expected: 0.15–0.45 V (F1 + D2 forward)

limits 0.15 – 0.45 V

Measured: 0.2 V

Tracker PRE-007 · Plan §PRE-08

PRE-008USB D+ ↔ D− (D1.1 ↔ D1.3)100 MΩPass

Expected: OL / > 1 MΩ (no short)

limits 1 M – +∞ Ω

Measured: 100 MΩ

Tracker PRE-008 · Plan §PRE-09

PRE-009USB VBUS ↔ D+ and VBUS ↔ D−Pass

Expected: No short

Tracker PRE-009 · Plan §PRE-10

PRE-010J2.1 ↔ J2.2 (battery pins)Pass

Expected: No short (> 100 kΩ)

limits 100000 – +∞ Ω

Tracker PRE-010 · Plan §PRE-11

PRE-011Diode mode: red on C3.2 (BATT+), black on J2.10.35 VPass

Expected: ≈ 0.4–0.7 V (Q3 body diode)

target 0.55 · limits 0.3 – 0.7 V

Measured: 0.35 V

Tracker PRE-011 · Plan §PRE-12

PRE-012EN → GND / IO0 → GNDPass

Expected: No short

Tracker PRE-012 · Plan §PRE-13

PWR · Power-up & power rails

27 pass
PWR-001Smoke test: Supply current after 5 s (5V 100mA limit)20 mAPass

Expected: 30–90 mA, stable

limits 15 – 90 mA

Measured: 20 mA

Tracker PWR-001 · Plan §PWR-01

PWR-002Smoke test: Current limit NOT hitPass

Expected: No CC indication

Tracker PWR-002 · Plan §PWR-01

PWR-003Smoke test: Components temperature after 60sPass

Expected: < warm

Tracker PWR-003 · Plan §PWR-01

PWR-004Smoke test: Green LED2Pass

Expected: ON

Tracker PWR-004 · Plan §PWR-01

PWR-005Rail voltages: V_SYS (D2.1)4.7 VPass

Expected: 4.5–4.8 V

limits 4.5 – 4.8 V

Measured: 4.7 V

Tracker PWR-005 · Plan §PWR-02

PWR-006Rail voltages: 3V3 (J4.2)3.29 VPass

Expected: 3.25–3.35 V

target 3.3 · limits 3.25 – 3.35 V

Measured: 3.29 V

Tracker PWR-006 · Plan §PWR-02

PWR-007Rail voltages: EN (U2.3)3.28 VPass

Expected: ≈ 3V3

target 3.3 · limits 3.25 – 3.35 V

Measured: 3.28 V

Tracker PWR-007 · Plan §PWR-02

PWR-008Rail voltages: BATT+ (C3.2) without batteryPass

Expected: ~0 V or drifting

Tracker PWR-008 · Plan §PWR-02

PWR-009USB power path: V_USB (D3.2)5.2 VPass

Expected: 4.75–5.25 V

target 5 · limits 4.75 – 5.25 V

Measured: 5.2 V

Tracker PWR-009 · Plan §PWR-03

PWR-010USB power path: V_SYS4.9 VPass

Expected: V_USB − 0.2…0.45 V

Measured: 4.9 V

Tracker PWR-010 · Plan §PWR-03

PWR-011USB power path: 3V33.29 VPass

Expected: 3.25–3.35 V

target 3.3 · limits 3.25 – 3.35 V

Measured: 3.29 V

Tracker PWR-011 · Plan §PWR-03

PWR-012USB power path: Input current idle20 mAPass

Expected: 15–90 mA

limits 15 – 90 mA

Measured: 20 mA

Tracker PWR-012 · Plan §PWR-03

PWR-013USB power path: VUSB_SENSE (U2.38)2.58 VPass

Expected: V_USB ÷ 2 ± 3 %

target 2.5 · limits 2.42 – 2.58 V

Measured: 2.58 V

Notes: Limits assume V_USB = 5.00 V.

Tracker PWR-013 · Plan §PWR-03

PWR-014USB-C orientation: A-to-C cable plug 1Pass

Expected: Powers on

Tracker PWR-014 · Plan §PWR-04

PWR-015USB-C orientation: A-to-C cable flippedPass

Expected: Powers on

Tracker PWR-015 · Plan §PWR-04

PWR-016USB-C orientation: C-to-C cable plug 1Pass

Expected: Powers on

Tracker PWR-016 · Plan §PWR-04

PWR-017USB-C orientation: C-to-C cable flippedPass

Expected: Powers on

Tracker PWR-017 · Plan §PWR-04

PWR-0183V3 static load: 150 mA across 3V3 and GND3.29 VPass

Expected: ≥ 3.25 V

limits 3.25 – +∞ V

Measured: 3.29 V

Tracker PWR-018 · Plan §PWR-05

PWR-0193V3 static load: 300 mA across 3V3 and GND3.29 VPass

Expected: ≥ 3.20 V

limits 3.2 – +∞ V

Measured: 3.29 V

Tracker PWR-019 · Plan §PWR-05

PWR-0203V3 dynamic droop: TX bursts (scope)50 mVppPass

Expected: < 150 mVpp; min > 3.0 V

Measured: 50 mVpp

Tracker PWR-020 · Plan §PWR-06

PWR-0213V3 dynamic droop: minimum voltage during TX burst (scope)3.27 VPass

Expected: min > 3.0 V

limits 3 – +∞ V

Measured: 3.27 V

Tracker PWR-021 · Plan §PWR-06

PWR-0223V3 dynamic droop: No brownout resets over 5 minPass

Expected: None

Tracker PWR-022 · Plan §PWR-06

PWR-023Min battery: Lowest supply voltage w/ no brownout2.8 VPass

Expected: ≤ 3.3 V

limits −∞ – 3.3 V

Measured: 2.8 V

Notes: Bench supply with a light load. On a real cell with Wi‑Fi running, the board browned out from about 3.0 V (see the battery run above).

Tracker PWR-023 · Plan §PWR-07

PWR-024Min battery: Voltage where board browns out2.45 VPass

Expected: Record

Measured: 2.45 V

Notes: Bench supply with a light load. On a real cell with Wi‑Fi running, the board browned out from about 3.0 V (see the battery run above).

Tracker PWR-024 · Plan §PWR-07

PWR-025Sleep current: @ 3.8 V0.884 mAPass

Expected: ≈ 0.6–0.9 mA

limits 0.6 – 0.9 mA

Measured: 0.884 mA

Tracker PWR-025 · Plan §PWR-08

PWR-026Sleep current: Same with LED2 lifted115 µAPass

Expected: < 120 µA

limits −∞ – 120 µA

Measured: 115 µA

Tracker PWR-026 · Plan §PWR-08

PWR-027+5V pin is input-only: Voltage at J5.120 VPass

Expected: ≈ 0 V / floating

target 0 · limits −∞ – 0.5 V

Measured: 0 V

Tracker PWR-027 · Plan §PWR-09

CHG · Battery charger

8 pass
CHG-001Fast-charge current into battery198 mAPass

Expected: 170–240 mA

target 196 · limits 170 – 240 mA

Measured: 198 mA

Tracker CHG-001 · Plan §CHG-01

CHG-002PROG pin (U5.5) voltage during fast charge0.998 VPass

Expected: ≈ 1.0 V

target 1 · limits 0.9 – 1.1 V

Measured: 0.998 V

Tracker CHG-002 · Plan §CHG-02

CHG-003Yellow LED1 during chargePass

Expected: ON

Tracker CHG-003 · Plan §CHG-03

CHG-004BATT+ plateau near end of charge4.18 VPass

Expected: 4.168–4.232 V

target 4.2 · limits 4.168 – 4.232 V

Measured: 4.18 V

Tracker CHG-004 · Plan §CHG-04

CHG-005Termination: charge current at end15 mAPass

Expected: < 20 mA then LED1 OFF

limits −∞ – 20 mA

Measured: 15 mA

Tracker CHG-005 · Plan §CHG-05

CHG-006No battery connected (USB in)blinkPass

Expected: LED1 off or faint blink

Measured: blink

Tracker CHG-006 · Plan §CHG-06

CHG-007Charge + system running (WiFi demo): USB current442 mAPass

Expected: Record

Measured: 442 mA

Tracker CHG-007 · Plan §CHG-07

CHG-008U5 temperature during fast charge at VBAT ≈ 3.6 V44 °CPass

Expected: Record temp

Measured: 44 °C

Tracker CHG-008 · Plan §CHG-08

BAT · Battery protection & power path

6 pass
BAT-001Reverse polarity: bench supply on J2 REVERSED 4VPass

Expected: Current ≈ 0, board dead

Tracker BAT-001 · Plan §BAT-01

BAT-002Under-voltage cutoff: lower slowly to 2.3 V2.45 VPass

Expected: DW01A cuts discharge at 2.4 ± 0.1 V

target 2.4 · limits 2.3 – 2.5 V

Measured: 2.45 V

Tracker BAT-002 · Plan §BAT-02

BAT-003UV recovery: raise supply back to ≈ 3.0 VPass

Expected: Board recovers and reboots

Tracker BAT-003 · Plan §BAT-02

BAT-004Switchover battery → USB: run demo on battery, plug USBPass

Expected: No reset; Q1 off, D3 takes over; V_SYS steps up to ≈ 4.6 V

Tracker BAT-004 · Plan §BAT-05

BAT-005Switchover USB → battery: unplug USB while runningPass

Expected: No reset; V_SYS drops to VBAT

Tracker BAT-005 · Plan §BAT-06

BAT-006Backfeed check: USB in, no battery — voltage at J2.14.12 VPass

Expected: Charger voltage ≈ 4.2 V region (may cycle); confirm NOT 5 V

limits −∞ – 4.4 V

Measured: 4.12 V

Tracker BAT-006 · Plan §BAT-07

MCU · Processor bring-up

6 pass1 fail
MCU-001Plug USB to PC, blank flashFail

Expected: Enumerates as Espressif USB JTAG/serial debug unit (VID 303A, PID 1001)

Notes: The USB protection part (D1) blocked the USB data lines. After rework, USB enumerates correctly.

Tracker MCU-001 · Plan §MCU-01

MCU-002Manual download mode: hold BOOT (SW4), tap RESET (SW1), release BOOTPass

Expected: Re-enumerates in download mode

Tracker MCU-002 · Plan §MCU-02

MCU-003Flash DVT helper firmware @ 921600 over native USBPass

Expected: Flash + verify OK

Tracker MCU-003 · Plan §MCU-04

MCU-004Serial monitor over native USB CDCPass

Expected: Boot log + helper menu visible

Tracker MCU-004 · Plan §MCU-05

MCU-005UART0 via header: 3.3 V adapter, GND→J4.1, adapter RX→J4.9 (TX), boot log receivedPass

Expected: Boot log readable

Tracker MCU-005 · Plan §MCU-06

MCU-006RESET (SW1) while runningPass

Expected: Clean reset, boot log, no hang (EN RC ≈ 11 ms)

Tracker MCU-006 · Plan §MCU-07

MCU-007Timekeeping: helper mode t, 10 min vs stopwatch — drift0.16 %Pass

Expected: < 0.5 %

limits −∞ – 0.5 %

Measured: 0.16 %

Tracker MCU-007 · Plan §MCU-08

GPIO · I/O verification

6 pass
GPIO-001Walking output (helper 1): LOWEST V_high across all 12 header pins3.276 VPass

Expected: Every pin ≥ 3.1 V driven HIGH

limits 3.1 – +∞ V

Measured: 3.276 V

Tracker GPIO-001 · Plan §GPIO-01

GPIO-002Walking output: HIGHEST V_low across all 12 header pins0.002 VPass

Expected: Every pin ≤ 0.1 V driven LOW

limits −∞ – 0.1 V

Measured: 0.002 V

Tracker GPIO-002 · Plan §GPIO-01

GPIO-003Input test (helper 2): pins reading 1 idle / 0 groundedPass

Expected: 12/12

limits 12 – 12 pins

Tracker GPIO-003 · Plan §GPIO-02

GPIO-004Auto adjacent-bridge test (helper 3): pairs passingPass

Expected: 9/9 pairs

limits 9 – 9 pairs

Tracker GPIO-004 · Plan §GPIO-03

GPIO-005IO0 idle voltage (internal pull-up only)3.289 VPass

Expected: ≥ 3.0 V

limits 3 – +∞ V

Measured: 3.289 V

Tracker GPIO-005 · Plan §GPIO-04

GPIO-006Cold boots to app with no buttons touched10 bootsPass

Expected: 10/10

limits 10 – 10 boots

Measured: 10 boots

Tracker GPIO-006 · Plan §GPIO-04

I2C · Qwiic port

8 pass
I2C-001SDA idle level (J3.3)3.29 VPass

Expected: ≈ 3.3 V (R9 4.7 k pull-up)

target 3.3 · limits 3.2 – 3.4 V

Measured: 3.29 V

Tracker I2C-001 · Plan §I2C-01

I2C-002SCL idle level (J3.4)3.29 VPass

Expected: ≈ 3.3 V (R13 4.7 k pull-up)

target 3.3 · limits 3.2 – 3.4 V

Measured: 3.29 V

Tracker I2C-002 · Plan §I2C-01

I2C-0033V3 at J3.23.29 VPass

Expected: 3.25–3.35 V

target 3.3 · limits 3.25 – 3.35 V

Measured: 3.29 V

Tracker I2C-003 · Plan §I2C-02

I2C-004Bus scan with SHT4x on Qwiic cable (helper 4)Pass

Expected: Device found at 0x44

Tracker I2C-004 · Plan §I2C-03

I2C-005SHT4x temperature read26.27 °CPass

Expected: Plausible indoor temp

limits 10 – 40 °C

Measured: 26.27 °C

Tracker I2C-005 · Plan §I2C-04

I2C-006SHT4x humidity read46.6 %Pass

Expected: Plausible indoor RH

limits 10 – 90 %

Measured: 46.6 %

Tracker I2C-006 · Plan §I2C-04

I2C-007Bus at 400 kHz: scan + read (helper 4 second pass)Pass

Expected: Still OK

Tracker I2C-007 · Plan §I2C-05

I2C-008Hot-plug sensor while runningPass

Expected: Recovers on next poll, no crash

Tracker I2C-008 · Plan §I2C-06

OLED · Display subsystem

7 pass
OLED-0013V3 current delta on panel attach, before initPass

Expected: +0–3 mA (pump off)

limits 0 – 3 mA

Tracker OLED-001 · Plan §OLED-01

OLED-002U8g2 init (CS=10, DC=9, RST=14, SCLK=12, MOSI=11) + textPass

Expected: Renders, correct orientation

Tracker OLED-002 · Plan §OLED-02

OLED-003All-pixels-ON patternPass

Expected: Uniform, no missing rows/columns

Tracker OLED-003 · Plan §OLED-03

OLED-004Border + crosshair 1-px patternPass

Expected: Crisp lines, all edges present

Tracker OLED-004 · Plan §OLED-04

OLED-005Contrast sweep 0→255Pass

Expected: Smooth ramp, no flicker

Tracker OLED-005 · Plan §OLED-05

OLED-00610 min at SPI speed (helper 5 info screen)Pass

Expected: Stable, no artifacts

Tracker OLED-006 · Plan §OLED-09

OLED-007Cold boot straight to demo screenPass

Expected: 5/5

limits 5 – 5 boots

Tracker OLED-007 · Plan §OLED-10

RGB · RGB status LED

3 pass
RGB-001R / G / B at brightness 64 (helper 6)Pass

Expected: Correct pure colors, correct order

Tracker RGB-001 · Plan §RGB-01

RGB-002Full white (255,255,255) brieflyPass

Expected: White, no tint/flicker

Tracker RGB-002 · Plan §RGB-02

RGB-003Temperature-map colors from demo (cold→blue … hot→red)Pass

Expected: Match spec

Tracker RGB-003 · Plan §RGB-04

ADC · Sense channels

5 pass
ADC-001Bench battery 3.60 V → firmware VBAT reading (helper 7)Pass

Expected: 3.60 V ± 5 %

target 3.6 · limits 3.42 – 3.78 V

Tracker ADC-001 · Plan §ADC-01

ADC-002Repeat at 4.20 VPass

Expected: ± 5 %

target 4.2 · limits 3.99 – 4.41 V

Tracker ADC-002 · Plan §ADC-02

ADC-003Repeat at 3.20 VPass

Expected: ± 5 %

target 3.2 · limits 3.04 – 3.36 V

Tracker ADC-003 · Plan §ADC-02

ADC-004VUSB reading, USB in4.95 VPass

Expected: 4.75–5.25 V

target 5 · limits 4.75 – 5.25 V

Measured: 4.95 V

Tracker ADC-004 · Plan §ADC-04

ADC-005VUSB reading, USB out (on battery)Pass

Expected: USB-present flag works

Tracker ADC-005 · Plan §ADC-05

BTN · Buttons

2 pass
BTN-001SW4 BOOT: helper prints press/release, 20 ms debouncePass

Expected: 1 idle, 0 pressed, no bounce

Tracker BTN-001 · Plan §BTN-01

BTN-002SW1 RESET pressed while runningPass

Expected: Immediate clean reset

Tracker BTN-002 · Plan §BTN-02

LED · Indicator LEDs

2 pass
LED-001Green LED2Pass

Expected: On whenever 3V3 is up, any power source

Tracker LED-001 · Plan §LED-01

LED-002Yellow LED1 matrix: charging / done / no-battery / no-USBPass

Expected: ON / OFF / off-or-blink (record) / OFF

Tracker LED-002 · Plan §LED-02

RFW · Wi-Fi RF

8 pass
RFW-001WiFi scan (helper 8)Pass

Expected: Sees all APs the reference board sees

Tracker RFW-001 · Plan §RF-W-01

RFW-002DUT RSSI @ 3 m in 4 orientations (helper 8)−31 to −44 dBmPass

Expected: Record

Measured: −36.8, −44.2, −33 and −31 dBm in the four orientations

Tracker RFW-002 · Plan §RF-W-02

RFW-003Δ RSSI = |DUT − reference|, worst of 4 orientations1 dBPass

Expected: ≤ 6 dB vs reference board

limits −∞ – 6 dB

Measured: 1 dB

Notes: Δ RSSI vs reference board, worst of 4 orientations

Tracker RFW-003 · Plan §RF-W-02

RFW-004Connect to WPA2 + DHCP time (helper c)5.2 sPass

Expected: < 10 s

limits −∞ – 10 s

Measured: 5.2 s

Tracker RFW-004 · Plan §RF-W-03

RFW-005Ping ×100 from PC @ 3 m: loss0 %Pass

Expected: < 2 %

limits −∞ – 2 %

Measured: 0 %

Tracker RFW-005 · Plan §RF-W-04

RFW-006Ping ×100: average latency129 msPass

Expected: 20–200 ms (~130 ms typical over WiFi)

limits −∞ – 200 ms

Measured: 129 ms

Tracker RFW-006 · Plan §RF-W-04

RFW-007Full demo: NTP + Open-Meteo over WiFi on S3Pass

Expected: Weather + time render

Tracker RFW-007 · Plan §RF-W-07

RFW-008On battery @ 3.5 V: 5 min continuous TX (helper 9)Pass

Expected: No brownout/reset

Tracker RFW-008 · Plan §RF-W-08

RFB · Bluetooth LE RF

1 pass
RFB-001BLE advertise (helper b), phone BLE scanner @ 1 m — DUT RSSI-43 dBmPass

Expected: Record

Measured: -43 dBm

Tracker RFB-001 · Plan §RF-B-01

SYS · System-level

9 pass
SYS-001Factory-fresh: erase → flash demo → cold boot full flowPass

Expected: Portal → WiFi → NTP → weather → RGB temp color → battery %

Tracker SYS-001 · Plan §SYS-01

SYS-00224 h soak on USB: unexpected rebootsPass

Expected: 0

limits −∞ – 0 count

Tracker SYS-002 · Plan §SYS-02

SYS-00324 h soak: free heap stablePass

Expected: No leak trend

Tracker SYS-003 · Plan §SYS-02

SYS-004Power cycle ×20 (USB, 5 s off): successful boots20 bootsPass

Expected: 20/20

limits 20 – 20 boots

Measured: 20 boots

Tracker SYS-004 · Plan §SYS-04

SYS-005USB data hot-plug ×10 on battery: clean re-enumerations10 plugsPass

Expected: 10/10

limits 10 – 10 plugs

Measured: 10 plugs

Tracker SYS-005 · Plan §SYS-05

SYS-006Overnight charge-while-runningPass

Expected: Morning: battery full, LED1 off, still running

Tracker SYS-006 · Plan §SYS-06

SYS-007Overnight: board temperature in the morning38 °CPass

Expected: < 45 °C

limits −∞ – 45 °C

Measured: 38 °C

Tracker SYS-007 · Plan §SYS-06

SYS-008Thermal survey hottest surface (U2 / U5 / U6)38 °CPass

Expected: ≤ 85 °C

limits −∞ – 85 °C

Measured: 38 °C

Tracker SYS-008 · Plan §SYS-07

SYS-009Firmware pin map matches the boardPass

Expected: Match

Tracker SYS-009 · Plan §SYS-08

Downloads

Firmware and data

Engineering report for the V1.0 (Rev A) prototypes. The current board is covered by the V2.0 report. Values are bench measurements on prototype hardware; production specifications may change. Board photos, guides, and downloads live on the product page.