DongLoRa

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 Board

What 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. 1.

    Flash the firmware

    Use the web flasher or flash from the command line.

  2. 2.

    Install a client library

    pip install donglora
  3. 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()}')

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


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().

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.