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.
What to buy first
Section titled “What to buy first”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.
Supported boards
Section titled “Supported boards”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 onat 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.
Linux: no radio required
Section titled “Linux: no radio required”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.