I confirmed the warning comes from the IC2 VREF pad6 correction ruleset, which forces VREF’s position to X = 1.25 mm, Y = 0.95 mm using !important; it does not itself indicate an electrical error.
In Agent mode, I’ll try removing only the !important flags, verify that VREF stays at the corrected position, and recheck the warning—rather than deleting the pad correction blindly.
U13 OE is no longer permanentlyLOW: Q1/R1/R2/R3 provides fully-off receiver disconnect, not a guaranteed CH340-valid powergood threshold; do not rely on firmware to fix analog ramp/brownout backfeed. U4 sourceverified mapping now wired; DAC operation remains bench-unvalidated and machine tests prohibited. GPIO map unchanged. No build/flash/USB enumeration tests performed.109components/112nets,ERC14Errors/0Warnings; release blockers/evidence in connection-implementation-review supersede previous counts and open-U4 statements.
The open-supply/export-continuity and inherited-UART statements below are SUPERSEDED historical baseline. Flat U14 ESP32-WROOM-32U directly implements the SAME fourteen GPIO assignments in the table; schematic memberships verified after U1 removal. GPIO36 is SENSOR_VP and39 SENSOR_VN. UART0 GPIO3/RXD0 connects U15 TXD2; GPIO1/TXD0 connects U15 RXD3. EN/GPIO0 controlled by audited Q3/Q4 cross-coupled SS8050 circuit,10k pulls/base resistors and1uF EN RC. No S1 mode switch exists.
Use separate J3 for programming and J2 only for charging. U14/U15 need approved receiver MAIN_3V3 power; J3 VBUS powers only U16/U13 logic and cannot intentionally power receiver. Power-off USB data injection remains a HARDWARE release blocker because U13 OE is tied LOW; resolve it before treating USB-only plugging as safe. No compilation, flash, USB enumeration or automatic-download test performed. Toolchain/dependency versions and flash size still need review for exact32U variant.
Bench initialization fragment below remains documentation only; no production command/default/link-loss behavior chosen. U4 has no operational isolated supply. Never run diagnostic DAC sweeps on a machine; retain isolated dummy-load and operator-authorization restrictions. This change verifies schematic GPIO continuity, not physical board operation or firmware safety.
Historical starter context (GPIO table still current)
Status: documentation-only starter, not compiled, flashed or validated. Current host wiring is real; U1 export-to-internal MCU continuity is UNVERIFIED and supplies remain deliberately open. Do not interpret this pin table as confirmed electrical continuity.
Current host GPIO map
Table
Export
Host net
Intended peripheral
GPIO18
RADIO_SCK
SPI clock
GPIO19
RADIO_MISO
SPI input
GPIO23
RADIO_MOSI
SPI output
GPIO27
RADIO_NSS
Radio chip select
GPIO14
RADIO_BUSY
Radio busy input
GPIO13
RADIO_DIO1
Radio interrupt input
GPIO4
RADIO_NRST
Radio reset
GPIO16
RADIO_RXEN
RF receive enable
GPIO17
RADIO_TXEN
RF transmit enable
GPIO21
SDA_MAIN
I2C SDA to U2
GPIO22
SCL_MAIN
I2C SCL to U2
GPIO34
BAT_ADC
Battery analog input
GPIO36
CHARGER_PG
Charger power-good input
GPIO39
CHARGER_STAT
Charger status input
GPIO34/36/39 are intended input-only uses; status pull-ups are host resistors. No user PWM/timer output is assigned. Original TX/RX UART and boot/reset inherited module circuit are unresolved integration items. Do not reassign flash-related SD*/CLK/CMD exports.
Toolchain and dependencies
A provisional Arduino-ESP32 diagnostic project is a familiar starting point; exact framework version, module target and flash settings must be pinned after module repair. Dependencies: Arduino-ESP32 SPI and Wire plus an audited SX1262/E22 driver. A generic SX1262 library may require explicit RXEN/TXEN control rather than automatic DIO2 switching (host DIO2 is NC). DAC driver must specifically implement MCP4726 commands, reference/gain and EEPROM semantics, not assume MCP4725 compatibility. No dependency lock or executable is delivered here.
Example CLI workflow after installing Arduino CLI and reviewing board target: arduino-cli core install esp32:esp32; arduino-cli compile --fqbn . Upload only after boot/USB-UART and module continuity review. Build/flash remain UNATTEMPTED.
This fragment is not a complete application. SDK handles crystal/PLL defaults; no custom clock config justified. Disable unused Wi-Fi/Bluetooth only through reviewed SDK configuration, and quantify current before making power claims. Serial console initialization awaits inherited UART/USB audit. ADC attenuation/calibration and divider transfer must be reviewed before converting raw readings into voltage. Never enable both TXEN and RXEN simultaneously; driver transitions must be tested with scope.
Startup and operating sequence
Validate rails and continuity; keep machine physically disconnected.
Initialize bench GPIO and bus clocks; confirm charger-status inputs and calibrated battery measurement.
Initialize radio using reviewed E22 timings, BUSY handshake and legal region settings. Validate transport on dummy setup before application command handling.
Probe approved DAC address and read status/configuration including EEPROM power-up behavior. Do not automatically write a presumed safe analog value.
Gate any diagnostic DAC sweep behind explicit operator authorization and isolated dummy load. Calculate output code only after reference/gain/load calibration.
Application startup/link-loss/brownout/watchdog/stale-command behavior remains USER DECISION. No placeholder zero/hold/full-scale policy may be shipped; reject production enable until policy and tests exist.
Firmware requirements backlog
Pairing/authentication, packet versioning/CRC, sequence/replay protection, freshness timeout, bounded command range, explicit state machine, watchdog, transport diagnostics, calibration storage, battery reporting and audit logs. Timer frequencies/timeouts, machine semantics and RF settings are deliberately unspecified pending requirements. Test reset/link-loss and retained DAC EEPROM output independently; firmware cannot alone guarantee output de-energization without reviewing hardware behavior.