DMDoS board v3 pinout (ESP32 DevKit V1, 30-pin)#

Measured by continuity test on the original DMDoS carrier board. Orientation: board back facing you, microSD slot at top, "DMD IN" header on the left. Outer column = even HUB75 pins, inner (notched) column = odd pins, row 1 at the top.

HUB75 "DMD IN" (2x8 IDC)#

Row Odd pin (inner) GPIO Even pin (outer) GPIO
1 1 R1 25 2 G1 26
2 3 B1 27 4 GND –
3 5 R2 14 6 G2 12
4 7 B2 13 8 E/GND – (silent; E unused at 1/16 scan)
5 9 A 33 10 B 32
6 11 C 22 12 D 17
7 13 CLK 16 14 LAT 4
8 15 OE 15 16 GND –

ESP32-HUB75-MatrixPanel-DMA config: R1=25 G1=26 B1=27 R2=14 G2=12 B2=13 A=33 B=32 C=22 D=17 E=-1 LAT=4 OE=15 CLK=16

Sanity check: this is the library's ESP32 default map with only A/B/C moved (23→33, 19→32, 5→22) — precisely the three defaults that collide with the SD SPI bus.

microSD (SPI, on the 6-pin socket module — NOT SDMMC)#

VSPI defaults: SCK=18, MISO=19, MOSI=23, CS=5 — VSPI's IO_MUX pins, so the firmware drives them from SPI3 (= VSPI; SPI2 is HSPI and would route them through the GPIO matrix, which caps reads at 26.7 MHz), at 40 MHz (config.rs SD_SPEED_KHZ). Module also has 3V3 and GND (3V3 is the last hole on the back-side row; shorting it to GND resets the board). The card answers only with this assignment of the four pins; every other permutation is silent.

Power#

DMDPower screw terminal: RED +5V → DevKit VIN, BLACK → GND. The ESP32 runs from the panel PSU.

Unused#

GPIO 2 (onboard LED), 21, 34, 35, 36, 39, UART0 (1/3).