This repository has been archived on 2026-08-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
swaits ff8762b9e4 fix: use stored RX config for post-TX restart, not per-packet TX override
If Transmit included a per-packet config with different bandwidth/SF,
the radio would silently switch parameters when resuming RX. Now uses
state.config (the config from SetConfig) for post-TX RX restart.
2026-03-29 22:22:43 -06:00

DongLoRa

Transparent LoRa radio over USB. Plug in a supported board, talk LoRa from your host. The firmware is a dumb pipe — it exposes clean LoRa parameters (frequency, bandwidth, spreading factor, coding rate, TX power) and gets out of the way. No mesh logic, no protocol opinions, no config files.

Quick Start

  1. Get a supported board
  2. Install toolchain (see Building)
  3. Build and flash: just flash heltec_v4
  4. Run an example: uv run examples/simple_rx.py
  5. See packets

Supported Boards

Board MCU Radio Display
Heltec V3 ESP32-S3 SX1262 SSD1306 OLED
Heltec V4 ESP32-S3 SX1262 SSD1315 OLED
RAK WisBlock 4631 nRF52840 SX1262 SSD1306 OLED (optional)

Protocol

DongLoRa speaks a binary protocol over USB CDC-ACM: COBS-framed, fixed-size little-endian messages. 8 commands, 6 response types — everything you need to configure the radio, transmit, and receive.

See docs/PROTOCOL.md for the complete wire format specification with worked examples.

Examples

All examples use uv for dependency management:

Script Description
simple_rx.py Configure radio, receive and print packets
simple_tx.py Transmit a single packet
ping_pong.py Two-dongle demo (--role tx / --role rx)
meshcore/ Full MeshCore packet decoder (advanced example)

Building

Requires just and Rust.

just build-all          # build firmware for all boards (skips unavailable toolchains)
just build heltec_v4    # build a specific board
just check-all          # compile-check only (no firmware output)
just flash heltec_v4    # build + flash
just clippy heltec_v4   # lint

Xtensa boards (Heltec V3/V4)

Requires the ESP toolchain:

cargo install espup
espup install --toolchain-version 1.82.0.3

ARM boards (RAK 4631)

Stock Rust stable. Targets are installed automatically.

Board Roadmap

Next Up

Board MCU Radio
Heltec V2 ESP32 SX1276
Heltec Wireless Tracker ESP32-S3 SX1262
Heltec Vision Master E213/E290 ESP32-S3 SX1262
LilyGo T-Beam (SX1262) ESP32 SX1262
LilyGo T-Beam Supreme ESP32-S3 SX1262
LilyGo T-Echo nRF52840 SX1262
LilyGo T3 S3 ESP32-S3 SX1262
Seeed Studio Xiao nRF52 WIO nRF52840 SX1262

Future

Board MCU Radio
Elecrow ThinkNode M1-M6 various various
Heltec Wireless Paper / MeshPocket / T114 various SX1262
LilyGo T-Deck / T-Echo Lite / LoRa32 various various
RAK WisBlock 3112 / WisMesh variants various SX1262
RPI Pico 2040 + WaveShare SX1262 RP2040 SX1262
Seeed Studio SenseCAP / Xiao variants various SX1262

Contributing

See CONTRIBUTING.md.

License

MIT — Stephen Waits

S
Description
No description provided
Readme
40 MiB
0 Stars 1 Watchers 0 Forks