Skip to content

Hardware

LoRa Relay Chat’s firmware targets ESP32-S3 and nRF52840 boards with the Semtech SX1262 LoRa radio. The full porting contract (pin maps, RF-switch rules, TCXO voltages — the stuff that destroys hardware when wrong) lives in the hardware doc; this page is the buying guide.

Seeed XIAO ESP32S3 + Wio-SX1262 — the reference target. Thumb-sized, inexpensive, 8 MB PSRAM + 8 MB flash, and the combination every feature is validated on first. Sold by Seeed Studio (get the XIAO ESP32S3 and the Wio-SX1262 module; Seeed also sells them as a kit). Add a 915/868 MHz antenna for your region.

Status is stated exactly; “verified” means flashed and exercised on real hardware by this project.

Board Firmware env(s) Radio Status
Seeed XIAO ESP32S3 + Wio-SX1262 xiao_wio_sx1262 (client/hotspot), xiao_wio_uplink_router (router), xiao_wio_usbnet (USB-network) SX1262 Verified on hardware — incl. over-the-air registration and bidirectional chat between two radios, WiFi AP/STA serving the IRC gateway, and the CDC-ECM USB-network build (macOS-verified)
Heltec WiFi LoRa 32 V3 heltec_v3 SX1262 Verified on hardware — built-in 128×64 OLED shows a five-page status carousel; CP2102 USB-serial (auto-reset flashing)
Heltec WiFi LoRa 32 V4 heltec_v4 SX1262 Same radio wiring as V3, confirmed over the air; native-USB flashing path configured (1200-bps touch after first flash)
RAK4631 (nRF52840 + SX1262) rak4631 SX1262 Compiles; untested on hardware. No PSRAM in this config — plan it as a client, not a router, until it’s been benched. Not flashable from the web flasher (nRF52 uses the Adafruit DFU path, not esptool)

The three XIAO envs are one board with different build profiles — hotspot, uplink-router, and USB-network — not three purchases.

The RF safety rules (read before powering anything)

Section titled “The RF safety rules (read before powering anything)”
  • Antenna first, always. Transmitting without an antenna can damage the radio’s PA. The firmware boots receive-only and stays that way until an operator runs tx on at the console — which itself refuses until a regulatory region is set. These defaults are LRC policy, not suggestions.
  • Region compliance is enforced in code. Once a region is set, an airtime ledger enforces its duty-cycle/dwell limits on every transmit decision, and power accounting distinguishes EIRP from ERP including your antenna’s gain. See the radio doc.
  • New boards need a variant header, which must state its RF-switch wiring explicitly — an unstated RF switch is how PAs die. Porting guide: Hardware & boards.

A Linux or macOS machine (a Raspberry Pi works fine) runs lrcd, the native daemon — a full router federating over TCP, serving IRC on :6667, a telnet TUI on :2323, and metrics on :8462. A radio HAT driver for Linux (spidev) is on the roadmap but not built; today a Linux box is a backbone node, not a radio edge. See the quickstart.