# Board Comparison

This page is meant to help you choose a board, not just list every technical detail.

If you only want a quick answer:

- for a roof-mounted or set-and-forget MQTT repeater, start with `heltec_v4`, `heltec_v4_tft`, `Station_G2`, or `T_Beam_S3_Supreme_SX1262`
- for an app-first Wi-Fi companion, headless boards are fine and often simpler
- if you want an onboard screen people will actually use, prefer TFT boards
- if you want a low-power status screen, prefer e-paper boards

The tables below are built from the repo's PlatformIO board metadata and variant build flags.

- `Target` is the short board name used in this comparison page. Release filenames and local build commands still use the full env names such as `heltec_v4_repeater_mqtt`.
- `MCU` shows the chip family only. Actual runtime clock can vary by env and board configuration.
- `RAM` is the MCU's built-in RAM.
- `PSRAM` is extra memory on some boards. More PSRAM usually means more headroom for UI, MQTT, and future features.
- `GPS` uses `✅` when present and is blank when absent.
- `SD` uses `✅` when the board is currently known to support the SD-backed archive path in EastMesh, `🧪` when the hardware likely supports TF/microSD but the board-specific integration still needs validation, and is blank when there is no current SD/archive support note.

## Start Here

- Pick an `ESP32-S3` board with `16MB` flash and PSRAM if you want strong overall headroom for MQTT plus UI: `heltec_v4_tft`, `heltec_v4`, `Station_G2`, `LilyGo_TBeam_1W`.
- Pick a TFT board if this will be used as a human-facing companion or field node: `heltec_v4_tft`, `heltec_tracker_v2`, `LilyGo_TDeck`, `Heltec_T190`.
- Pick e-paper if you want a status screen with lower idle draw and less frequent refresh: `Heltec_E213`, `Heltec_E290`, `Heltec_Wireless_Paper`, `ThinkNode_M5`.
- Pick a headless board if this is mainly a fixed MQTT gateway and screen space is not useful: `RAK_3112`, `Generic_E22`, `Meshimi`, `Xiao_C6`.
- Pick a headless Wi-Fi companion if the phone app will be the primary UI anyway: `RAK_3112_companion_radio_wifi`, `Xiao_S3_WIO_companion_radio_wifi`, `Station_G2_companion_radio_wifi`.
- Pick a GPS-capable board if location-aware/mobile use matters: the T-Beam family, `heltec_tracker_v2`, `Heltec_v3`, `heltec_v4`, `Station_G2`, `ThinkNode_M5`.
- If you want the most conservative, older radio family choices, the `SX1276` boards are `LilyGo_TLora_V2_1_1_6`, `Tbeam_SX1276`, and `Heltec_v2`.

## Additional Signals

If you are deciding between otherwise similar boards, these target-level settings often matter more than flash alone.

- `CPU cfg` is the runtime clock MeshCore sets for that target. `default` means MeshCore does not override the board's default clock.
- `TX cfg` is MeshCore's configured `LORA_TX_POWER`, not guaranteed antenna output. Boards with a PA or RF front-end may radiate much more than the configured value suggests.
- `Power` is how the target exposes power in the repo: `ADC batt`, `PMU`, `custom 2S`, `fixed/ext`, or `none`.
- `Extras` lists notable RF or peripheral extras exposed by the target, such as `PA/FEM`, `RF switch`, `BME280`, `NeoPixel`, or `ext ant`.

| Target                   | CPU cfg | TX cfg       | Power     | Extras    |
| ------------------------ | ------- | ------------ | --------- | --------- |
| Ebyte_EoRa-S3            | default | 22 dBm cfg   | ADC batt  |           |
| Generic_E22_sx1262       | default | 22 dBm cfg   | ADC batt  | RF switch |
| Generic_E22_sx1268       | default | 22 dBm cfg   | ADC batt  | RF switch |
| Heltec_E213              | default | 22 dBm cfg   | ADC batt  |           |
| Heltec_E290              | default | 22 dBm cfg   | ADC batt  |           |
| Heltec_T190              | default | 22 dBm cfg   | ADC batt  |           |
| heltec_tracker_v2        | 160 MHz | 9 dBm cfg\*  | ADC batt  | PA/FEM    |
| Heltec_v2                | default | 20 dBm cfg   | ADC batt  |           |
| Heltec_v3                | 80 MHz  | 22 dBm cfg   | ADC batt  |           |
| heltec_v4                | 80 MHz  | 10 dBm cfg\* | ADC batt  | PA/FEM    |
| heltec_v4_tft            | 80 MHz  | 10 dBm cfg\* | ADC batt  | PA/FEM    |
| Heltec_Wireless_Paper    | default | 22 dBm cfg   | ADC batt  |           |
| Heltec_Wireless_Tracker  | 80 MHz  | 22 dBm cfg   | none      |           |
| Heltec_WSL3              | 80 MHz  | 22 dBm cfg   | ADC batt  |           |
| LilyGo_T3S3_sx1262       | default | 22 dBm cfg   | ADC batt  |           |
| LilyGo_T3S3_sx1276       | default | 20 dBm cfg   | ADC batt  | RF switch |
| LilyGo_TBeam_1W          | default | 22 dBm cfg\* | custom 2S | PA/FEM    |
| LilyGo_TDeck             | default | 22 dBm cfg   | ADC batt  |           |
| LilyGo_Tlora_C6          | default | 22 dBm cfg   | none      | RF switch |
| LilyGo_TLora_V2_1_1_6    | default | 20 dBm cfg   | ADC batt  |           |
| M5Stack_Unit_C6L         | default | 22 dBm cfg   | none      | RF switch |
| Meshadventurer_sx1262    | default | 22 dBm cfg   | ADC batt  | RF switch |
| Meshadventurer_sx1268    | default | 22 dBm cfg   | ADC batt  | RF switch |
| Meshimi                  | default | 22 dBm cfg   | none      | ext ant   |
| nibble_screen_connect    | default | 22 dBm cfg   | none      | NeoPixel  |
| RAK_3112                 | 80 MHz  | 22 dBm cfg   | ADC batt  |           |
| Station_G2               | default | 7 dBm cfg\*  | fixed/ext | PA/FEM    |
| Station_G2_logging       | default | 7 dBm cfg\*  | fixed/ext | PA/FEM    |
| T_Beam_S3_Supreme_SX1262 | default | 22 dBm cfg   | PMU       | BME280    |
| Tbeam_SX1262             | default | 22 dBm cfg   | PMU       |           |
| Tbeam_SX1276             | default | 20 dBm cfg   | PMU       |           |
| ThinkNode_M2             | default | 22 dBm cfg   | ADC batt  |           |
| ThinkNode_M5             | default | 22 dBm cfg   | ADC batt  |           |
| WHY2025_badge            | default | 22 dBm cfg   | none      |           |
| Xiao_C6                  | default | 22 dBm cfg   | none      | RF switch |
| Xiao_S3_WIO              | default | 22 dBm cfg   | none      | RF switch |

\* These targets use a PA or RF front-end, so effective output can be much higher than the configured `LORA_TX_POWER`.

## `repeater_mqtt` Boards

This table includes all repeater MQTT targets currently defined in `variants/eastmesh_mqtt/platformio.ini`.

| Target                   | MCU     | RAM    | PSRAM | Flash | LoRa   | Display         | GPS | SD  |
| ------------------------ | ------- | ------ | ----- | ----- | ------ | --------------- | --- | --- |
| Ebyte_EoRa-S3            | ESP32S3 | 512 KB | 2 MB  | 4 MB  | SX1262 | OLED (SSD1306)  |     |     |
| Generic_E22_sx1262       | ESP32   | 520 KB | No    | 4 MB  | SX1262 | None            |     |     |
| Generic_E22_sx1268       | ESP32   | 520 KB | No    | 4 MB  | SX1268 | None            |     |     |
| Heltec_E213              | ESP32S3 | 512 KB | 8 MB  | 16 MB | SX1262 | E-paper (2.13") |     |     |
| Heltec_E290              | ESP32S3 | 512 KB | 8 MB  | 16 MB | SX1262 | E-paper (2.9")  |     |     |
| Heltec_T190              | ESP32S3 | 512 KB | 8 MB  | 16 MB | SX1262 | TFT (ST7789)    |     |     |
| heltec_tracker_v2        | ESP32S3 | 512 KB | No    | 8 MB  | SX1262 | TFT (ST7735)    | ✅  |     |
| Heltec_v2                | ESP32   | 520 KB | No    | 8 MB  | SX1276 | OLED (SSD1306)  |     |     |
| Heltec_v3                | ESP32S3 | 512 KB | No    | 8 MB  | SX1262 | OLED (SSD1306)  | ✅  |     |
| heltec_v4                | ESP32S3 | 512 KB | 2 MB  | 16 MB | SX1262 | OLED (SSD1306)  | ✅  |     |
| heltec_v4_tft            | ESP32S3 | 512 KB | 2 MB  | 16 MB | SX1262 | TFT (ST7789)    | ✅  |     |
| Heltec_Wireless_Paper    | ESP32S3 | 512 KB | No    | 8 MB  | SX1262 | E-paper (2.13") |     |     |
| Heltec_Wireless_Tracker  | ESP32S3 | 512 KB | No    | 8 MB  | SX1262 | TFT (ST7735)    | ✅  |     |
| Heltec_WSL3              | ESP32S3 | 512 KB | No    | 8 MB  | SX1262 | None            | ✅  |     |
| LilyGo_T3S3_sx1262       | ESP32S3 | 512 KB | 2 MB  | 4 MB  | SX1262 | OLED (SSD1306)  |     | 🧪  |
| LilyGo_T3S3_sx1276       | ESP32S3 | 512 KB | 2 MB  | 4 MB  | SX1276 | OLED (SSD1306)  |     | 🧪  |
| LilyGo_TBeam_1W          | ESP32S3 | 512 KB | 8 MB  | 16 MB | SX1262 | OLED (SH1106)   | ✅  | ✅  |
| LilyGo_TDeck             | ESP32S3 | 512 KB | No    | 16 MB | SX1262 | TFT (ST7789)    | ✅  | 🧪  |
| LilyGo_Tlora_C6          | ESP32C6 | 512 KB | No    | 4 MB  | SX1262 | None            |     |     |
| M5Stack_Unit_C6L         | ESP32C6 | 512 KB | No    | 4 MB  | SX1262 | None            | ✅  |     |
| Meshadventurer_sx1262    | ESP32   | 520 KB | No    | 4 MB  | SX1262 | OLED (SSD1306)  | ✅  |     |
| Meshadventurer_sx1268    | ESP32   | 520 KB | No    | 4 MB  | SX1268 | OLED (SSD1306)  | ✅  |     |
| Meshimi                  | ESP32C6 | 512 KB | No    | 4 MB  | SX1262 | None            |     |     |
| nibble_screen_connect    | ESP32S3 | 512 KB | No    | 4 MB  | SX1262 | OLED (SSD1306)  |     |     |
| RAK_3112                 | ESP32S3 | 512 KB | No    | 8 MB  | SX1262 | None            | ✅  |     |
| Station_G2               | ESP32S3 | 512 KB | 8 MB  | 16 MB | SX1262 | OLED (SH1106)   | ✅  |     |
| Station_G2_logging       | ESP32S3 | 512 KB | 8 MB  | 16 MB | SX1262 | OLED (SH1106)   | ✅  |     |
| T_Beam_S3_Supreme_SX1262 | ESP32S3 | 512 KB | 8 MB  | 8 MB  | SX1262 | OLED (SH1106)   | ✅  | ✅  |
| Tbeam_SX1262             | ESP32   | 520 KB | No    | 4 MB  | SX1262 | OLED (SSD1306)  | ✅  |     |
| Tbeam_SX1276             | ESP32   | 520 KB | No    | 4 MB  | SX1276 | OLED (SSD1306)  | ✅  |     |
| ThinkNode_M2             | ESP32S3 | 512 KB | No    | 4 MB  | SX1262 | OLED (SH1106)   |     |     |
| ThinkNode_M5             | ESP32S3 | 512 KB | No    | 4 MB  | SX1262 | E-paper (GxEPD) | ✅  |     |
| WHY2025_badge            | ESP32C6 | 512 KB | No    | 4 MB  | SX1262 | None            |     |     |
| Xiao_C6                  | ESP32C6 | 512 KB | No    | 4 MB  | SX1262 | None            |     |     |
| Xiao_S3_WIO              | ESP32S3 | 512 KB | No    | 8 MB  | SX1262 | None            | ✅  |     |

SD notes:

- `✅` means the board is currently known to work with the SD-backed archive path in EastMesh.
- `🧪` means the board hardware likely supports TF/microSD, but the EastMesh board-specific integration still needs validation before it should be treated as supported.
- For the current stats archive, a `4 GB` `FAT32` microSD card is more than sufficient. Larger cards are also supported.

## `companion_radio_wifi` Boards With A Display

These are the Wi-Fi companion targets that have a display configured for local status, setup help, or occasional direct interaction.

| Target                   | MCU     | RAM    | PSRAM | Flash | LoRa   | Display         | GPS |
| ------------------------ | ------- | ------ | ----- | ----- | ------ | --------------- | --- |
| Heltec_v2                | ESP32   | 520 KB | No    | 8 MB  | SX1276 | OLED (SSD1306)  |     |
| Heltec_v3                | ESP32S3 | 512 KB | No    | 8 MB  | SX1262 | OLED (SSD1306)  | ✅  |
| heltec_tracker_v2        | ESP32S3 | 512 KB | No    | 8MB   | SX1262 | TFT (ST7735)    | ✅  |
| heltec_v4                | ESP32S3 | 512 KB | 2 MB  | 16MB  | SX1262 | OLED (SSD1306)  | ✅  |
| heltec_v4_tft            | ESP32S3 | 512 KB | 2 MB  | 16MB  | SX1262 | TFT (ST7789)    | ✅  |
| LilyGo_TBeam_1W          | ESP32S3 | 512 KB | 8 MB  | 16MB  | SX1262 | OLED (SH1106)   | ✅  |
| LilyGo_TLora_V2_1_1_6    | ESP32   | 520 KB | No    | 4 MB  | SX1276 | OLED (SSD1306)  | ✅  |
| nibble_screen_connect    | ESP32S3 | 512 KB | No    | 4MB   | SX1262 | OLED (SSD1306)  |     |
| Station_G2               | ESP32S3 | 512 KB | 8 MB  | 16MB  | SX1262 | OLED (SH1106)   | ✅  |
| T_Beam_S3_Supreme_SX1262 | ESP32S3 | 512 KB | 8 MB  | 8MB   | SX1262 | OLED (SH1106)   | ✅  |
| ThinkNode_M2             | ESP32S3 | 512 KB | No    | 4MB   | SX1262 | OLED (SH1106)   |     |
| ThinkNode_M5             | ESP32S3 | 512 KB | No    | 4MB   | SX1262 | E-paper (GxEPD) | ✅  |

## `companion_radio_wifi` Headless Boards

These are the Wi-Fi companion targets that rely on the companion app as the primary interface. For many users, this is the best everyday option.

| Target      | MCU     | RAM    | PSRAM | Flash | LoRa   | GPS |
| ----------- | ------- | ------ | ----- | ----- | ------ | --- |
| Heltec_WSL3 | ESP32S3 | 512 KB | No    | 8 MB  | SX1262 | ✅  |
| RAK_3112    | ESP32S3 | 512 KB | No    | 8 MB  | SX1262 | ✅  |
| Xiao_S3_WIO | ESP32S3 | 512 KB | No    | 8 MB  | SX1262 | ✅  |

## Practical Picks

- Best all-round MQTT repeater with screen and overall headroom: `heltec_v4_repeater_mqtt`, `heltec_v4_tft_repeater_mqtt`, `Station_G2_repeater_mqtt`, `LilyGo_TBeam_1W_repeater_mqtt`.
- Best MQTT repeater if you want a simple headless install: `RAK_3112_repeater_mqtt`, `Generic_E22_sx1262_repeater_mqtt`, `Meshimi_repeater_mqtt`, `Xiao_C6_repeater_mqtt`.
- Best low-power display MQTT builds: `Heltec_E213_repeater_mqtt`, `Heltec_E290_repeater_mqtt`, `Heltec_Wireless_Paper_repeater_mqtt`, `ThinkNode_M5_Repeater_mqtt`.
- Best companion choices if you want the richest local UI: `heltec_v4_tft_companion_radio_wifi` and `heltec_tracker_v2_companion_radio_wifi`.
- Best companion choices if you want maximum memory headroom: `T_Beam_S3_Supreme_SX1262_companion_radio_wifi`, `Station_G2_companion_radio_wifi`, `LilyGo_TBeam_1W_companion_radio_wifi`.
- Best companion choices if you are happy with an app-first, mostly headless setup: `RAK_3112_companion_radio_wifi`, `Xiao_S3_WIO_companion_radio_wifi`, `Station_G2_companion_radio_wifi`.
- Best companion choices if you prefer OLED over TFT: `T_Beam_S3_Supreme_SX1262_companion_radio_wifi`, `heltec_v4_companion_radio_wifi`, `LilyGo_TBeam_1W_companion_radio_wifi`.
