Chips and boards
The chips espx supports with their Rust targets, and the dev boards it knows with their pins.
Chips
espx supports exactly the chips esp-generate can scaffold. espx chips prints this table, and --json prints it as data.
| Id | Name | Architecture | Rust target | Status |
|---|---|---|---|---|
esp32 | ESP32 | Xtensa | xtensa-esp32-none-elf | stable |
esp32c2 | ESP32-C2 | RISC-V | riscv32imc-unknown-none-elf | stable |
esp32c3 | ESP32-C3 | RISC-V | riscv32imc-unknown-none-elf | stable |
esp32c5 | ESP32-C5 | RISC-V | riscv32imac-unknown-none-elf | preview |
esp32c6 | ESP32-C6 | RISC-V | riscv32imac-unknown-none-elf | stable |
esp32c61 | ESP32-C61 | RISC-V | riscv32imac-unknown-none-elf | preview |
esp32h2 | ESP32-H2 | RISC-V | riscv32imac-unknown-none-elf | stable |
esp32s2 | ESP32-S2 | Xtensa | xtensa-esp32s2-none-elf | stable |
esp32s3 | ESP32-S3 | Xtensa | xtensa-esp32s3-none-elf | stable |
The default chip is esp32c6. Preview marks preview silicon; --json shows it as "stable": false.
The RISC-V chips build with the stable Rust toolchain; espx setup adds their two targets through rustup. The Xtensa chips need Espressif's Rust fork, the esp toolchain, which espx setup --chip installs through espup. See Xtensa chips.
The ESP32-P4 is not in the table. It joins when esp-generate supports it.
Boards
espx knows a few dev board models. espx boards lists them and espx board <id> prints one. Pass an id to espx new --board to pick its chip and record its pins in the project's README.md and AGENTS.md. espx generates no pin code from it; the facts are there to read.
| Id | Board | Chip | User LED | BOOT button | UART TX / RX |
|---|---|---|---|---|---|
xiao-esp32c6 | Seeed Studio XIAO ESP32C6 | esp32c6 | GPIO15, active-low | GPIO9 | GPIO16 / GPIO17 |
esp32-c6-devkitc-1 | ESP32-C6-DevKitC-1 | esp32c6 | GPIO8, addressable RGB | GPIO9 | GPIO16 / GPIO17 |
esp32-s3-devkitc-1 | ESP32-S3-DevKitC-1 (initial revision) | esp32s3 | GPIO48, addressable RGB | GPIO0 | GPIO43 / GPIO44 |
esp32-s3-devkitc-1-v1.1 | ESP32-S3-DevKitC-1 v1.1 | esp32s3 | GPIO38, addressable RGB | GPIO0 | GPIO43 / GPIO44 |
esp32-c3-devkitm-1 | ESP32-C3-DevKitM-1 | esp32c3 | GPIO8, addressable RGB | GPIO9 | GPIO21 / GPIO20 |
esp32-devkitc-v4 | ESP32-DevKitC V4 | esp32 | none (power LED only) | GPIO0 | GPIO1 / GPIO3 |
esp32-s2-saola-1 | ESP32-S2-Saola-1 | esp32s2 | GPIO18, addressable RGB | GPIO0 | GPIO43 / GPIO44 |
The BOOT button is active-low on every board. The two ESP32-S3-DevKitC-1 revisions differ in the LED pin, so check the revision printed on yours.
USB ids and documentation
| Id | USB (vendor) | Documentation |
|---|---|---|
xiao-esp32c6 | 303A:1001 | Seeed Studio wiki |
esp32-c6-devkitc-1 | 303A:1001, 10C4:EA60 | User guide |
esp32-s3-devkitc-1 | 303A:1001, 10C4:EA60 | User guide |
esp32-s3-devkitc-1-v1.1 | 303A:1001, 10C4:EA60 | User guide |
esp32-c3-devkitm-1 | 10C4:EA60 | User guide |
esp32-devkitc-v4 | 10C4:EA60 | User guide |
esp32-s2-saola-1 | 10C4:EA60 | User guide |
303A:1001 is the chip's native USB serial/JTAG port and 10C4:EA60 a CP210x bridge. Every ESP32 with native USB reports the same pair, and so does every board with that bridge, so these ids identify the interface, not the board. espx devices therefore names a board model only when a board's USB ids match exactly one model, which none of these do today.