Skip to content

Releases: Guru-RF/8PswitchLORA

v1.1.0 — Status query + direct-DAC attenuator

23 Apr 23:03
@ure ure

Choose a tag to compare

⚠️ Breaking change — attenuator semantics

The att field is now the direct DAC attenuation value, not a total-including-insertion-loss value. Firmware no longer subtracts 1.5 dB before programming the chip.

att before v1.1.0 att in v1.1.0
1.5 (= 0 dB DAC) 0 (bypass) or 0.5 (DAC = 0.5 dB)
6.0 (= 4.5 dB DAC) 4.5 (DAC = 4.5 dB)
31.5 (= 30 dB DAC) 30.0 (DAC = 30 dB)

Controllers and calibration tables must be updated to pass the actual DAC value they want the chip to apply. The chip's own insertion loss is a property of the RF path and is no longer represented in the protocol field.

New — status query

Send <name>/?/? (or just <name>/?) and the switch replies with an ACK carrying its current port + attenuator state without changing anything. Useful for controller UIs and recovery after a missed ACK.

Examples:

sw0/?/?     → ACK:sw0/3/6.0   (currently: port 3, 6.0 dB attenuation)
sw0/?       → same, att field defaulted

Other

  • Log lines clearly distinguish PORT REQ: from QUERY REQ: so you can see what the switch is doing.
  • ACK format unchanged: ACK:<name>/<port>/<att>. att=0.0 in the ACK means the attenuator is bypassed.

Docs

  • PROTOCOL.md — full spec, change log, examples.
  • README.md — attenuator table + status-query section.

Install

Edit /config.txt on the LORA8PSW drive, replace contents with firmwareupdate, save, eject. The device reboots into UF2 mode — drag 8PswitchLORA-v1.1.0.uf2 onto the RPI-RP2 drive.

v1.0.1 — Persistent state across reboots

23 Apr 22:53
@ure ure

Choose a tag to compare

Changes

  • Non-volatile state: the switch now remembers its current port + attenuator setting across power loss and reboots. Last state is written to flash (EEPROM-emulated) on every change and restored at boot before LoRa comes up.
  • First boot (or when upgrading from v1.0.0 where no saved state exists yet) falls back to default_port from /config.txt, then persists it.
  • Writes are gated by a change check, so repeating the same command does not wear the flash.
  • CLI port and att commands persist too — manual changes survive reboot just like LoRa commands.

Install

Edit /config.txt on the LORA8PSW drive, replace its contents with the single word firmwareupdate, save, and eject. The device reboots into UF2 mode — drag 8PswitchLORA-v1.0.1.uf2 (attached below) onto the RPI-RP2 drive.

v1.0.0 — First C++ release

23 Apr 15:07
@ure ure

Choose a tag to compare

Highlights

  • Full rewrite from CircuitPython to Arduino C++ on PlatformIO (arduino-pico / earlephilhower core).
  • USB Mass Storage drive LORA8PSW exposes /config.txt for live editing — reboot on eject, macOS metadata auto-cleaned every boot.
  • AES-128 CBC compatibility with the LoRa868Stick controller, same shared key, same 3-byte packet header.
  • Two modem profiles: fast (SF7/BW125k/CR4-5, ~50 ms airtime) and slow (SF12/BW125k/CR4-8, +10 dB range).
  • Plaintext ACK transmitted after every successful port/attenuator change so the controller knows the command landed.
  • Serial CLI on USB-CDC: help, status, ls, cat, port, att, freq, power, rxtest, ack, formatdisk, reboot, bootloader.
  • Full protocol documented in PROTOCOL.md.

Install

  1. Hold the reset button on the PCB while plugging in USB-C — device shows up as RPI-RP2.
  2. Drag 8PswitchLORA-v1.0.0.uf2 (attached below) onto the RPI-RP2 drive.
  3. Device reboots, LORA8PSW drive appears, edit config.txt, eject, done.

Future firmware updates: edit config.txt, replace contents with the single word firmwareupdate, save, eject — the device reboots into UF2 mode automatically.