fix(deps): pin lora-phy to swaits/lora-rs#fixed for sx127x/sx126x reliability

Switch lora-phy from crates.io to the swaits/lora-rs "fixed" branch
which carries three fixes awaiting upstream PR acceptance:

  - phy: sx127x: clear stale IRQ flags before reconfiguring DIO mapping
    in set_irq_params (fix/sx127x-irq-clear-position)
  - phy: sx127x: clear stale IRQ flags in do_rx before mode change
    (fix/sx127x-rx-irq-clear)
  - phy: sx126x: pre-command BUSY check + standby/IRQ-clear hygiene
    around CAD (fix/sx126x-busy-race)

Validates TBeam classic (sx127x) in particular and tightens reliability
across every board (the sx126x BUSY-race fix lands on every nRF/RP2040
board too). Pinned to commit e8a52ebd via Cargo.lock; revert to
crates.io once the three PRs land upstream.
This commit is contained in:
swaits committed 2026-04-29 22:37:04 -06:00
1 parent f7bac5903c
commit 732bd18ac3
3 files changed
+33 -19

No files matched your search

Generated
+5
View File
@@ -1734,6 +1734,7 @@ dependencies = [
[[package]] [[package]]
name = "lora-modulation" name = "lora-modulation"
version = "0.1.5" version = "0.1.5"
source = "git+https://github.com/swaits/lora-rs.git?branch=fixed#e8a52ebd35352ce0267148fd392a0b1956d7735f"
dependencies = [ dependencies = [
"defmt 0.3.100", "defmt 0.3.100",
] ]
@@ -1741,6 +1742,7 @@ dependencies = [
[[package]] [[package]]
name = "lora-phy" name = "lora-phy"
version = "3.0.2-alpha" version = "3.0.2-alpha"
source = "git+https://github.com/swaits/lora-rs.git?branch=fixed#e8a52ebd35352ce0267148fd392a0b1956d7735f"
dependencies = [ dependencies = [
"defmt 0.3.100", "defmt 0.3.100",
"document-features", "document-features",
@@ -1754,6 +1756,7 @@ dependencies = [
[[package]] [[package]]
name = "lorawan" name = "lorawan"
version = "0.9.1" version = "0.9.1"
source = "git+https://github.com/swaits/lora-rs.git?branch=fixed#e8a52ebd35352ce0267148fd392a0b1956d7735f"
dependencies = [ dependencies = [
"aes", "aes",
"cmac", "cmac",
@@ -1765,6 +1768,7 @@ dependencies = [
[[package]] [[package]]
name = "lorawan-device" name = "lorawan-device"
version = "0.12.2" version = "0.12.2"
source = "git+https://github.com/swaits/lora-rs.git?branch=fixed#e8a52ebd35352ce0267148fd392a0b1956d7735f"
dependencies = [ dependencies = [
"defmt 0.3.100", "defmt 0.3.100",
"document-features", "document-features",
@@ -1779,6 +1783,7 @@ dependencies = [
[[package]] [[package]]
name = "lorawan-macros" name = "lorawan-macros"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/swaits/lora-rs.git?branch=fixed#e8a52ebd35352ce0267148fd392a0b1956d7735f"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
+3 -3
View File
@@ -34,9 +34,9 @@ ucobs = { version = "0.3", features = ["legacy-msrv"] }
heapless = "0.9" heapless = "0.9"
donglora-protocol = "1" donglora-protocol = "1"
hsmc = { version = "0.5", default-features = false, features = ["embassy", "trace-defmt"] } hsmc = { version = "0.5", default-features = false, features = ["embassy", "trace-defmt"] }
# Local path while iterating on CAD IRQ-clear / standby-after-CAD fixes. # Fork branch carrying CAD IRQ-clear / standby-after-CAD fixes awaiting upstream PRs.
# Switch back to git fork (then crates.io) once changes are upstreamed. # Switch back to crates.io once changes are upstreamed.
lora-phy = { path = "../../lora-rs/lora-phy", features = ["defmt-03"] } lora-phy = { git = "https://github.com/swaits/lora-rs.git", branch = "fixed", features = ["defmt-03"] }
portable-atomic = { version = "1", default-features = false, features = ["critical-section"] } portable-atomic = { version = "1", default-features = false, features = ["critical-section"] }
static_cell = "2.1" static_cell = "2.1"
+25 -16
View File
@@ -1,30 +1,39 @@
# Firmware TODO List # Firmware TODO List
## `lora-phy` fix: drop fork pin once PR #428 merges + releases ## `lora-phy` fix: drop fork pin once PRs #428 / #431 / #432 merge + release
Upstream PRs (all open):
- [#428 — *phy: add pre-command BUSY checks per Semtech
datasheets*](https://github.com/lora-rs/lora-rs/pull/428) (sx126x):
pre-command BUSY check + standby/IRQ-clear hygiene around CAD.
- [#431 — *phy: sx127x: clear stale IRQ flags in do_rx before mode
change*](https://github.com/lora-rs/lora-rs/pull/431).
- [#432 — *phy: sx127x: clear stale IRQ flags before reconfiguring DIO
mapping in set_irq_params*](https://github.com/lora-rs/lora-rs/pull/432).
Upstream PR: [lora-rs/lora-rs#428 — *phy: add pre-command BUSY checks
per Semtech datasheets*](https://github.com/lora-rs/lora-rs/pull/428)
(open).
Fork branch we ship from: Fork branch we ship from:
[`swaits/lora-rs @ fix/sx126x-busy-race`](https://github.com/swaits/lora-rs/tree/fix/sx126x-busy-race). [`swaits/lora-rs @ fixed`](https://github.com/swaits/lora-rs/tree/fixed)
— a merge of all three fix branches kept up-to-date with upstream
`main`.
Firmware consumes the fix via a direct `git` dependency in Firmware consumes the fixes via a direct `git` dependency in
`Cargo.toml`: `Cargo.toml`:
```toml ```toml
lora-phy = { git = "https://github.com/swaits/lora-rs.git", branch = "fix/sx126x-busy-race", features = ["defmt-03"] } lora-phy = { git = "https://github.com/swaits/lora-rs.git", branch = "fixed", features = ["defmt-03"] }
``` ```
When PR #428 merges and a `lora-phy` release ships on crates.io that When all three PRs merge and a `lora-phy` release ships on crates.io
contains it, switch this line back to a normal `lora-phy = "X.Y"` that contains them, switch this line back to a normal
crates.io version and drop the explanatory comment block above it. `lora-phy = "X.Y"` crates.io version and drop the explanatory comment
block above it.
Hardware-verified on Wio Tracker L1: 20/20 clean-boot TX after the fix Hardware impact: large stability gain on every board — the sx126x
(vs ~50% before). The fix adds a pre-command BUSY check before each BUSY-race fix lands on every nRF/RP2040 board, and the sx127x IRQ-clear
`SpiInterface` read/write op, keeping the existing post-command wait fixes unblock TBeam classic in particular. Hardware-verified on Wio
in place — belt-and-suspenders bracketing that closes the Tracker L1 (sx126x): 20/20 clean-boot TX after the fix (vs ~50%
BUSY-assertion latency window (T_SW ≤ 600 ns) a single level-poll can before).
miss.
--- ---