71 KiB
Hardware Support Context
This document inventories the board-support inputs and common target-definition fields currently used in the Meshtastic firmware repository. It is intended as reusable context for adding new hardware support without re-discovering naming patterns, metadata keys, and frequently used pin or capability macros from scratch.
Scope
- Variant directories scanned: 166
- PlatformIO environments summarized: 212
- Sources:
variants/**/platformio.iniandvariants/**/variant.h - Notes: This inventory reflects explicit per-variant declarations. Some boards also inherit defaults from architecture headers or shared base environments, which must still be checked before creating new hardware support.
Repository Metadata Inputs
The following custom_meshtastic_* metadata keys are already used across board environments:
custom_meshtastic_hw_modelcustom_meshtastic_hw_model_slugcustom_meshtastic_architecturecustom_meshtastic_actively_supportedcustom_meshtastic_support_levelcustom_meshtastic_display_namecustom_meshtastic_imagescustom_meshtastic_tagscustom_meshtastic_requires_dfucustom_meshtastic_partition_scheme
Common Target-Definition Categories
Input
| Macro | Used in | Description |
|---|---|---|
BUTTON_PIN |
127 variants | Primary user button GPIO pin number. |
ALT_BUTTON_PIN |
12 variants | Secondary / alternate button pin, used on boards with two buttons. |
CANCEL_BUTTON_PIN |
8 variants | Button wired to cancel/back actions (e.g., T-Deck cancel key). |
KB_BL_PIN |
5 variants | Keyboard backlight control pin (e.g., T-LoRa Pager keyboard). |
KB_INT |
4 variants | Keyboard interrupt input pin; signals a keypress to the MCU. |
INPUTDRIVER_ENCODER_TYPE |
3 variants | Selects the rotary encoder driver variant (0 = none, 1+ = specific type). |
BUTTON_PIN_ALT |
2 variants | Alternative spelling used by some older board families for a second button. |
INPUTDRIVER_TWO_WAY_ROCKER |
2 variants | Enables the two-way rocker input driver. |
INPUTDRIVER_TWO_WAY_ROCKER_RIGHT |
2 variants | GPIO pin for the rightward rocker direction. |
INPUTDRIVER_TWO_WAY_ROCKER_LEFT |
2 variants | GPIO pin for the leftward rocker direction. |
INPUTDRIVER_TWO_WAY_ROCKER_BTN |
2 variants | GPIO pin for the rocker click/press direction. |
KB_POWERON |
2 variants | Pin used to power-on or enable the keyboard peripheral. |
KB_SLAVE_ADDRESS |
2 variants | I2C address of the keyboard controller IC. |
ROTARY_A |
2 variants | First encoder channel pin (clock / A signal). |
ROTARY_B |
2 variants | Second encoder channel pin (data / B signal). |
Radio
| Macro | Used in | Description |
|---|---|---|
SX126X_CS |
150 variants | SX126x chip-select pin (often same as LORA_CS). |
SX126X_RESET |
150 variants | SX126x reset pin (often same as LORA_RESET). |
SX126X_BUSY |
150 variants | SX126x BUSY pin; must be polled low before issuing SPI commands. |
SX126X_DIO1 |
150 variants | SX126x DIO1 interrupt output used for all IRQ events. |
USE_SX1262 |
145 variants | Select the SX1262 sub-GHz LoRa chip driver. |
SX126X_DIO3_TCXO_VOLTAGE |
140 variants | Drives the TCXO regulator via DIO3; set to the supply voltage (e.g., 1.8). |
LORA_CS |
137 variants | LoRa radio SPI chip-select GPIO pin. |
LORA_RESET |
135 variants | LoRa radio hardware-reset GPIO pin (active low). |
SX126X_DIO2_AS_RF_SWITCH |
135 variants | Set to 1 so the driver controls the TX/RX RF switch via DIO2. |
LORA_DIO1 |
130 variants | LoRa radio DIO1 interrupt pin; on SX126x this is the primary IRQ line. |
LORA_SCK |
125 variants | LoRa radio SPI clock pin. |
LORA_MISO |
125 variants | LoRa radio SPI MISO pin. |
LORA_MOSI |
125 variants | LoRa radio SPI MOSI pin. |
LORA_DIO2 |
110 variants | LoRa radio DIO2 pin; on RF95 used for FSK interrupt; on SX126x tx/rx control. |
LORA_DIO0 |
98 variants | LoRa radio DIO0 interrupt pin (RF95/SX1276 done/RxDone). |
GPS
| Macro | Used in | Description |
|---|---|---|
GPS_RX_PIN |
114 variants | UART RX pin connected to the GPS module TX output. |
GPS_TX_PIN |
111 variants | UART TX pin connected to the GPS module RX input. |
HAS_GPS |
69 variants | Set to 1 if the board has an on-board GPS receiver; 0 to disable GPS entirely. |
PIN_GPS_PPS |
43 variants | GPS pulse-per-second input pin for timing synchronisation. |
PIN_GPS_EN |
30 variants | GPIO to power-enable or power-gate the GPS module. |
PIN_GPS_STANDBY |
29 variants | Places the GPS into standby/low-power mode when driven. |
GPS_THREAD_INTERVAL |
28 variants | Millisecond poll interval for the GPS background thread. |
GPS_L76K |
27 variants | Selects the Quectel L76K GPS driver and protocol. |
GPS_BAUDRATE |
27 variants | UART baud rate for GPS serial communication. |
GPS_EN_ACTIVE |
17 variants | Logic level (HIGH or LOW) that enables the GPS power pin. |
PIN_GPS_RESET |
16 variants | Hardware-reset line to the GPS module. |
GPS_DEFAULT_NOT_PRESENT |
16 variants | Compiled-in default assuming no GPS; overridden at runtime if detected. |
GPS_RESET_MODE |
13 variants | Defines the reset signal polarity or protocol for the GPS chip. |
GPS_UBLOX |
8 variants | Selects the u-blox GPS driver and UBX protocol. |
PIN_GPS_REINIT |
7 variants | Pin used to trigger GPS re-initialisation sequences. |
Display
| Macro | Used in | Description |
|---|---|---|
PIN_EINK_CS |
51 variants | E-ink display SPI chip-select pin. |
PIN_EINK_BUSY |
51 variants | E-ink display BUSY output; high when a page update is in progress. |
PIN_EINK_DC |
51 variants | E-ink display data/command select pin. |
PIN_EINK_RES |
51 variants | E-ink display hardware-reset pin. |
PIN_EINK_SCLK |
49 variants | E-ink display SPI clock pin. |
PIN_EINK_MOSI |
49 variants | E-ink display SPI MOSI pin. |
HAS_SCREEN |
34 variants | Set to 1 if the board has any display hardware. |
USE_TFTDISPLAY |
27 variants | Selects the TFT LCD driver path. |
TFT_HEIGHT |
25 variants | Vertical pixel resolution of the TFT display. |
TFT_WIDTH |
25 variants | Horizontal pixel resolution of the TFT display. |
SCREEN_TRANSITION_FRAMERATE |
23 variants | Target framerate for UI animations and transitions. |
TFT_OFFSET_X |
22 variants | Horizontal pixel offset for display alignment correction. |
TFT_OFFSET_Y |
22 variants | Vertical pixel offset for display alignment correction. |
SCREEN_ROTATE |
18 variants | Non-zero value rotates the display 180° for mounted-upside-down screens. |
TFT_BL |
15 variants | Backlight control PWM or GPIO pin for the TFT panel. |
I2C/SPI
| Macro | Used in | Description |
|---|---|---|
I2C_SDA |
103 variants | Primary I2C data line GPIO pin. |
I2C_SCL |
103 variants | Primary I2C clock line GPIO pin. |
PIN_SPI_MISO |
72 variants | Primary SPI MISO (data from peripheral) GPIO pin. |
PIN_SPI_MOSI |
72 variants | Primary SPI MOSI (data to peripheral) GPIO pin. |
PIN_SPI_SCK |
72 variants | Primary SPI clock GPIO pin. |
SPI_INTERFACES_COUNT |
66 variants | Number of hardware SPI buses available on this board. |
WIRE_INTERFACES_COUNT |
64 variants | Number of hardware I2C buses available on this board. |
PIN_SPI1_MISO |
35 variants | Secondary SPI bus MISO pin. |
PIN_SPI1_MOSI |
35 variants | Secondary SPI bus MOSI pin. |
PIN_SPI1_SCK |
35 variants | Secondary SPI bus clock pin. |
SPI_FREQUENCY |
24 variants | Default SPI clock frequency in Hz for this board. |
SPI_READ_FREQUENCY |
21 variants | Reduced SPI clock rate used for read transactions. |
SPI_SCK |
19 variants | SPI clock pin alias used in older board files. |
SPI_MOSI |
19 variants | SPI MOSI pin alias used in older board files. |
SPI_MISO |
19 variants | SPI MISO pin alias used in older board files. |
Power
| Macro | Used in | Description |
|---|---|---|
BATTERY_PIN |
128 variants | ADC input GPIO connected to the battery voltage divider. |
ADC_MULTIPLIER |
122 variants | Floating-point scale factor to convert raw ADC reading to battery voltage. |
ADC_CHANNEL |
71 variants | ADC channel enum or number for the battery sense input. |
BATTERY_SENSE_RESOLUTION_BITS |
64 variants | ADC resolution in bits used for battery voltage sampling. |
ADC_RESOLUTION |
49 variants | Board-level ADC resolution definition, referenced by other power macros. |
BATTERY_SENSE_RESOLUTION |
44 variants | Alias for the effective ADC resolution for battery sense. |
ADC_CTRL |
29 variants | GPIO that enables or gates the ADC voltage-divider circuit. |
ADC_CTRL_ENABLED |
27 variants | Logic level (HIGH or LOW) that turns on the ADC control switch. |
EXT_NOTIFY_OUT |
23 variants | GPIO output used to signal an external LED or buzzer for notifications. |
USE_POWERSAVE |
21 variants | Enables aggressive power-save mode (deep sleep, reduced poll intervals). |
SLEEP_TIME |
21 variants | Default light-sleep duration in milliseconds between wakeups. |
ADC_ATTENUATION |
20 variants | ESP32 ADC input attenuation setting; controls measurable voltage range. |
PIN_POWER_EN |
18 variants | GPIO to assert to enable a board power rail or load switch. |
BATTERY_SENSE_SAMPLES |
11 variants | Number of ADC samples to average for a stable battery reading. |
HAS_PPM |
4 variants | Set to 1 if the board has an IP5306 or similar PPM power path IC. |
Connectivity/Other
| Macro | Used in | Description |
|---|---|---|
HAS_TOUCHSCREEN |
19 variants | Set to 1 for boards with a capacitive or resistive touch panel. |
HAS_NEOPIXEL |
14 variants | Set to 1 if the board has addressable RGB LEDs (WS2812 / NeoPixel). |
PCF8563_RTC |
11 variants | I2C address of the PCF8563 real-time clock IC. |
HAS_ETHERNET |
9 variants | Set to 1 for boards with a wired Ethernet interface. |
HAS_I2S |
7 variants | Set to 1 if I2S audio output is present. |
PCF85063_RTC |
3 variants | I2C address of the PCF85063 real-time clock IC. |
NFC_INT |
2 variants | Interrupt pin from the NFC controller IC. |
NFC_CS |
2 variants | SPI chip-select for the NFC controller. |
USE_XL9555 |
2 variants | Enables the XL9555 16-bit I2C GPIO expander driver. |
EXPANDS_DRV_EN |
2 variants | GPIO expander pin used to enable the haptic driver. |
EXPANDS_AMP_EN |
2 variants | GPIO expander pin used to power-on the audio amplifier. |
EXPANDS_KB_RST |
2 variants | GPIO expander pin used to reset the keyboard controller. |
EXPANDS_LORA_EN |
2 variants | GPIO expander pin used to power-gate the LoRa radio. |
EXPANDS_GPS_EN |
2 variants | GPIO expander pin used to power-gate the GPS module. |
EXPANDS_NFC_EN |
2 variants | GPIO expander pin used to power-gate the NFC controller. |
Other
| Macro | Used in | Description |
|---|---|---|
LED_POWER |
94 variants | GPIO for the status LED, defines the LED pin number. |
LED_STATE_ON |
88 variants | Logic level (HIGH or LOW) that turns the status LED on. |
PIN_SERIAL1_RX |
67 variants | Secondary UART RX pin (used for accessories, GPS on some boards). |
PIN_SERIAL1_TX |
67 variants | Secondary UART TX pin. |
PIN_WIRE_SDA |
64 variants | Arduino-framework I2C SDA pin alias (nRF52 / RP2040 style). |
PIN_WIRE_SCL |
64 variants | Arduino-framework I2C SCL pin alias. |
PIN_LED1 |
63 variants | First LED GPIO pin in the nRF52 Arduino BSP pin table. |
VARIANT_MCK |
63 variants | Crystal oscillator frequency in Hz for nRF52 variant clock configuration. |
PINS_COUNT |
63 variants | Total number of GPIO pins defined in the Arduino BSP variant table. |
NUM_DIGITAL_PINS |
63 variants | Count of digital-capable pins in the BSP variant table. |
NUM_ANALOG_INPUTS |
63 variants | Count of analog-input pins in the BSP variant table. |
NUM_ANALOG_OUTPUTS |
63 variants | Count of analog-output (DAC) pins in the BSP variant table. |
LED_BLUE |
62 variants | GPIO number of the blue status LED (typical on nRF52 and RP2040 boards). |
USE_LFXO |
58 variants | Instructs the nRF52 BSP to use the low-frequency crystal oscillator. |
BUTTON_NEED_PULLUP |
54 variants | Enables internal pull-up on the button GPIO (duplicate entry for clarity). |
Architecture and Environment Inventory
diy
| Environment | Display Name | HW Model | HW Slug | Variant Dir | Common Categories |
|---|---|---|---|---|---|
| 9m2ibr_aprs_lora_tracker | variants/esp32/diy/9m2ibr_aprs_lora_tracker | Display:1, Radio:24, Input:1, GPS:2, Power:4 | |||
| esp32c3_super_mini | variants/esp32c3/diy/esp32c3_super_mini | Display:1, Radio:18, Input:1, GPS:2 | |||
| meshtastic-diy-v1_1 | variants/esp32/diy/v1_1 | Radio:24, Input:1, GPS:1, Power:1 | |||
| my-esp32s3-diy-eink | variants/esp32s3/diy/my_esp32s3_diy_eink | Display:6, Radio:17, Input:1, GPS:1, Connectivity/Other:1 | |||
| my-esp32s3-diy-oled | variants/esp32s3/diy/my_esp32s3_diy_oled | Display:1, Radio:17, Input:1, GPS:1, Connectivity/Other:1 | |||
| nrf52_promicro_diy-inkhud | variants/nrf52840/diy/nrf52_promicro_diy_tcxo | Display:4, Radio:29, Input:1, GPS:4, Power:6 | |||
| t-energy-s3_e22 | variants/esp32s3/diy/t-energy-s3_e22 | Display:1, Radio:18, Input:1, GPS:3, Power:3 |
esp32
| Environment | Display Name | HW Model | HW Slug | Variant Dir | Common Categories |
|---|---|---|---|---|---|
| betafpv_2400_tx_micro | variants/esp32/betafpv_2400_tx_micro | Radio:14, Input:1, Connectivity/Other:1 | |||
| betafpv_900_tx_nano | variants/esp32/betafpv_900_tx_nano | Display:1, Radio:10, Input:1 | |||
| chatter2 | variants/esp32/chatter2 | Display:12, Radio:16, Input:3, GPS:3, Power:4 | |||
| hackerboxes-esp32-io | variants/esp32/hackerboxes_esp32_io | Display:1, Radio:16, Input:1, GPS:1 | |||
| heltec-v1 | Heltec V1 | 11 | HELTEC_V1 | variants/esp32/heltec_v1 | Radio:5, Input:1, GPS:2, Power:3 |
| heltec-v2_0 | Heltec V2.0 | 5 | HELTEC_V2_0 | variants/esp32/heltec_v2 | Radio:5, Input:1, GPS:2, Power:3 |
| heltec-v2_1 | Heltec V2.1 | 10 | HELTEC_V2_1 | variants/esp32/heltec_v2.1 | Radio:5, Input:1, GPS:3, Power:4 |
| heltec-wireless-bridge | variants/esp32/heltec_wireless_bridge | Radio:9, GPS:1 | |||
| heltec-wsl-v2_1 | variants/esp32/heltec_wsl_v2.1 | Radio:9, Input:1, Power:5 | |||
| hydra | Hydra | 39 | HYDRA | variants/esp32/diy/hydra | Radio:22, Input:1, GPS:3, Power:4 |
| m5stack-core | M5 Stack | 42 | M5STACK | variants/esp32/m5stack_core | Display:7, Radio:9, Input:1, GPS:2 |
| m5stack-coreink | variants/esp32/m5stack_coreink | Display:7, Radio:34, Input:1, GPS:2, Power:3, Connectivity/Other:1 | |||
| meshtastic-diy-v1 | DIY V1 | 39 | DIY_V1 | variants/esp32/diy/v1 | Radio:23, Input:1, GPS:3, Power:4 |
| meshtastic-dr-dev | DR-DEV | 41 | DR_DEV | variants/esp32/diy/dr-dev | Display:1, Radio:26, Input:1, GPS:2, Power:3 |
| nano-g1 | Nano G1 | 14 | NANO_G1 | variants/esp32/nano-g1 | Display:1, Radio:13, Input:1, GPS:2, Power:1 |
| nano-g1-explorer | Nano G1 Explorer | 17 | NANO_G1_EXPLORER | variants/esp32/nano-g1-explorer | Display:1, Radio:13, Input:1, GPS:2, Power:5 |
| radiomaster_900_bandit | variants/esp32/radiomaster_900_bandit | Radio:19, Input:1, GPS:1, Connectivity/Other:1 | |||
| radiomaster_900_bandit_nano | RadioMaster 900 Bandit Nano | 64 | RADIOMASTER_900_BANDIT_NANO | variants/esp32/radiomaster_900_bandit_nano | Display:1, Radio:19 |
| rak11200 | RAK WisBlock 11200 | 13 | RAK11200 | variants/esp32/rak11200 | Radio:18, GPS:2, Power:2 |
| station-g1 | Station G1 | 25 | STATION_G1 | variants/esp32/station-g1 | Display:1, Radio:13, Input:1, GPS:2, Power:5 |
| sugarcube | variants/esp32/tlora_v2_1_16 | Radio:6, Power:4 | |||
| tbeam | LILYGO T-Beam | 4 | TBEAM | variants/esp32/tbeam | Display:4, Radio:14, Input:1, GPS:3, Power:2, Connectivity/Other:1 |
| tbeam-displayshield | variants/esp32/tbeam | Display:4, Radio:14, Input:1, GPS:3, Power:2, Connectivity/Other:1 | |||
| tbeam0_7 | LILYGO T-Beam V0.7 | 6 | TBEAM_V0P7 | variants/esp32/tbeam_v07 | Radio:5, Input:1, GPS:3, Power:3 |
| tlora-v1 | LILYGO T-LoRa V1 | 2 | TLORA_V1 | variants/esp32/tlora_v1 | Radio:5, Input:1, Power:1 |
| tlora-v2 | LILYGO T-LoRa V2 | 1 | TLORA_V2 | variants/esp32/tlora_v2 | Radio:5, Input:1, Power:2 |
| tlora-v2-1-1_6 | LILYGO T-LoRa V2.1-1.6 | 3 | TLORA_V2_1_1P6 | variants/esp32/tlora_v2_1_16 | Radio:6, Power:4 |
| tlora-v2-1-1_8 | LILYGO T-LoRa V2.1-1.8 | 15 | TLORA_V2_1_1P8 | variants/esp32/tlora_v2_1_18 | Radio:6, Input:1, Power:3 |
| tlora_v1_3 | variants/esp32/tlora_v1_3 | Radio:5, Input:1, Power:2 | |||
| trackerd | variants/esp32/trackerd | Display:1, Radio:5, Input:1, GPS:9, Power:4 | |||
| wiphone | variants/esp32/wiphone | Display:9, Radio:9, GPS:1 |
esp32-c3
| Environment | Display Name | HW Model | HW Slug | Variant Dir | Common Categories |
|---|---|---|---|---|---|
| ai-c3 | variants/esp32c3/ai-c3 | Radio:15, Input:1, GPS:1 | |||
| hackerboxes-esp32c3-oled | variants/esp32c3/hackerboxes_esp32c3_oled | Display:1, Radio:16, Input:1, GPS:1 | |||
| heltec-hru-3601 | variants/esp32c3/heltec_hru_3601 | Display:1, Radio:16, Input:1, GPS:1, Power:1, Connectivity/Other:1 | |||
| heltec-ht62-esp32c3-sx1262 | Heltec HT62 | 53 | HELTEC_HT62 | variants/esp32c3/heltec_esp32c3 | Display:1, Radio:16, Input:1, GPS:1 |
| m5stack-stamp-c3 | variants/esp32c3/m5stack-stamp-c3 | Radio:9, Input:1, GPS:1 |
esp32-c6
| Environment | Display Name | HW Model | HW Slug | Variant Dir | Common Categories |
|---|---|---|---|---|---|
| m5stack-unitc6l | M5Stack Unit C6L | 111 | M5STACK_C6L | variants/esp32c6/m5stack_unitc6l | Display:1, Radio:14, GPS:3, Connectivity/Other:1 |
| tlora-c6 | variants/esp32c6/tlora_c6 | Radio:15 |
esp32-s3
| Environment | Display Name | HW Model | HW Slug | Variant Dir | Common Categories |
|---|---|---|---|---|---|
| CDEBYTE_EoRa-Hub | variants/esp32s3/CDEBYTE_EoRa-Hub | Display:2, Radio:14, Input:1, Power:6 | |||
| CDEBYTE_EoRa-S3 | EBYTE EoRa-S3 | 61 | CDEBYTE_EORA_S3 | variants/esp32s3/CDEBYTE_EoRa-S3 | Display:2, Radio:13, Input:1, Power:3 |
| EBYTE_ESP32-S3 | variants/esp32s3/EBYTE_ESP32-S3 | Display:1, Radio:26, Input:1, GPS:5, Power:1 | |||
| ESP32-S3-Pico | variants/esp32s3/esp32-s3-pico | Display:6, Radio:18, Input:2, GPS:1, Power:4, Connectivity/Other:1 | |||
| bpi_picow_esp32_s3 | variants/esp32s3/bpi_picow_esp32_s3 | Display:1, Radio:25, Input:1, GPS:1 | |||
| crowpanel-esp32s3-2-epaper | variants/esp32s3/crowpanel-esp32s3-5-epaper | Display:6, Radio:21, Input:1, GPS:1, Power:1 | |||
| crowpanel-esp32s3-4-epaper | variants/esp32s3/crowpanel-esp32s3-5-epaper | Display:6, Radio:21, Input:1, GPS:1, Power:1 | |||
| crowpanel-esp32s3-5-epaper | variants/esp32s3/crowpanel-esp32s3-5-epaper | Display:6, Radio:21, Input:1, GPS:1, Power:1 | |||
| dreamcatcher-2206 | variants/esp32s3/dreamcatcher | Radio:16, Input:1, Power:1, Connectivity/Other:1 | |||
| elecrow-adv-24-28-tft | Crowpanel Adv 2.4/2.8 TFT | 97 | CROWPANEL | variants/esp32s3/elecrow_panel | Display:1, Radio:21, GPS:6, Power:2 |
| elecrow-adv-35-tft | Crowpanel Adv 3.5 TFT | 97 | CROWPANEL | variants/esp32s3/elecrow_panel | Display:1, Radio:21, GPS:6, Power:2 |
| elecrow-adv1-43-50-70-tft | Crowpanel Adv 4.3/5.0/7.0 TFT | 97 | CROWPANEL | variants/esp32s3/elecrow_panel | Display:1, Radio:21, GPS:6, Power:2 |
| hackaday-communicator | variants/esp32s3/hackaday-communicator | Display:12, Radio:14, Input:1, GPS:1, Power:2 | |||
| heltec-v3 | Heltec V3 | 43 | HELTEC_V3 | variants/esp32s3/heltec_v3 | Display:1, Radio:16, Input:1, Power:6 |
| heltec-v4 | Heltec V4 | 110 | HELTEC_V4 | variants/esp32s3/heltec_v4 | Display:1, Radio:21, Input:1, GPS:10, Power:6 |
| heltec-v4-tft | Heltec V4 TFT | 110 | HELTEC_V4 | variants/esp32s3/heltec_v4 | Display:1, Radio:21, Input:1, GPS:10, Power:6 |
| heltec-vision-master-e213 | Heltec Vision Master E213 | 67 | HELTEC_VISION_MASTER_E213 | variants/esp32s3/heltec_vision_master_e213 | Display:6, Radio:15, Input:2, Power:6 |
| heltec-vision-master-e213-inkhud | variants/esp32s3/heltec_vision_master_e213 | Display:6, Radio:15, Input:2, Power:6 | |||
| heltec-vision-master-e290 | Heltec Vision Master E290 | 68 | HELTEC_VISION_MASTER_E290 | variants/esp32s3/heltec_vision_master_e290 | Display:6, Radio:15, Input:2, Power:6 |
| heltec-vision-master-e290-inkhud | variants/esp32s3/heltec_vision_master_e290 | Display:6, Radio:15, Input:2, Power:6 | |||
| heltec-vision-master-t190 | Heltec Vision Master T190 | 66 | HELTEC_VISION_MASTER_T190 | variants/esp32s3/heltec_vision_master_t190 | Display:6, Radio:16, Input:2, Power:6 |
| heltec-wireless-paper | Heltec Wireless Paper | 49 | HELTEC_WIRELESS_PAPER | variants/esp32s3/heltec_wireless_paper | Display:6, Radio:15, Input:1, Power:6 |
| heltec-wireless-paper-inkhud | variants/esp32s3/heltec_wireless_paper | Display:6, Radio:15, Input:1, Power:6 | |||
| heltec-wireless-paper-v1_0 | Heltec Wireless Paper V1.0 | 57 | HELTEC_WIRELESS_PAPER_V1_0 | variants/esp32s3/heltec_wireless_paper_v1 | Display:6, Radio:15, Input:1, Power:6 |
| heltec-wireless-tracker | Heltec Wireless Tracker V1.1 | 48 | HELTEC_WIRELESS_TRACKER | variants/esp32s3/heltec_wireless_tracker | Display:9, Radio:16, Input:1, GPS:7, Power:6 |
| heltec-wireless-tracker-V1-0 | Heltec Wireless Tracker V1.0 | 58 | HELTEC_WIRELESS_TRACKER_V1_0 | variants/esp32s3/heltec_wireless_tracker_V1_0 | Display:9, Radio:16, Input:1, GPS:9, Power:4 |
| heltec-wireless-tracker-v2 | Heltec Wireless Tracker V2 | 113 | HELTEC_WIRELESS_TRACKER_V2 | variants/esp32s3/heltec_wireless_tracker_v2 | Display:10, Radio:19, Input:1, GPS:7, Power:6 |
| heltec-wsl-v3 | Heltec Wireless Stick Lite V3 | 44 | HELTEC_WSL_V3 | variants/esp32s3/heltec_wsl_v3 | Radio:16, Input:1, Power:6 |
| heltec_capsule_sensor_v3 | variants/esp32s3/heltec_capsule_sensor_v3 | Display:1, Radio:16, Input:1, GPS:7, Power:6 | |||
| heltec_sensor_hub | variants/esp32s3/heltec_sensor_hub | Display:1, Radio:15, Input:1, Power:6, Connectivity/Other:1 | |||
| icarus | variants/esp32s3/icarus | Display:1, Radio:12, Input:1 | |||
| link32-s3-v1 | variants/esp32s3/link32_s3_v1 | Display:1, Radio:16, Input:2, Power:4, Connectivity/Other:1 | |||
| m5stack-cardputer-adv | variants/esp32s3/m5stack_cardputer_adv | Display:5, Radio:17, Input:2, GPS:4, Power:3, Connectivity/Other:2 | |||
| m5stack-cores3 | variants/esp32s3/m5stack_cores3 | Radio:11, Power:1 | |||
| mesh-tab-3-2-IPS-capacitive | variants/esp32s3/mesh-tab | Radio:18, Input:1, GPS:2, Power:5, Connectivity/Other:1 | |||
| mesh-tab-3-2-IPS-resistive | variants/esp32s3/mesh-tab | Radio:18, Input:1, GPS:2, Power:5, Connectivity/Other:1 | |||
| mesh-tab-3-2-TN-resistive | variants/esp32s3/mesh-tab | Radio:18, Input:1, GPS:2, Power:5, Connectivity/Other:1 | |||
| mesh-tab-3-5-IPS-capacitive | variants/esp32s3/mesh-tab | Radio:18, Input:1, GPS:2, Power:5, Connectivity/Other:1 | |||
| mesh-tab-3-5-IPS-resistive | variants/esp32s3/mesh-tab | Radio:18, Input:1, GPS:2, Power:5, Connectivity/Other:1 | |||
| mesh-tab-3-5-TN-resistive | variants/esp32s3/mesh-tab | Radio:18, Input:1, GPS:2, Power:5, Connectivity/Other:1 | |||
| mesh-tab-4-0-IPS-capacitive | variants/esp32s3/mesh-tab | Radio:18, Input:1, GPS:2, Power:5, Connectivity/Other:1 | |||
| mini-epaper-s3 | LILYGO Mini ePaper S3 E-Ink | MINI_EPAPER_S3 | variants/esp32s3/mini-epaper-s3 | Display:8, Radio:12, Input:5, GPS:1, Power:3, Connectivity/Other:1 | |
| mini-epaper-s3-inkhud | variants/esp32s3/mini-epaper-s3 | Display:8, Radio:12, Input:5, GPS:1, Power:3, Connectivity/Other:1 | |||
| nibble-esp32 | variants/esp32s3/nibble_esp32 | Radio:9, Input:1 | |||
| nugget-s3-lora | variants/esp32s3/nugget_s3_lora | Display:2, Radio:9, Input:1, Connectivity/Other:1 | |||
| picomputer-s3 | Pi Computer S3 | 52 | PICOMPUTER_S3 | variants/esp32s3/picomputer-s3 | Display:10, Radio:9, Input:1, Power:3 |
| picomputer-s3-tft | variants/esp32s3/picomputer-s3 | Display:10, Radio:9, Input:1, Power:3 | |||
| rak3112 | variants/esp32s3/rak3312 | Radio:13, GPS:3, Power:5 | |||
| rak3312 | RAK3312 | 106 | RAK3312 | variants/esp32s3/rak3312 | Radio:13, GPS:3, Power:5 |
| rak_wismesh_tap_v2 | RAK WisMesh Tap V2 | 116 | WISMESH_TAP_V2 | variants/esp32s3/rak_wismesh_tap_v2 | Radio:13, Input:1, GPS:3, Power:4 |
| rak_wismesh_tap_v2-tft | variants/esp32s3/rak_wismesh_tap_v2 | Radio:13, Input:1, GPS:3, Power:4 | |||
| seeed-sensecap-indicator | Seeed SenseCAP Indicator | 70 | SENSECAP_INDICATOR | variants/esp32s3/seeed-sensecap-indicator | Display:12, Radio:17, Input:1, GPS:4, Connectivity/Other:1 |
| seeed-sensecap-indicator-tft | variants/esp32s3/seeed-sensecap-indicator | Display:12, Radio:17, Input:1, GPS:4, Connectivity/Other:1 | |||
| seeed-xiao-s3 | Seeed Xiao ESP32-S3 | 81 | SEEED_XIAO_S3 | variants/esp32s3/seeed_xiao_s3 | Radio:16, Input:1, GPS:6, Power:3 |
| station-g2 | Station G2 | 31 | STATION_G2 | variants/esp32s3/station-g2 | Display:1, Radio:14, Input:1, GPS:2, Power:4 |
| t-beam-1w | LILYGO T-Beam 1W | 122 | TBEAM_1_WATT | variants/esp32s3/t-beam-1w | Display:3, Radio:19, Input:2, GPS:6, Power:5 |
| t-deck | LILYGO T-Deck | 50 | T_DECK | variants/esp32s3/t-deck | Display:11, Radio:17, Input:3, GPS:3, Power:5, Connectivity/Other:2 |
| t-deck-pro | LILYGO T-Deck Pro | 102 | T_DECK_PRO | variants/esp32s3/t-deck-pro | Display:6, Radio:18, Input:2, GPS:7, Power:5, Connectivity/Other:1 |
| t-deck-tft | variants/esp32s3/t-deck | Display:11, Radio:17, Input:3, GPS:3, Power:5, Connectivity/Other:2 | |||
| t-eth-elite | variants/esp32s3/t-eth-elite | Display:1, Radio:34, Input:1, GPS:5, Connectivity/Other:1 | |||
| t-watch-s3 | LILYGO T-Watch S3 | 51 | T_WATCH_S3 | variants/esp32s3/t-watch-s3 | Display:12, Radio:17, Input:1, GPS:5, Power:3, Connectivity/Other:3 |
| t5s3_epaper_inkhud | variants/esp32s3/t5s3_epaper | Radio:21, Input:3, GPS:2, Power:5, Connectivity/Other:3 | |||
| tbeam-s3-core | LILYGO T-Beam Supreme | 12 | LILYGO_TBEAM_S3_CORE | variants/esp32s3/tbeam-s3-core | Display:1, Radio:25, Input:1, GPS:4, Power:1, Connectivity/Other:2 |
| thinknode_m2 | ThinkNode M2 | 90 | THINKNODE_M2 | variants/esp32s3/ELECROW-ThinkNode-M2 | Display:2, Radio:14, Input:2, GPS:1, Power:6 |
| thinknode_m5 | ThinkNode M5 | 107 | THINKNODE_M5 | variants/esp32s3/ELECROW-ThinkNode-M5 | Display:6, Radio:14, Input:2, GPS:8, Power:4, Connectivity/Other:1 |
| tlora-pager | LILYGO T-LoRa Pager | 103 | T_LORA_PAGER | variants/esp32s3/tlora-pager | Display:10, Radio:30, Input:6, GPS:5, Power:5, Connectivity/Other:17 |
| tlora-pager-tft | variants/esp32s3/tlora-pager | Display:10, Radio:30, Input:6, GPS:5, Power:5, Connectivity/Other:17 | |||
| tlora-t3s3-epaper | LILYGO T-LoRa T3-S3 E-Ink | 16 | TLORA_T3_S3 | variants/esp32s3/tlora_t3s3_epaper | Display:6, Radio:28, Input:1, GPS:3, Power:3 |
| tlora-t3s3-epaper-inkhud | variants/esp32s3/tlora_t3s3_epaper | Display:6, Radio:28, Input:1, GPS:3, Power:3 | |||
| tlora-t3s3-v1 | LILYGO T-LoRa T3-S3 | 16 | TLORA_T3_S3 | variants/esp32s3/tlora_t3s3_v1 | Display:1, Radio:36, Input:1, Power:3 |
| unphone | unPhone | 59 | UNPHONE | variants/esp32s3/unphone | Display:9, Radio:9, Input:3, GPS:1, Power:2, Connectivity/Other:1 |
| unphone-tft | variants/esp32s3/unphone | Display:9, Radio:9, Input:3, GPS:1, Power:2, Connectivity/Other:1 |
esp32s2
| Environment | Display Name | HW Model | HW Slug | Variant Dir | Common Categories |
|---|---|---|---|---|---|
| nugget-s2-lora | variants/esp32s2/nugget_s2_lora | Radio:9, Input:1, Connectivity/Other:1 |
native
| Environment | Display Name | HW Model | HW Slug | Variant Dir | Common Categories |
|---|---|---|---|---|---|
| buildroot | variants/native/portduino-buildroot | Display:2, GPS:1 | |||
| coverage | variants/native/portduino | Display:2, GPS:1 | |||
| native | variants/native/portduino | Display:2, GPS:1 | |||
| native-fb | variants/native/portduino | Display:2, GPS:1 | |||
| native-tft | variants/native/portduino | Display:2, GPS:1 | |||
| native-tft-debug | variants/native/portduino | Display:2, GPS:1 |
nrf52840
| Environment | Display Name | HW Model | HW Slug | Variant Dir | Common Categories |
|---|---|---|---|---|---|
| ME25LS01-4Y10TD | variants/nrf52840/ME25LS01-4Y10TD | Radio:8, Input:1, GPS:8, Power:4 | |||
| ME25LS01-4Y10TD_e-ink | variants/nrf52840/ME25LS01-4Y10TD_e-ink | Display:6, Radio:8, Input:1, GPS:8, Power:4 | |||
| TWC_mesh_v4 | variants/nrf52840/TWC_mesh_v4 | Display:1, Radio:7, GPS:4, Power:5 | |||
| canaryone | Canary One | 29 | CANARYONE | variants/nrf52840/canaryone | Radio:7, GPS:8, Power:5 |
| feather_diy | variants/nrf52840/feather_diy | Radio:17, Input:1 | |||
| gat562_mesh_trial_tracker | variants/nrf52840/gat562_mesh_trial_tracker | Display:2, Radio:8, GPS:4, Power:5 | |||
| heltec-mesh-node-t096 | Heltec Mesh Node 096 | 127 | HELTEC_MESH_NODE_T096 | variants/nrf52840/heltec_mesh_node_t096 | Display:8, Radio:11, GPS:10, Power:9 |
| heltec-mesh-node-t114 | Heltec Mesh Node T114 | 69 | HELTEC_MESH_NODE_T114 | variants/nrf52840/heltec_mesh_node_t114 | Display:7, Radio:8, GPS:7, Power:8, Connectivity/Other:1 |
| heltec-mesh-node-t114-inkhud | variants/nrf52840/heltec_mesh_node_t114-inkhud | Display:6, Radio:8, GPS:7, Power:7, Connectivity/Other:1 | |||
| heltec-mesh-pocket-10000 | Heltec Mesh Pocket | 94 | HELTEC_MESH_POCKET | variants/nrf52840/heltec_mesh_pocket | Display:6, Radio:8, GPS:1, Power:7 |
| heltec-mesh-pocket-10000-inkhud | Heltec Mesh Pocket | 94 | HELTEC_MESH_POCKET | variants/nrf52840/heltec_mesh_pocket | Display:6, Radio:8, GPS:1, Power:7 |
| heltec-mesh-pocket-5000 | Heltec Mesh Pocket | 94 | HELTEC_MESH_POCKET | variants/nrf52840/heltec_mesh_pocket | Display:6, Radio:8, GPS:1, Power:7 |
| heltec-mesh-pocket-5000-inkhud | Heltec Mesh Pocket | 94 | HELTEC_MESH_POCKET | variants/nrf52840/heltec_mesh_pocket | Display:6, Radio:8, GPS:1, Power:7 |
| heltec-mesh-solar | Heltec MeshSolar | 108 | HELTEC_MESH_SOLAR | variants/nrf52840/heltec_mesh_solar | Radio:8, GPS:6 |
| heltec-mesh-solar-eink | variants/nrf52840/heltec_mesh_solar | Radio:8, GPS:6 | |||
| heltec-mesh-solar-inkhud | variants/nrf52840/heltec_mesh_solar | Radio:8, GPS:6 | |||
| heltec-mesh-solar-oled | variants/nrf52840/heltec_mesh_solar | Radio:8, GPS:6 | |||
| heltec-mesh-solar-tft | variants/nrf52840/heltec_mesh_solar | Radio:8, GPS:6 | |||
| makerpython_nrf52840_sx1280_eink | variants/nrf52840/MakePython_nRF52840_eink | Display:6, Radio:6, GPS:4, Power:5 | |||
| makerpython_nrf52840_sx1280_oled | variants/nrf52840/MakePython_nRF52840_oled | Radio:6, GPS:4, Power:5 | |||
| meshlink | variants/nrf52840/meshlink | Display:6, Radio:7, Input:1, GPS:5, Power:5 | |||
| meshlink_eink | variants/nrf52840/meshlink | Display:6, Radio:7, Input:1, GPS:5, Power:5 | |||
| meshtiny | variants/nrf52840/meshtiny | Display:2, Radio:8, Input:5, Power:5 | |||
| minimesh_lite | variants/nrf52840/dls_Minimesh_Lite | Radio:15, Input:1, GPS:4, Power:6 | |||
| monteops_hw1 | variants/nrf52840/monteops_hw1 | Radio:8, GPS:3, Power:5, Connectivity/Other:1 | |||
| ms24sf1 | variants/nrf52840/MS24SF1 | Radio:8, Input:1, GPS:8, Power:4 | |||
| muzi-base | muzi BASE | 93 | MUZI_BASE | variants/nrf52840/muzi_base | Display:3, Radio:19, Input:1, GPS:4, Power:5 |
| nano-g2-ultra | Nano G2 Ultra | 18 | NANO_G2_ULTRA | variants/nrf52840/nano-g2-ultra | Display:1, Radio:7, GPS:4, Power:6, Connectivity/Other:1 |
| nrf52_promicro_diy_tcxo | NRF52 Pro-micro DIY | 63 | NRF52_PROMICRO_DIY | variants/nrf52840/diy/nrf52_promicro_diy_tcxo | Display:4, Radio:29, Input:1, GPS:4, Power:6 |
| pca10059_diy_eink | variants/nrf52840/Dongle_nRF52840-pca10059-v1 | Display:7, Radio:8, GPS:4, Power:5 | |||
| r1-neo | muzi R1 Neo | 101 | MUZI_R1_NEO | variants/nrf52840/r1-neo | Display:1, Radio:8, GPS:4, Power:5 |
| rak2560 | RAK WisMesh Repeater | 22 | WISMESH_HUB | variants/nrf52840/rak2560 | Display:6, Radio:8, GPS:2, Power:5 |
| rak3401-1watt | RAK3401 1W | 117 | RAK3401 | variants/nrf52840/rak3401_1watt | Display:6, Radio:12, GPS:3, Power:5 |
| rak4631 | RAK WisBlock 4631 | 9 | RAK4631 | variants/nrf52840/rak4631 | Display:6, Radio:8, GPS:3, Power:7, Connectivity/Other:1 |
| rak4631_dbg | variants/nrf52840/rak4631 | Display:6, Radio:8, GPS:3, Power:7, Connectivity/Other:1 | |||
| rak4631_eink | variants/nrf52840/rak4631_epaper | Display:6, Radio:8, GPS:4, Power:5 | |||
| rak4631_eink_onrxtx | variants/nrf52840/rak4631_epaper_onrxtx | Display:6, Radio:8, Power:1 | |||
| rak4631_eth_gw | variants/nrf52840/rak4631_eth_gw | Display:6, Radio:8, GPS:3, Power:5, Connectivity/Other:1 | |||
| rak4631_eth_gw_dbg | variants/nrf52840/rak4631_eth_gw | Display:6, Radio:8, GPS:3, Power:5, Connectivity/Other:1 | |||
| rak4631_nomadstar_meteor_pro | NomadStar Meteor Pro | 96 | NOMADSTAR_METEOR_PRO | variants/nrf52840/rak4631_nomadstar_meteor_pro | Display:6, Radio:8, GPS:3, Power:5, Connectivity/Other:1 |
| rak4631_nomadstar_meteor_pro_dbg | variants/nrf52840/rak4631_nomadstar_meteor_pro | Display:6, Radio:8, GPS:3, Power:5, Connectivity/Other:1 | |||
| rak_wismeshtag | RAK WisMesh Tag | 105 | WISMESH_TAG | variants/nrf52840/rak_wismeshtag | Display:7, Radio:8, GPS:4, Power:5 |
| rak_wismeshtap | RAK WisMesh Tap | 84 | WISMESH_TAP | variants/nrf52840/rak_wismeshtap | Display:21, Radio:8, GPS:3, Power:7, Connectivity/Other:1 |
| seeed_solar_node | Seeed SenseCAP Solar Node | 95 | SEEED_SOLAR_NODE | variants/nrf52840/seeed_solar_node | Radio:9, Input:2, GPS:8, Power:3 |
| seeed_wio_tracker_L1 | Seeed Wio Tracker L1 | 99 | SEEED_WIO_TRACKER_L1 | variants/nrf52840/seeed_wio_tracker_L1 | Display:2, Radio:9, Input:1, GPS:7, Power:3 |
| seeed_wio_tracker_L1_eink | Seeed Wio Tracker L1 E-Ink | 100 | SEEED_WIO_TRACKER_L1_EINK | variants/nrf52840/seeed_wio_tracker_L1_eink | Display:7, Radio:9, Input:1, GPS:7, Power:3 |
| seeed_wio_tracker_L1_eink-inkhud | variants/nrf52840/seeed_wio_tracker_L1_eink | Display:7, Radio:9, Input:1, GPS:7, Power:3 | |||
| seeed_xiao_nrf52840_kit | Seeed Xiao NRF52840 Kit | 88 | XIAO_NRF52_KIT | variants/nrf52840/seeed_xiao_nrf52840_kit | Radio:19, Input:2, GPS:9, Power:6 |
| seeed_xiao_nrf52840_kit_i2c | variants/nrf52840/seeed_xiao_nrf52840_kit | Radio:19, Input:2, GPS:9, Power:6 | |||
| t-echo | LILYGO T-Echo | 7 | T_ECHO | variants/nrf52840/t-echo | Display:7, Radio:8, GPS:7, Power:6, Connectivity/Other:1 |
| t-echo-inkhud | variants/nrf52840/t-echo | Display:7, Radio:8, GPS:7, Power:6, Connectivity/Other:1 | |||
| t-echo-lite | LILYGO T-Echo Lite | 109 | T_ECHO_LITE | variants/nrf52840/t-echo-lite | Display:6, Radio:9, GPS:10, Power:8 |
| t-echo-plus | variants/nrf52840/t-echo-plus | Display:8, Radio:8, GPS:7, Power:6 | |||
| thinknode_m1 | ThinkNode M1 | 89 | THINKNODE_M1 | variants/nrf52840/ELECROW-ThinkNode-M1 | Display:7, Radio:8, Input:1, GPS:8, Power:8 |
| thinknode_m1-inkhud | variants/nrf52840/ELECROW-ThinkNode-M1 | Display:7, Radio:8, Input:1, GPS:8, Power:8 | |||
| thinknode_m3 | Elecrow ThinkNode M3 | 115 | THINKNODE_M3 | variants/nrf52840/ELECROW-ThinkNode-M3 | Radio:1, Input:2, GPS:8, Power:7, Connectivity/Other:1 |
| thinknode_m4 | variants/nrf52840/ELECROW-ThinkNode-M4 | Radio:8, GPS:12, Power:7 | |||
| thinknode_m6 | ThinkNode M6 | 120 | THINKNODE_M6 | variants/nrf52840/ELECROW-ThinkNode-M6 | Radio:7, GPS:9, Power:9, Connectivity/Other:1 |
| tracker-t1000-e | Seeed SenseCAP T1000-E | 71 | TRACKER_T1000_E | variants/nrf52840/tracker-t1000-e | Display:1, Radio:8, Input:1, GPS:13, Power:5 |
| wio-sdk-wm1110 | variants/nrf52840/wio-sdk-wm1110 | Radio:8, Input:1 | |||
| wio-t1000-s | variants/nrf52840/wio-t1000-s | Radio:8, Input:1, GPS:12, Power:4 | |||
| wio-tracker-wm1110 | Seeed Wio WM1110 Tracker | 21 | WIO_WM1110 | variants/nrf52840/wio-tracker-wm1110 | Radio:8, Input:1, GPS:3 |
rp2040
| Environment | Display Name | HW Model | HW Slug | Variant Dir | Common Categories |
|---|---|---|---|---|---|
| catsniffer | variants/rp2040/ec_catsniffer | Display:1, Radio:17, GPS:1 | |||
| challenger_2040_lora | variants/rp2040/challenger_2040_lora | Radio:17, Input:1, Power:1 | |||
| feather_rp2040_rfm95 | variants/rp2040/feather_rp2040_rfm95 | Radio:17, Input:1, Power:1 | |||
| nibble-rp2040 | variants/rp2040/nibble_rp2040 | Radio:9, Input:1 | |||
| pico | Raspberry Pi Pico | 47 | RPI_PICO | variants/rp2040/rpipico | Radio:16, Input:1, Power:4 |
| pico_slowclock | variants/rp2040/rpipico-slowclock | Display:2, Radio:16, Input:1, GPS:5, Power:4 | |||
| picow | Raspberry Pi Pico W | 47 | RPI_PICO | variants/rp2040/rpipicow | Radio:16, Input:1, Power:4, Connectivity/Other:1 |
| rak11310 | RAK WisBlock 11310 | 26 | RAK11310 | variants/rp2040/rak11310 | Radio:17, Input:1, Power:3, Connectivity/Other:1 |
| rp2040-lora | RP2040 LoRa | 30 | RP2040_LORA | variants/rp2040/rp2040-lora | Radio:18, Input:1, Power:1 |
| senselora_rp2040 | variants/rp2040/senselora_rp2040 | Display:1, Radio:9, Input:1, Power:1 |
rp2350
| Environment | Display Name | HW Model | HW Slug | Variant Dir | Common Categories |
|---|---|---|---|---|---|
| pico2 | variants/rp2350/rpipico2 | Radio:16, Input:1, Power:4 | |||
| pico2w | variants/rp2350/rpipico2w | Radio:16, Input:1, Power:4, Connectivity/Other:1 |
stm32
| Environment | Display Name | HW Model | HW Slug | Variant Dir | Common Categories |
|---|---|---|---|---|---|
| CDEBYTE_E77-MBL | variants/stm32/CDEBYTE_E77-MBL | Display:1 | |||
| milesight_gs301 | variants/stm32/milesight_gs301 | Display:1, Radio:1, Input:1 | |||
| rak3172 | variants/stm32/rak3172 | Display:1 | |||
| russell | variants/stm32/russell | Display:1, Radio:1, Input:1, GPS:4 | |||
| wio-e5 | variants/stm32/wio-e5 | Display:1 |
Representative Board Examples
diy: 9m2ibr_aprs_lora_tracker
- Variant directory:
variants/esp32/diy/9m2ibr_aprs_lora_tracker - Input examples:
BUTTON_PIN=15
- Radio examples:
LORA_SCK=18LORA_MISO=19LORA_MOSI=23LORA_CS=5LORA_DIO0=26LORA_RESET=27LORA_DIO1=12LORA_DIO2=RADIOLIB_NC
- GPS examples:
GPS_RX_PIN=16GPS_TX_PIN=17
- Display examples:
HAS_SCREEN=1
- I2C/SPI examples:
I2C_SDA=21I2C_SCL=22
- Power examples:
BATTERY_PIN=35ADC_MULTIPLIER=2.01ADC_CHANNEL=ADC1_GPIO35_CHANNELBATTERY_SENSE_RESOLUTION_BITS=ADC_RESOLUTION
esp32: betafpv_2400_tx_micro
- Variant directory:
variants/esp32/betafpv_2400_tx_micro - Input examples:
BUTTON_PIN=25
- Radio examples:
LORA_SCK=18LORA_MISO=19LORA_MOSI=23LORA_CS=5RF95_FAN_EN=17USE_SX1280=1LORA_RESET=14SX128X_CS=5
- I2C/SPI examples:
I2C_SDA=22I2C_SCL=32
- Connectivity/Other examples:
HAS_NEOPIXEL=1
esp32-c3: ai-c3
- Variant directory:
variants/esp32c3/ai-c3 - Input examples:
BUTTON_PIN=9
- Radio examples:
USE_RF95=1LORA_SCK=4LORA_MISO=5LORA_MOSI=6LORA_CS=7LORA_DIO0=10LORA_DIO1=3LORA_RESET=2
- GPS examples:
HAS_GPS=0
- I2C/SPI examples:
I2C_SDA=SDAI2C_SCL=SCL
esp32-c6: m5stack-unitc6l
- Variant directory:
variants/esp32c6/m5stack_unitc6l custom_meshtastic_hw_model:111custom_meshtastic_hw_model_slug:M5STACK_C6Lcustom_meshtastic_architecture:esp32-c6custom_meshtastic_actively_supported:truecustom_meshtastic_support_level:1custom_meshtastic_display_name:M5Stack Unit C6Lcustom_meshtastic_images:m5_c6l.svgcustom_meshtastic_tags:M5Stack- Radio examples:
USE_SX1262=1LORA_MISO=22LORA_SCK=20LORA_MOSI=21LORA_CS=23LORA_RESET=RADIOLIB_NCLORA_DIO1=7LORA_BUSY=19
- GPS examples:
HAS_GPS=1GPS_RX_PIN=4GPS_TX_PIN=5
- Display examples:
SCREEN_TRANSITION_FRAMERATE=10
- I2C/SPI examples:
I2C_SDA=10I2C_SCL=8
- Connectivity/Other examples:
HAS_NEOPIXEL=1
esp32-s3: CDEBYTE_EoRa-Hub
- Variant directory:
variants/esp32s3/CDEBYTE_EoRa-Hub - Input examples:
BUTTON_PIN=0
- Radio examples:
USE_LR1121=1LORA_SCK=9LORA_MOSI=10LORA_MISO=11LORA_RESET=12LORA_CS=8LORA_DIO9=13LR1121_IRQ_PIN=14
- Display examples:
HAS_SCREEN=1USE_SSD1306=1
- I2C/SPI examples:
I2C_SCL=17I2C_SDA=18I2C_SCL1=21I2C_SDA1=10
- Power examples:
BATTERY_PIN=1ADC_CHANNEL=ADC1_GPIO1_CHANNELADC_MULTIPLIER=103.0ADC_ATTENUATION=ADC_ATTEN_DB_0ADC_CTRL=37ADC_CTRL_ENABLED=LOW
esp32s2: nugget-s2-lora
- Variant directory:
variants/esp32s2/nugget_s2_lora - Input examples:
BUTTON_PIN=0
- Radio examples:
USE_RF95=1LORA_SCK=6LORA_MISO=8LORA_MOSI=10LORA_CS=13LORA_DIO0=16LORA_RESET=5LORA_DIO1=RADIOLIB_NC
- I2C/SPI examples:
I2C_SDA=34I2C_SCL=36
- Connectivity/Other examples:
HAS_NEOPIXEL=1
native: buildroot
- Variant directory:
variants/native/portduino-buildroot - GPS examples:
HAS_GPS=1
- Display examples:
HAS_SCREEN=1USE_TFTDISPLAY=1
nrf52840: ME25LS01-4Y10TD
- Variant directory:
variants/nrf52840/ME25LS01-4Y10TD - Input examples:
BUTTON_PIN=(0 + 27)
- Radio examples:
LORA_RESET=(32 + 11)LORA_DIO1=(32 + 12)LORA_DIO2=(32 + 10)LORA_SCK=PIN_SPI_SCKLORA_MISO=PIN_SPI_MISOLORA_MOSI=PIN_SPI_MOSILORA_CS=PIN_SPI_NSSUSE_LR1110=1
- GPS examples:
HAS_GPS=0PIN_GPS_EN=-1GPS_EN_ACTIVE=HIGHPIN_GPS_RESET=-1GPS_VRTC_EN=-1GPS_SLEEP_INT=-1GPS_RTC_INT=-1GPS_RESETB_OUT=-1
- I2C/SPI examples:
WIRE_INTERFACES_COUNT=1SPI_INTERFACES_COUNT=1PIN_SPI_MISO=(0 + 29)PIN_SPI_MOSI=(0 + 2)PIN_SPI_SCK=(32 + 15)PIN_SPI_NSS=(32 + 13)
- Power examples:
BATTERY_PIN=-1ADC_MULTIPLIER=(2.0F)ADC_RESOLUTION=14BATTERY_SENSE_RESOLUTION_BITS=12
rp2040: catsniffer
- Variant directory:
variants/rp2040/ec_catsniffer - Radio examples:
USE_SX1262=1LORA_SCK=18LORA_MISO=16LORA_MOSI=19LORA_CS=17LORA_DIO0=5LORA_RESET=24LORA_DIO1=4
- GPS examples:
HAS_GPS=0
- Display examples:
HAS_SCREEN=0
rp2350: pico2
- Variant directory:
variants/rp2350/rpipico2 - Input examples:
BUTTON_PIN=17
- Radio examples:
USE_SX1262=1LORA_SCK=10LORA_MISO=12LORA_MOSI=11LORA_CS=3LORA_DIO0=RADIOLIB_NCLORA_RESET=15LORA_DIO1=20
- Power examples:
EXT_NOTIFY_OUT=22BATTERY_PIN=26ADC_MULTIPLIER=3.1BATTERY_SENSE_RESOLUTION_BITS=ADC_RESOLUTION
stm32: CDEBYTE_E77-MBL
- Variant directory:
variants/stm32/CDEBYTE_E77-MBL - Display examples:
USE_STM32WLx=1
Intake Guidance For New Hardware
When using this context to add a new board, collect these inputs before generating files:
- PlatformIO environment name
custom_meshtastic_hw_modelandcustom_meshtastic_hw_model_slug- Display name and architecture
- Whether the board is actively supported and its support level
- Partition scheme, DFU requirement, and image/tag metadata if applicable
- Radio chip family and complete radio pin group
- Input/button/rotary/keyboard pins
- Display interface pins and driver-related macros
- GPS, power-management, I2C, SPI, storage, and auxiliary peripheral definitions
- Any board-specific initialization that requires
variant.cppor extra variant hooks
Inherited Defaults Note
Some architecture families rely on BSP (Board Support Package) or base-environment defaults rather than declaring every pin or capability macro explicitly in variant.h. When adding a new board for one of these families, check the relevant BSP headers before assuming a missing define means a feature is absent.
Directories scanned that had no variant.h (relying entirely on BSP/base-environment): diy: 4, esp32: 3, esp32s3: 1
nrf52840
- VARIANT_MCK — nRF52 BSP clock constant (e.g., 64000000ul); always inherited from BSP unless overridden.
- USE_LFXO — low-frequency crystal oscillator selection; declared locally only when the board uses LFXO rather than the RC oscillator.
- PINSPI_ / PINSPI1_ — SPI bus pin numbers come from the BSP variant table; boards override only when the LoRa radio or display uses non-default SPI routing.
- WIRE_INTERFACES_COUNT / SPI_INTERFACES_COUNT — bus count comes from BSP; explicitly set only when the board deviates.
- LED_BLUE / PIN_LED1 / PINS_COUNT / NUM_DIGITAL_PINS — standard BSP pin-table entries inherited from the nRF52 Arduino core.
rp2040
- PINSPI* — primary SPI pins come from the RP2040 Arduino BSP; most boards declare them explicitly, but the defaults align with the Pico pin assignments.
- NUM_DIGITAL_PINS / NUM_ANALOG_INPUTS — Arduino BSP counts; rarely overridden locally.
stm32
- Radio and pin assignments for STM32WL targets are largely internal to the WL SoC and declared via STM32 HAL/BSP headers; variant.h files are minimal.
- USE_STM32WLx is typically the only explicit define; all other radio config comes from the BSP.
native
- The native/Portduino target uses runtime configuration rather than compile-time pin defines; variant.h only sets display and GPS stubs.
Cautions
- Some boards rely on architecture defaults rather than declaring every field locally.
- Some board families expose multiple environments or display variants that share one hardware model.
- Source materials such as schematics still need human verification before new pin mappings are trusted.
- This document is a starting context artifact, not proof that a new board definition is safe to merge.