Early development
DongLoRa is a tool for building tools. It assumes familiarity with LoRa, serial protocols, and programming. APIs may change. If you're looking for a ready-made mesh device, check out Meshtastic or MeshCore.
DongLoRa
/ˈdɒŋ.ɡəl.ɔːr.ə/ — dongle + LoRa
Protocol-agnostic LoRa over USB.
Plug in. Talk radio.
Flash Your BoardWhat is it?
Flash firmware onto a LoRa board once and it becomes a dumb USB radio. It doesn't know or care what protocol you're running — it just moves bytes between the air and your computer.
Everything else — routing, encryption, display, response logic — happens in your code, in Python, Rust, or whatever you want — with the feedback loop of a scripting environment instead of a flash-and-pray embedded workflow.
Quick Start
- 1.
Flash the firmware
Use the web flasher or flash from the command line.
- 2.
Install a client library
pip install donglora
- 3.
Listen for packets
import donglora as dl ser = dl.connect() dl.send(ser, "SetConfig", config=dl.DEFAULT_CONFIG) dl.send(ser, "StartRx") while pkt := dl.recv(ser): print(f'{pkt["rssi"]:4d}dBm {pkt["snr"]:3d}dB {pkt["payload"].hex()}')import donglora as dl ser = dl.connect() dl.send(ser, "SetConfig", config=dl.DEFAULT_CONFIG) dl.send(ser, "StartRx") while pkt := dl.recv(ser): print(f'{pkt["rssi"]:4d}dBm {pkt["snr"]:3d}dB {pkt["payload"].hex()}')
What can you do with it?
Connect your code directly to a LoRa radio over USB — or run the multiplexer and let multiple programs share a single dongle at the same time.
your code ──► client lib ──► USB ──► DongLoRa radio your code ──► client lib ──┐ your code ──► client lib ──┼──► mux ──► USB ──► DongLoRa radio your code ──► client lib ──┘
Because the firmware is protocol-agnostic, a DongLoRa dongle works with any LoRa network — Meshtastic, MeshCore, custom protocols, or raw packets.
Interact with mesh networks
Send and receive packets on Meshtastic, MeshCore, or any other LoRa protocol from a laptop, desktop, or Raspberry Pi. Write scripts that interact with mesh traffic programmatically.
Build bots and automations
Write a chatbot that receives messages over LoRa and responds via an LLM. Build an alert system. Log every packet on a frequency. All from Python or Rust on a server.
Bridge distant networks
The bridge application connects to local LoRa traffic, encrypts it, and relays it to other bridges over the internet. Two bridges in different cities extend a mesh network's range by thousands of miles.
Prototype without embedded development
Test a LoRa idea in Python in an afternoon. Change frequency, bandwidth, spreading factor — all from your code. Iterate fast. No cross-compilation, no JTAG, no boot loops.
Analyze RF traffic
Sniff, decode, and log every packet on a frequency. Useful for debugging mesh deployments, understanding channel utilization, or reverse-engineering protocols.
Deploy headless gateways
A Raspberry Pi with a dongle plugged in is a LoRa gateway. Add the mux and you can run multiple services on a single radio — a mesh node, a packet logger, and a bridge, all at once.
Supported Boards
ELECROW ThinkNode-M2
ESP32-S3 · SX1262
Web Flash
Heltec Mesh Node T114
nRF52840 · SX1262
UF2 Download
Heltec V3 (UART) — stock
ESP32-S3 · SX1262
Web Flash
Heltec V3 (USB CDC) — modded
ESP32-S3 · SX1262
Web Flash
Heltec V4
ESP32-S3 · SX1262
Web Flash
LilyGo T-Beam (classic)
ESP32 · SX1276
Web Flash
LilyGo T-Beam S3 Supreme
ESP32-S3 · SX1262
Web Flash
RAK4631 WisBlock
nRF52840 · SX1262
UF2 Download
Waveshare RP2040-LoRa
RP2040 · SX1262
UF2 Download
Wio Tracker L1
nRF52840 · SX1262
UF2 Download
Repositories
Firmware
The code that runs on the LoRa board itself. Owns the radio hardware, speaks USB.
Client Libraries
Run on your computer. Handle USB discovery, protocol framing, and encoding so you just call send() and receive().
Rust client library — donglora-client on crates.io
Python client library — donglora on PyPI
Multiplexer
Optional daemon that lets multiple programs share a single dongle at the same time.
Applications
Real programs built on the layers above. Examples of what you can do with a DongLoRa dongle.