Files
firmware/docs/hardware-support-context.md

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.ini and variants/**/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_model
  • custom_meshtastic_hw_model_slug
  • custom_meshtastic_architecture
  • custom_meshtastic_actively_supported
  • custom_meshtastic_support_level
  • custom_meshtastic_display_name
  • custom_meshtastic_images
  • custom_meshtastic_tags
  • custom_meshtastic_requires_dfu
  • custom_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 = 18
    • LORA_MISO = 19
    • LORA_MOSI = 23
    • LORA_CS = 5
    • LORA_DIO0 = 26
    • LORA_RESET = 27
    • LORA_DIO1 = 12
    • LORA_DIO2 = RADIOLIB_NC
  • GPS examples:
    • GPS_RX_PIN = 16
    • GPS_TX_PIN = 17
  • Display examples:
    • HAS_SCREEN = 1
  • I2C/SPI examples:
    • I2C_SDA = 21
    • I2C_SCL = 22
  • Power examples:
    • BATTERY_PIN = 35
    • ADC_MULTIPLIER = 2.01
    • ADC_CHANNEL = ADC1_GPIO35_CHANNEL
    • BATTERY_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 = 18
    • LORA_MISO = 19
    • LORA_MOSI = 23
    • LORA_CS = 5
    • RF95_FAN_EN = 17
    • USE_SX1280 = 1
    • LORA_RESET = 14
    • SX128X_CS = 5
  • I2C/SPI examples:
    • I2C_SDA = 22
    • I2C_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 = 1
    • LORA_SCK = 4
    • LORA_MISO = 5
    • LORA_MOSI = 6
    • LORA_CS = 7
    • LORA_DIO0 = 10
    • LORA_DIO1 = 3
    • LORA_RESET = 2
  • GPS examples:
    • HAS_GPS = 0
  • I2C/SPI examples:
    • I2C_SDA = SDA
    • I2C_SCL = SCL

esp32-c6: m5stack-unitc6l

  • Variant directory: variants/esp32c6/m5stack_unitc6l
  • custom_meshtastic_hw_model: 111
  • custom_meshtastic_hw_model_slug: M5STACK_C6L
  • custom_meshtastic_architecture: esp32-c6
  • custom_meshtastic_actively_supported: true
  • custom_meshtastic_support_level: 1
  • custom_meshtastic_display_name: M5Stack Unit C6L
  • custom_meshtastic_images: m5_c6l.svg
  • custom_meshtastic_tags: M5Stack
  • Radio examples:
    • USE_SX1262 = 1
    • LORA_MISO = 22
    • LORA_SCK = 20
    • LORA_MOSI = 21
    • LORA_CS = 23
    • LORA_RESET = RADIOLIB_NC
    • LORA_DIO1 = 7
    • LORA_BUSY = 19
  • GPS examples:
    • HAS_GPS = 1
    • GPS_RX_PIN = 4
    • GPS_TX_PIN = 5
  • Display examples:
    • SCREEN_TRANSITION_FRAMERATE = 10
  • I2C/SPI examples:
    • I2C_SDA = 10
    • I2C_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 = 1
    • LORA_SCK = 9
    • LORA_MOSI = 10
    • LORA_MISO = 11
    • LORA_RESET = 12
    • LORA_CS = 8
    • LORA_DIO9 = 13
    • LR1121_IRQ_PIN = 14
  • Display examples:
    • HAS_SCREEN = 1
    • USE_SSD1306 = 1
  • I2C/SPI examples:
    • I2C_SCL = 17
    • I2C_SDA = 18
    • I2C_SCL1 = 21
    • I2C_SDA1 = 10
  • Power examples:
    • BATTERY_PIN = 1
    • ADC_CHANNEL = ADC1_GPIO1_CHANNEL
    • ADC_MULTIPLIER = 103.0
    • ADC_ATTENUATION = ADC_ATTEN_DB_0
    • ADC_CTRL = 37
    • ADC_CTRL_ENABLED = LOW

esp32s2: nugget-s2-lora

  • Variant directory: variants/esp32s2/nugget_s2_lora
  • Input examples:
    • BUTTON_PIN = 0
  • Radio examples:
    • USE_RF95 = 1
    • LORA_SCK = 6
    • LORA_MISO = 8
    • LORA_MOSI = 10
    • LORA_CS = 13
    • LORA_DIO0 = 16
    • LORA_RESET = 5
    • LORA_DIO1 = RADIOLIB_NC
  • I2C/SPI examples:
    • I2C_SDA = 34
    • I2C_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 = 1
    • USE_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_SCK
    • LORA_MISO = PIN_SPI_MISO
    • LORA_MOSI = PIN_SPI_MOSI
    • LORA_CS = PIN_SPI_NSS
    • USE_LR1110 = 1
  • GPS examples:
    • HAS_GPS = 0
    • PIN_GPS_EN = -1
    • GPS_EN_ACTIVE = HIGH
    • PIN_GPS_RESET = -1
    • GPS_VRTC_EN = -1
    • GPS_SLEEP_INT = -1
    • GPS_RTC_INT = -1
    • GPS_RESETB_OUT = -1
  • I2C/SPI examples:
    • WIRE_INTERFACES_COUNT = 1
    • SPI_INTERFACES_COUNT = 1
    • PIN_SPI_MISO = (0 + 29)
    • PIN_SPI_MOSI = (0 + 2)
    • PIN_SPI_SCK = (32 + 15)
    • PIN_SPI_NSS = (32 + 13)
  • Power examples:
    • BATTERY_PIN = -1
    • ADC_MULTIPLIER = (2.0F)
    • ADC_RESOLUTION = 14
    • BATTERY_SENSE_RESOLUTION_BITS = 12

rp2040: catsniffer

  • Variant directory: variants/rp2040/ec_catsniffer
  • Radio examples:
    • USE_SX1262 = 1
    • LORA_SCK = 18
    • LORA_MISO = 16
    • LORA_MOSI = 19
    • LORA_CS = 17
    • LORA_DIO0 = 5
    • LORA_RESET = 24
    • LORA_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 = 1
    • LORA_SCK = 10
    • LORA_MISO = 12
    • LORA_MOSI = 11
    • LORA_CS = 3
    • LORA_DIO0 = RADIOLIB_NC
    • LORA_RESET = 15
    • LORA_DIO1 = 20
  • Power examples:
    • EXT_NOTIFY_OUT = 22
    • BATTERY_PIN = 26
    • ADC_MULTIPLIER = 3.1
    • BATTERY_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_model and custom_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.cpp or 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.