The V4-R8 is an ESP32-S3R8 with 8 MB octal PSRAM, where V4 and V4.3 are S3R2 with 2 MB quad. Octal PSRAM claims GPIO33-37, which moves Vext 36->40, the LED 35->46 and VGNSS_Ctrl 34->42, and drops ADC_Ctrl and GNSS_RST. CTX binds as lna-bypass-gpios rather than tx-enable-gpios, so the board is a fourth one where set radio.fem.rxgain works; the CLI reference and the register-patch help text say so. The allowlist change is needed for the board to be added correctly. CMake MATCHES is a substring search, so the existing heltec_wifi_lora32_v4 entry also matches heltec_wifi_lora32_v4_r8 and the new board would get CONFIG_PM=y without anyone deciding it should, on a path pm_esp32.conf marks as not yet validated on hardware. Anchoring preserves the five boards that were intended to match, including heltec_wireless_tracker_v2, which previously qualified only by substring and is now listed explicitly. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
8.3 KiB
Supported Boards
Board strings for use with west build -b <board> zephcore.
nRF52840
rak4631
rak3401_1watt
wio_tracker_l1
wio_tracker_l1_1w
t1000_e
meshtracker_x1
thinknode_m1
thinknode_m3
thinknode_m6
rak_wismesh_tag
ikoka_nano_30dbm
sensecap_solar
xiao_nrf52840
lilygo_techo
promicro_sx1262
promicro_lr2021
heltec_t114
heltec_t096
heltec_t1
gat562_30s
muziworks_r1neo
lilygo_timpulse_plus
RAK WisMesh Pocket (WisBlock pocket): use
-b rak4631— same board string and firmware as RAK4631.Heltec T114 screenless build: append
boards/nrf52840/heltec_t114/no_display.conftoEXTRA_CONF_FILEfor units without the TFT module.SenseCAP MeshTracker X1 (
meshtracker_x1): nRF52840 + LR2021, AG3335M dual-band L1+L5 GNSS, SPA06 barometer, DRV2605L vibration, YSN8900 RTC, 8 MB QSPI flash (/ext), RGB LED, buzzer. Untested on hardware — first ZephCore board to use a real LR2021. The RTC is treated as an RX8900 second-source; boot-time discovery validates that before trusting it.Heltec Mesh Node T096 (
heltec_t096): nRF52840 with SX1262 + KCT8103L PA/FEM, UC6580 GNSS, and ST7735S 160x80 TFT companion display. The external SPI flash footprint is documented in the board notes but left disabled until the device parameters are confirmed.Heltec Mesh Node T1 (
heltec_t1): nRF52840 + SX1262 handheld tracker card with UC6580 L1+L5 GNSS, ST7735S 160x80 TFT, PAM8904-driven piezo buzzer, two buttons and a 1850 mAh battery. No PA/FEM — the SX1262 drives a uPG2179 antenna switch from DIO2. The onboard ICM-42607-P/MMC5983MA IMU bus is left powered down (no ZephCore consumer). Untested on hardware; the GNSS UART direction and the display offsets are the two things to check first, both flagged in the board README.LilyGo T-Impulse Plus (
lilygo_timpulse_plus): nRF52840 wristband/tracker with SX1262 (GPIO antenna switch, not DIO2), SSD1315 64x32 OLED, u-blox MIA-M10Q GPS, 4 MB QSPI flash (/ext), touch button, haptic motor. Builds and ships in releases, but several parameters are inferred from vendor sources and not bench-verified (TCXO voltage, battery divider ratio, OLED offsets) — see the board README. Early hardware testing also showed occasional spontaneous reboots, untriaged.ProMicro LR2021 (
promicro_lr2021): nRF52840 SuperMini + Semtech LR2021, the first ZephCore board bring-up for that radio. Source-only — not inbuild.sh, the release workflow, or the Mesh America catalog, so no release carries a binary for it. The bring-up module was destroyed by an accidental 5V feed (LR2021 VBAT max ~3.7V); build it yourself if you want to continue testing on a fresh module.
ESP32
xiao_esp32c3
xiao_esp32c6/esp32c6/hpcore
xiao_esp32s3/esp32s3/procpu
lilygo_tlora_c6/esp32c6/hpcore
lilygo_t3s3/esp32s3/procpu
station_g2/esp32s3/procpu
heltec_wifi_lora32_v3/esp32s3/procpu
heltec_wifi_lora32_v4/esp32s3/procpu
heltec_wifi_lora32_v43/esp32s3/procpu
heltec_wifi_lora32_v4_r8/esp32s3/procpu # source-only, no published firmware
heltec_wireless_tracker/esp32s3/procpu
heltec_wireless_tracker_v2/esp32s3/procpu
thinknode_m9/esp32s3/procpu
ttgo_tbeam/esp32/procpu
ttgo_lora32/esp32/procpu # source-only, no published firmware
ESP32 boards require
west blobs fetch hal_espressifbefore first build.Heltec V3 console/shell use
uart0(UART serial) in ZephCore.Heltec WiFi LoRa 32 V4-R8 (
heltec_wifi_lora32_v4_r8/esp32s3/procpu): a third board in the V4 family, distinct from bothheltec_wifi_lora32_v4(the V4.2) andheltec_wifi_lora32_v43(the V4.3). The "R8" is the SoC part — ESP32-S3R8 with 8 MB octal PSRAM, where V4 and V4.3 are both S3R2 with 2 MB quad.Octal PSRAM consumes GPIO33–37, and that one fact explains every pin move on the revision:
Function V4 (V4.2) V4.3 V4-R8 PSRAM 2 MB quad 2 MB quad 8 MB octal FEM GC1109 KCT8103L KCT8103L PA control TX_EN GPIO46 CTX GPIO5 CTX GPIO5 Vext_Ctrl GPIO36 GPIO36 GPIO40 VGNSS_Ctrl GPIO34 GPIO34 GPIO42 LED GPIO35 GPIO35 GPIO46 GNSS_RST GPIO42 GPIO42 removed ADC_Ctrl GPIO37 GPIO37 removed
PA_CTXon GPIO5 is new relative to V4, which has no CTX at all — its GC1109 is driven by TX_EN on GPIO46 — and identical to V4.3. Note GPIO46 changes meaning across the family: FEM TX_EN on V4, the LED on V4-R8. CTX is bound aslna-bypass-gpios, nottx-enable-gpios, because it selects the receive path rather than enabling anything.Verified against the vendor pinmap at https://heltec.org/project/wifi-lora-32-v4/.
Do not flash
heltec_wifi_lora32_v4orheltec_wifi_lora32_v43to a V4-R8. Those boards declare&psram0 { size = <DT_SIZE_M(2)>; }, so PSRAM comes up as 2 MB quad on an 8 MB octal part, and they drive GPIO35/36/37 as ordinary outputs — GPIO33-37 are the octal-PSRAM pads on an S3R8. PSRAM is therefore both misconfigured and pin-contended. On top of that Vext is driven on GPIO36 instead of GPIO40, so the rail feeding the OLED and sensors never switches, and GPIO37 is driven as an ADC enable this revision does not have.Heltec Wireless Tracker (
heltec_wireless_tracker/esp32s3/procpu): V1.1 ESP32-S3-FN8 companion with SX1262, ST7735R 160x80 TFT, and UC6580 GPS.Heltec Wireless Tracker V2 (
heltec_wireless_tracker_v2/esp32s3/procpu): ESP32-S3FN8 companion with SX1262 + KCT8103L PA/FEM, ST7735R 160x80 TFT, UC6580 GNSS, battery ADC, and USB-C native serial/JTAG.ThinkNode M9 (
thinknode_m9/esp32s3/procpu): ESP32-S3 (16MB flash, 8MB PSRAM) handheld with LR1110, ST7789 320x240 TFT, CC1167Q GPS, PCF8563 RTC, and buzzer. Not yet validated on hardware — see the board README for the bring-up list. The onboard STC8H I2C keyboard, IMU/magnetometer, and SD slot are not ported. The LR1110 radio-firmware updater supports this board (west build -b thinknode_m9/esp32s3/procpu zephcore/tools/lr1110_updater).LilyGo T-Beam (
ttgo_tbeam/esp32/procpu): classic ESP32 (PICO-D4) with SX1262, AXP2101 PMU, and GNSS. Use this for the v1.2 SX1262 variant — the upstream Zephyr DTS models the SX1276 radio, which ZephCore overrides to SX1262 inboard.overlay. Console/CLI are onuart0(onboard USB-UART).TTGO LoRa32 (
ttgo_lora32/esp32/procpu): classic ESP32 (PICO-D4) with SX1276. Console/CLI onuart0.Source-only — no published firmware, and not a supported configuration. It is deliberately absent from
build.sh, the release workflow and the Mesh America catalog, so no release ever carries a binary for it. It is kept in the tree as the one exercise of the SX127x loramac-node radio path, which is old, lacks RX duty cycle and RX gain boost, and gets none of the work the native SX126x/LR11xx/LR20xx drivers do. Build it yourself if you want it; expect to maintain it yourself too.If you do build the companion, note it is DRAM-bound (~97% of
dram0_0_seg) and capped at 50 contacts / 32 queued offline messages — lower than any other companion board. The repeater has no such limit. At the 150/128 this board's config used to declare, it did not link at all. Seeboard.conffor the measured budget before raising either number.
STM32WL
lora_e5_mini
Seeed LoRa-E5 mini (
lora_e5_mini): STM32WLE5JC with the integrated SX1262-class sub-GHz radio. No BLE and no USB device — the companion protocol and the CLI both run over USART1 (bridged to USB-C by the onboard USB-UART chip). Flash over SWD/ST-Link withwest flash.
MG24 (Silicon Labs)
xiao_mg24
Requires
west blobs fetch hal_silabsand pyocd.
nRF54L
xiao_nrf54l15/nrf54l15/cpuapp
me25ls02/nrf54l15/cpuapp
Requires
--no-sysbuildflag:west build -b xiao_nrf54l15/nrf54l15/cpuapp zephcore --no-sysbuildThe nRF54L15 has no USB peripheral, so there is no UF2 or DFU path on either board — flash
zephyr.hexover SWD.me25ls02is the MinewSemi ME25LS02 module on its MX25LE02 carrier; its USB-C port is a CH340x UART bridge carrying the console, not a programming port. Untested on hardware.
Native Linux
Not west build -b boards — EXTRA_CONF_FILE presets on top of native_sim
for SBCs (Femtofox / Luckfox Pico Mini, Raspberry Pi + RAK6421 HAT). See
LINUX_NATIVE.md for build commands and wiring.