Blocked at FRAG_SESSION_SETUP_REQ – FUOTA Implementation (Raspberry Pi Pico)

Hi ,

I need support on a critical issue blocking FUOTA implementation on a Raspberry Pi Pico (LoRaWAN FUOTA bootloader).

:white_check_mark: Current Status

  • FUOTA bootloader is running on Pico.
  • Network join, multicast setup, clock sync, and command–response with ChirpStack all work correctly.

:no_entry_sign: 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_ANS is sent.
  • ChirpStack times out after 3–5 seconds.
  • As a result, FUOTA cannot proceed to the firmware transfer stage.

:mag: 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.

:test_tube: What I’ve Tried

  • Verified connectivity :white_check_mark:
  • Multicast and clock sync working :white_check_mark:
  • Checked ChirpStack logs → shows timeout
  • Device serial output → shows payload rejection
  • Compared implementation vs. LoRaWAN spec → found 7-byte vs. 9-byte mismatch

:warning: Impact

This issue is a complete blocker — FUOTA progress is halted at the Fragmentation Session Setup stage.

:pray: 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

1 Like