Skip to content

Quickstart

Two ways in. The laptop path needs no hardware at all and takes about two minutes; the radio path needs a supported board (see Hardware).

Path A — no hardware: run lrcd on your machine

Section titled “Path A — no hardware: run lrcd on your machine”

lrcd is the native Linux/macOS daemon: a full LoRa Relay Chat router that speaks TCP federation instead of (or alongside) a radio. Build it and point your IRC client at it:

Terminal window
git clone https://github.com/REPLACE_ME_OWNER/lrc && cd lrc
cmake -S . -B build && cmake --build build -j
./build/lrc_tests # the whole host suite, green
./build/lrcd --name node1 --rtr 1 # IRC on :6667, TUI on :2323

Then, in any IRC client:

/server 127.0.0.1 6667
/nick alice
/join #pizza

No client? telnet 127.0.0.1 2323 gets you the daemon’s own ircII-style TUI — the same engine, served over telnet.

Two daemons federate with --peer host:port; a channel joined on both is one channel, sequence-merged. That’s the backbone the radio side attaches to.

  1. Get a board. The reference target is the Seeed XIAO ESP32S3 + Wio-SX1262 combo; the Heltec WiFi LoRa 32 V3 is also verified on hardware. Details and honest caveats: Hardware.

  2. Flash it. Use the web flasher (Chrome/Edge), or from a source checkout:

    Terminal window
    cd firmware
    pio run -e xiao_wio_sx1262 -t upload
    pio device monitor # 'help' lists console commands

    First flash on a XIAO-class board? Read the BOOT-button note first — the ESP32-S3’s native USB makes the very first flash slightly special.

  3. Connect your client. The firmware serves the IRC gateway over its WiFi AP (stock client → 192.168.4.1:6667) or, on the USB-network build, straight over the USB cable (10.97.83.1:6667 after DHCP).

  4. Stay receive-only, or opt into TX. The firmware boots receive-only, always — it will not transmit until an operator runs tx on at the console, and tx on itself refuses until a regulatory region is explicitly set (region <name>). A freshly flashed board can never transmit under an unspecified regulatory regime, and never without a human confirming an antenna is attached. This is a safety property, not a limitation — see Radio and Hardware.

You know it worked when /join returns a names list and scrollback replays — channel history is sequence-backfilled on join, which is itself a demo of the recovery machinery. From there, the user guide covers everything you can do from inside the client, including talking to the *lrc service user.