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.
Files
donglora/CHANGELOG.md
T
swaits 8066f5135e release: firmware v0.2.0
Major architecture reorganization, Wio Tracker L1 support, LED blink
on packet activity, native USB for Heltec V3 (hardware mod required).
See CHANGELOG.md for full details.
2026-04-07 12:46:58 -06:00

3.3 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.2.0] - 2026-04-07

Added

  • Wio Tracker L1 board support (nRF52840 + SX1262, SH1106 OLED)
  • LED blink on packet activity: brief flash on RX and TX when display is on
    • RX brightness scales with SNR (stronger signal = brighter)
    • Works on all boards with a user LED (Heltec V3/V4, Wio Tracker)
  • Native USB CDC-ACM support for Heltec V3 (requires hardware mod: solder R29/R3)
  • heltec_v3_uart feature for stock (unmodified) V3 boards via CP2102 bridge
  • RgbLed trait and SimpleLed driver for GPIO-based LEDs
  • LoRaBoard trait with full associated types (RadioParts, CommParts, DisplayParts, DisplayDriver, LedDriver) and BoardParts<R, C, D, L> struct

Changed

  • Major firmware architecture reorganization:
    • hal/ module for MCU-specific primitives (ESP32-S3, nRF52840)
    • driver/ module for hardware peripheral drivers (SH1106, SimpleLed)
    • host/ module for unified USB/UART communication with internal cfg dispatch
    • board/ contains only board definitions — no MCU helpers or drivers mixed in
    • Board files are declarative wiring diagrams calling hal primitives
  • run() function has zero board-specific conditional compilation
  • Display init moved to board layer (create_display()) — display task has no cfg
  • Flattened radio/ and display/ directories (no single-file directories)
  • build.rs auto-discovers boards by content (implements LoRaBoard) and helper modules by use super:: imports — no exclusion lists
  • check and clippy commands now use --release profile
  • Deduplicated USB/UART protocol framing (shared CobsDecoder + route_command)
  • Removed ErrorCode::CrcError (SX1262 silently drops bad-CRC packets)

Fixed

  • Display stuck on splash screen for UART boards (disconnected flag started true)

[0.1.0] - 2026-03-15

Added

  • Transparent LoRa radio over USB CDC-ACM (VID 1209, PID 5741)
  • COBS-framed fixed-size LE binary protocol (9 commands, 7 responses)
  • Radio configuration: frequency, bandwidth, spreading factor, coding rate, TX power
  • Continuous RX mode with RSSI/SNR per packet
  • Single-shot TX with optional per-packet config override
  • SSD1306 OLED display support with status dashboard
    • Radio state, frequency, modulation parameters
    • Packet counters (RX/TX)
    • RSSI sparkline (1-minute history, TX shown as dotted bars)
    • Combined splash/waiting screen on disconnect
  • Auto-detect USB host connect/disconnect via DTR
  • Config validation against per-board hardware limits
  • TX_POWER_MAX sentinel (-128): auto-use the board's maximum TX power
  • Board support: Heltec V3, Heltec V4, RAK WisBlock 4631
  • Python host library (clients/python/) with pip install and donglora-mux CLI
  • USB multiplexer for sharing one dongle with multiple applications
  • Two-way LoRa bridge over TCP (examples/lora_bridge.py)

Technical

  • Embassy async runtime (no threads, CPU sleeps when idle)
  • Zero-config: boots and waits for host commands
  • Protocol-agnostic: firmware has no opinion about what you transmit
  • Tasks never panic: all errors reported to host or logged
  • Board abstraction: one .rs file + one Cargo feature per board