Hi ,
I need support on a critical issue blocking FUOTA implementation on a Raspberry Pi Pico (LoRaWAN FUOTA bootloader).
Current Status
- FUOTA bootloader is running on Pico.
- Network join, multicast setup, clock sync, and command–response with ChirpStack all work correctly.
Issue
The process stops at the Fragmentation Session Setup step.
- ChirpStack sends
FRAG_SESSION_SETUP_REQ(Port 201). - The device rejects it as invalid — no
FRAG_SESSION_SETUP_ANSis sent. - ChirpStack times out after 3–5 seconds.
- As a result, FUOTA cannot proceed to the firmware transfer stage.
Technical Details
- The code currently checks for a minimum 9-byte payload.
- However, per LoRaWAN TS006, a 7-byte payload is valid (the descriptor at bytes 7–8 is optional).
- This mismatch causes the device to reject valid ChirpStack commands.
What I’ve Tried
- Verified connectivity

- Multicast and clock sync working

- Checked ChirpStack logs → shows timeout
- Device serial output → shows payload rejection
- Compared implementation vs. LoRaWAN spec → found 7-byte vs. 9-byte mismatch
Impact
This issue is a complete blocker — FUOTA progress is halted at the Fragmentation Session Setup stage.
Request for Support
- Could someone please review or confirm whether the 9-byte minimum check was added for a specific reason?
- Any guidance or example implementation references to handle this correctly would be greatly appreciated.
Thanks in advance for your help!
Vishwa