SparkFun's Thing Plus ESP32-S3 (sold as WRL-24408) is the Feather-footprint ESP32-S3R2 board (N4R2: 4 MB flash + 2 MB PSRAM). Its headers carry 28 physical PTH positions in two U10 columns (left U10.1-12: SDA, SCL, GPIO6-GPIO1, D0, V_USB, EN, V_BATT; right U10.13-28: FREEBIE, TX, RX, POCI, PICO, SCK, A5-A0, GND, AREF, 3.3V, RST — signal and power pads are interleaved, not grouped) — exposing UART 2 (TX/RX), I2C 2 (SDA/SCL, IO8/IO9, with a Qwiic connector), SPI 3 (SCK/PICO/POCI), six analog-labeled pads A0-A5, six pads silkscreened GPIO1-GPIO6 (pad labels, not chip IO numbers — they map to chip IO1/IO2/IO4-IO7), and one FREEBIE pad. A friction-fit microSD slot runs on SDIO-4 (CMD=IO34, CLK=IO38, DAT0-3=IO39/40/47/33 — board-occupied, not on the headers), and a 2-pin JST feeds a MCP73831 charger plus a MAX17048 fuel gauge on I2C.
Every silkscreen name is now mapped to its chip IO via the schematic's U10 symbol: TX=IO43, RX=IO44, SDA=IO8, SCL=IO9, POCI=IO13, PICO=IO11, SCK=IO12, A0-A5=IO10/14/15/16/17/18, D0=IO21 (silkscreen reads D0), GPIO1=IO7, GPIO2=IO6, GPIO3=IO5, GPIO4=IO4, GPIO5=IO2, GPIO6=IO1, FREEBIE=IO42. More onboard loads explain the gap between chip pins and headers: WS2812 RGB LED on IO46, STAT LED sharing chip IO0 with the BOOT button, MAX17048 alert on IO35, and the peripheral-rail enable on IO45. The charge indicator hangs off the MCP73831 charge path and is not a GPIO.
Two traps are recorded on purpose. First, the pad silkscreened D0 (U10.9) is chip IO21 — the BOOT button and the STAT LED both sit on chip IO0 (the BOOT/STAT pad pair) — so writing the silkscreen name as a chip pin number will misconfigure strapping code. Second, SparkFun's own Introduction text and repo README quote 23 GPIO for this board; that number belongs to the Thing Plus ESP32-C6. The sales page (WRL-24408) and the Hardware Overview PTH list both say 28 PTH positions / 21 GPIO, and the v10 schematic's U10 symbol counts 21 signal pins — this record follows those and refuses the C6 value.
A second RT9080 3.3V regulator powers a separate peripheral rail (3.3V_P, Qwiic pull-ups included) governed by the LP_CTL jumper, which is closed by default and ties the enable HIGH. To control the rail from software, cut the jumper first, then drive the enable low — while the jumper is closed the enable stays pulled high and the rail cannot be switched off (per the Hardware Overview jumpers section). This page renders the MCUID data record: both physical U10 columns pad-by-pad with chip IO numbers, the Qwiic connector, and each mapping tied to the fixed schematic source.