Hardware Guide

What You Need to Run MeshDash

MeshDash runs on modest hardware, but the radio connection and Python dependencies have real minimums. Here's what works, what struggles, and what to avoid.

Server Requirements

MeshDash is a Python application (FastAPI + SQLite + asyncio). It's not a lightweight script — the dependency tree includes 100+ packages including cryptography, Pillow, Twisted, and the full meshtastic library. Choose your server hardware accordingly.

Resource Minimum Recommended Notes
CPU 1 core ARMv7+
or x86-64
2+ cores Single-core ARM6 (Pi Zero W) will choke on pip install and struggle under load. ARMv7 (Pi 2B+) or better.
RAM 512 MB 1 GB+ pip install with --no-cache-dir needs ~400 MB free during compilation. After install, idle usage is ~80-150 MB. 512 MB total RAM works but leaves no headroom for analytics or packet bursts.
Storage 2 GB free 4 GB+ Python venv + dependencies is ~800 MB. SQLite databases grow with packet volume — a busy node can add 50-200 MB/month.
OS Raspberry Pi OS
Ubuntu 20.04+
Debian 11+
Debian 12
Ubuntu 22.04
Must support Python 3.9+. WSL2 on Windows works for development. No macOS support.
Python 3.9 3.11+ 3.9 is the floor. 3.11+ gives significant asyncio performance gains. 3.12 tested and recommended.
Network WiFi or Ethernet
to radio
Dedicated Ethernet TCP connections to radio need stable networking. WiFi works but Ethernet eliminates a variable.

Tested Server Hardware

These are real deployments, not theoretical. "Works" means it runs MeshDash reliably with a connected radio, not that it compiles fast.

Raspberry Pi 5

4 GB RAM · ARM Cortex-A76
Excellent

The sweet spot. More than enough CPU and RAM. Installs in under 10 minutes. Handles 16 radio slots without breaking a sweat.

Raspberry Pi 4 B

2-8 GB RAM · ARM Cortex-A72
Great

Runs MeshDash comfortably. 2 GB model works; 4 GB+ recommended if running other services. pip install takes 5-10 min.

Raspberry Pi 3 B+

1 GB RAM · ARM Cortex-A53
Good

Works well for a single radio. Tight on RAM during pip install. Do not run heavy analytics alongside.

Raspberry Pi Zero 2 W

512 MB RAM · ARM Cortex-A53
Usable

The bare minimum. pip install takes 15-20 min. Works for single-radio monitoring. Expect sluggish UI under load. Not recommended for production.

Raspberry Pi Zero W (v1)

512 MB RAM · ARM1176
Not viable

Single-core ARM6 is too slow for Python 3.9+ and the dependency tree. The pip install alone can exhaust RAM and fail. Do not use.

x86 Linux (Ubuntu / Debian)

Any modern x86_64
Excellent

VPS, desktop, or NUC. Fastest install experience. No ARM compilation overhead. Recommended if you have x86 hardware.

WSL2 on Windows 10/11

Uses host RAM/CPU
Good for testing

Runs identically to native Linux. USB passthrough for serial requires WSL2 USB support (Windows 11 recommended). TCP/WiFi radio works without USB.

Pi Zero W (v1) is not supported

The original Pi Zero W has a single ARM1176 core at 1 GHz and 512 MB RAM. Python 3.9+ with MeshDash's dependency tree (cryptography, Pillow, Twisted, protobuf) will struggle to install and run. Compilation can exhaust RAM and fail. The Pi Zero 2 W (quad-core A53) is the absolute floor — but even that is tight. If you're buying hardware, start at Pi 3 B+ or above.

Tested Meshtastic Radios

MeshDash works with any Meshtastic device running firmware 2.3+. The radios below are specifically tested. If your device runs Meshtastic firmware, it will connect — these are the ones we've verified. You can also connect via MQTT without owning a radio, or via MeshCore — see Connection Methods below.

LILYGO T-Beam v1.1
CP2102 USB · ESP32 · GPS + LoRa
USB Serial, TCP, BLE, WebSerial
Most popular. Built-in GPS makes it a natural base station.
LILYGO T-Beam S3
Native USB · ESP32-S3 · GPS + LoRa
USB Serial, TCP, BLE, WebSerial
USB-C. Native USB is faster and more stable than CP2102.
Heltec WiFi LoRa v3
CH340 USB · ESP32 · LoRa (no GPS built-in)
USB Serial, TCP, BLE, WebSerial
Compact with built-in OLED. No GPS — MeshDash still shows positions from other nodes.
LILYGO T-LoRa32 v2
CP2102 USB · ESP32 · LoRa (no GPS built-in)
USB Serial, TCP, BLE, WebSerial
Good value. No GPS. Well-documented community firmware.
Seeed XIAO S3
Native USB · ESP32-S3 · LoRa (no GPS built-in)
USB Serial, TCP, BLE, WebSerial
Smallest form factor. USB-C. Great for space-constrained installs.
RAK WisBlock 4631
USB-C · nRF52840 · LoRa + BLE focused
BLE primary, TCP, USB Serial
Low power. BLE is the primary interface — requires a Bluetooth adapter on the server.
T-Deck
Native USB · ESP32-S3 · Keyboard + screen
USB Serial, TCP, BLE, WebSerial
Unique keyboard+screen form factor. Works as both node and portable terminal.
Firmware requirement: Meshtastic firmware 2.3 or later. Older firmware versions may connect but will have missing telemetry fields or broken packet structures.

Connection Methods

How MeshDash talks to your radio — or the mesh directly. Six connection methods are available. USB Serial is the most reliable for permanent installs; MQTT and MeshCore let you monitor without any radio hardware at all.

USB Serial

Most Reliable

Plug the radio into your server via USB. Auto-detects the port. Default 115200 baud. Requires dialout group membership. Works on Pi, Linux, and WSL2 (with USB passthrough).

Add user to dialout group: sudo usermod -aG dialout $USER

TCP / WiFi

Best for Remote

Connect over the network. Radio must have WiFi enabled (configured via the Meshtastic app). Default port 4403. No USB passthrough needed.

Set MESHTASTIC_CONNECTION_TYPE=TCP and point MESHTASTIC_HOST to the radio IP.

MQTT

Stable

Connect directly to the Meshtastic MQTT servers (mqtt.meshtastic.org) without owning a physical radio. Observe the mesh, read messages, and view telemetry from any node broadcasting to MQTT. Works as an observer — send requires a node identity. Region and channel filters supported. Under active development but stable for receiving.

Set MESHTASTIC_CONNECTION_TYPE=MQTT, configure MQTT_BROKER, MQTT_REGION, and MQTT_CHANNEL.

MeshCore

Beta

Alternative protocol via the meshcore Python library. Connects to MeshCore nodes over Serial, TCP, or BLE. Translates MeshCore events into MeshDash packet format. Provides send/receive, node discovery, and channel messaging. Still in beta — may have edge cases.

Set MESHTASTIC_CONNECTION_TYPE=MESHCORE, configure MESHCORE_TRANSPORT (serial/tcp/ble) and transport-specific settings.

Bluetooth BLE

Experimental

Requires a Bluetooth adapter on the server. Pairing can be finicky on headless Pi installs. Scan with meshtastic --ble-scan. Less stable than Serial or TCP.

Set MESHTASTIC_CONNECTION_TYPE=BLE and MESHTASTIC_BLE_MAC.

Web Serial

Browser Only

The browser holds the USB connection, not the server. Only Chrome and Edge (89+) support the Web Serial API. Firefox and Safari do not. Requires HTTPS or localhost. Configured from the dashboard settings, not the setup wizard.

No config file changes needed. Click the USB icon in the MeshDash topbar.

Multi-Radio Base Stations

MeshDash supports up to 16 additional radio slots (beyond the primary node_0). Each slot gets its own isolated database, SSE stream, and configuration. This is designed for operators running base stations with multiple bands or roles.

Recommended Base Station Hardware

  • Raspberry Pi 5 (4 GB) or x86 server
  • 4 GB+ RAM for 8+ radios
  • Powered USB hub (7+ ports)
  • Each radio on a dedicated TCP connection (recommended)
  • Ethernet backhaul for the server

Common Pitfalls

  • Do not use Pi 3 or below for 4+ radios
  • Do not daisy-chain USB without a powered hub
  • Do not mix Serial auto-detect with multi-radio — assign ports explicitly
  • Do not run more radios than your CPU can handle per slot

Which Connection Type Should You Use?

◈ HAVE A RADIO?
├─ USB attached?SERIAL (USB Serial) — most reliable, lowest latency
├─ On WiFi / LAN?TCP — assign static IP, default port 4403
├─ Bluetooth nearby?BLE — experimental, needs server Bluetooth adapter
├─ MeshCore protocol?MESHCORE — alternative protocol via serial/TCP/BLE
└─ Radio near browser, not server?WEBSERIAL — Chrome/Edge only, browser owns USB
◈ NO RADIO?
└─ Observe the wider meshMQTT — connects to mqtt.meshtastic.org, no hardware needed
Mix & match — MeshDash supports up to 16 simultaneous slots with different connection types. Run Serial for your base station and MQTT for regional awareness — all from one dashboard.

Ready to install?

Pick your hardware, grab a radio, and have MeshDash running in under 5 minutes.

Install MeshDash Setup Wizard