Releases: Guru-RF/8PswitchLORA
v1.1.0 — Status query + direct-DAC attenuator
⚠️ 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:fromQUERY REQ:so you can see what the switch is doing. - ACK format unchanged:
ACK:<name>/<port>/<att>.att=0.0in 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
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_portfrom/config.txt, then persists it. - Writes are gated by a change check, so repeating the same command does not wear the flash.
- CLI
portandattcommands 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
Highlights
- Full rewrite from CircuitPython to Arduino C++ on PlatformIO (arduino-pico / earlephilhower core).
- USB Mass Storage drive
LORA8PSWexposes/config.txtfor 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) andslow(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
- Hold the reset button on the PCB while plugging in USB-C — device shows up as
RPI-RP2. - Drag
8PswitchLORA-v1.0.0.uf2(attached below) onto theRPI-RP2drive. - Device reboots,
LORA8PSWdrive appears, editconfig.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.