Devices
ThistleOS runs on the ESP32 chip family across 10 supported boards. One firmware binary per architecture. Recovery downloads the selected board profile, matching drivers, and firmware from the catalog. This page also covers how to add a new board.
✎ Edit on GitHubDevice overview
| Device | MCU | Display | Input | Radio | Status |
|---|---|---|---|---|---|
| LilyGo T-Deck Pro | ESP32-S3 | E-paper 3.1" | TCA8418 kbd + CST328 touch | SX1262 LoRa | Supported |
| LilyGo T-Deck | ESP32-S3 | ST7789 320×240 | TCA8418 kbd + CST328 touch | SX1262 LoRa | Supported |
| LilyGo T-Deck Plus | ESP32-S3 | ST7789 320×240 | TCA8418 kbd + CST328 touch | SX1262 + GPS | Supported |
| LilyGo T-Display-S3 | ESP32-S3 | ST7789 320×170 | CST816 touch | None | Supported |
| LilyGo T3-S3 | ESP32-S3 | SSD1306 128×64 | None | SX1262 LoRa | Supported |
| Heltec WiFi LoRa 32 V3 | ESP32-S3 | SSD1306 128×64 | Button | SX1262 LoRa | Supported |
| M5Stack Cardputer | ESP32-S3 | ST7789 240×135 | CardKB I2C kbd | None | Partial |
| CYD ESP32-2432S022C | ESP32 | ST7789 2.2" (I80) | CST816S touch | None | Partial |
| CYD ESP32-2432S028R | ESP32 | ILI9341 2.8" (SPI) | XPT2046 touch | None | Partial |
| ESP32-C3 Mini | ESP32-C3 | SSD1306 128×64 | None | None | Minimal |
One binary per architecture
The kernel is compiled separately for each architecture family: one binary for Xtensa (ESP32, S2, S3) and one for RISC-V (C3, C6). Apps and drivers are also architecture-specific. The catalog arch field filters entries to the correct binary for each device.
How hardware detection works
When Recovery OS boots on a new or blank device, it auto-provisions hardware with no user configuration needed:
- Chip detection — Recovery reads the chip model register at boot. It supports ESP32, S2, S3, C3, and C6, and selects the correct firmware architecture from the catalog.
- Power rail enable — Before scanning, Recovery enables peripheral power rails (where applicable) to ensure devices are powered.
- I2C bus scan — Probes addresses 0x08 through 0x77 on each I2C bus. Each responding address is looked up in the detection table.
- SPI device probing — GPIO-level CS pin checks determine whether SPI devices (e-paper, LoRa SX1262, SD card) are present.
- UART device probing — Listens on UART ports for GPS NMEA sentences and sends AT commands to detect cellular modems.
- Catalog match — Detected components are matched against catalog entries. Matching driver
.drv.elffiles are selected for download. - Bundle download — Recovery downloads the firmware binary, matching drivers, and the appropriate window manager in one provisioning pass.
No board definition required
Recovery identifies hardware by component detection, not by board name. A new board with a TCA8418 keyboard and ST7789 display will automatically get the correct keyboard and LCD drivers without any manual configuration.
Want to add a new device?
See the Building Drivers guide for step-by-step instructions on creating board.json configs and porting ThistleOS to new hardware.