Skip to content

Comments

[LoRaWAN] Fix for unreliable first transmits (fixed band regions)#1706

Merged
StevenCellist merged 1 commit intojgromes:masterfrom
olivierouellet:Fix-for-calculateChannelFlags()
Feb 18, 2026
Merged

[LoRaWAN] Fix for unreliable first transmits (fixed band regions)#1706
StevenCellist merged 1 commit intojgromes:masterfrom
olivierouellet:Fix-for-calculateChannelFlags()

Conversation

@olivierouellet
Copy link
Contributor

For regions using RADIOLIB_LORAWAN_BAND_FIXED (US915, AU915, CN470), calculateChannelFlags() gets an early return during activateOTAA() because sessionStatus is set to RADIOLIB_LORAWAN_SESSION_ACTIVE after calling calculateChannelFlags().

activateOTAA()

  (void)this->calculateChannelFlags();
  
  this->sessionStatus = RADIOLIB_LORAWAN_SESSION_ACTIVE;

  return(RADIOLIB_LORAWAN_NEW_SESSION);

calculateChannelFlags()

  } else {                // RADIOLIB_LORAWAN_BAND_FIXED
    // during activation of fixed bands, flag all available channels
    // the datarate will be determined from there
    if(!this->isActivated() && this->band->bandType == RADIOLIB_LORAWAN_BAND_FIXED) {
      memcpy(this->channelFlags, this->channelMasks, sizeof(this->channelMasks));
      return(true);
    }

So the rest of calculateChannelFlags() is skipped.

    // check first frequency span to see if the datarate is allowed and any channel is available
    if(drUp >= this->band->txSpans[0].drMin && drUp <= this->band->txSpans[0].drMax) {
      // if the datarate is OK, all channel in this span can be used
      for(int i = 0; i < this->band->txSpans[0].numChannels / 16; i++) {
        this->channelFlags[i] = this->channelMasks[i];
        if(this->channelMasks[i]) {
          any = true;
        }
      }
    }

    // check second frequency span to see if the datarate is allowed and any channel is available
    if(drUp >= this->band->txSpans[1].drMin && drUp <= this->band->txSpans[1].drMax) {
      this->channelFlags[4] = this->channelMasks[4];
      if(this->channelMasks[4]) {
        any = true;
      }

This leads to the first transmits randomly not working (I usually get one of the first 8 transmits not seen by the gateway) until calculateChannelFlags() gets called again when all flags are set. This time, the early return is skipped (isActivated() returns true). After that, every transmit works ok.

@StevenCellist
Copy link
Collaborator

Awww man, not this rabbit hole again. I'll need to dig into the regional parameters and test suite again for this. A lot of this stuff has been very carefully tuned and even the slightest modification breaks stuff. So either that has already happened or there's a misunderstanding of the specification by one (or both) of us.
Please give me some time to review...

@olivierouellet
Copy link
Contributor Author

I feel your pain, I feel your pain.

Plan B is to call my Prime Minister and do lobbying for Canada915 dynamic band.

In case it helps, I modified calculateChannelFlags() to add logging :

  } else {                // RADIOLIB_LORAWAN_BAND_FIXED
    // during activation of fixed bands, flag all available channels
    // the datarate will be determined from there
    if(!this->isActivated() && this->band->bandType == RADIOLIB_LORAWAN_BAND_FIXED) {
      RADIOLIB_DEBUG_PROTOCOL_PRINTLN("********* Fixed band / No activation *********");
      memcpy(this->channelFlags, this->channelMasks, sizeof(this->channelMasks));
      return(true);
    }

    RADIOLIB_DEBUG_PROTOCOL_PRINTLN("********* Fixed band / Activated *********");
    // check first frequency span to see if the datarate is allowed and any channel is available
    if(drUp >= this->band->txSpans[0].drMin && drUp <= this->band->txSpans[0].drMax) {
      // if the datarate is OK, all channel in this span can be used
      for(int i = 0; i < this->band->txSpans[0].numChannels / 16; i++) {
        this->channelFlags[i] = this->channelMasks[i];
        if(this->channelMasks[i]) {
          any = true;
        }
      }
    }

And this is what I got without this PR. The code after Fixed band / Activated is run for the first time at uplink 9 :

Debug output

radio.begin() starting
[0.027227] RLB_DBG: 
RadioLib Info
Version:  "7.5.0.0"
Platform: "Arduino STM32 (official)"
"Feb 15 2026" "11:59:33"
[0.034830] RLB_DBG: Found SX126x: RADIOLIB_SX126X_REG_VERSION_STRING:
[0.042945] RLB_DBG: 00000320: 53 58 31 32 36 31 20 54 4b 46 20 31 41 31 31 00  SX1261 TKF 1A11.
[0.052553] RLB_DBG: 
[0.052769] RLB_DBG: M   SX126x
radio.begin() : ERR_NONE (0)
node.beginOTAA : ERR_NONE (0)
[0.141584] RLB_PRO: [MAC] 0x03
[0.142033] RLB_PRO: 00000000: 20                                                                 
[0.148351] RLB_PRO: LinkAdrReq: dataRate = 2, txSteps = 0, nbTrans = 0
[0.159477] RLB_PRO: ********* Fixed band / No activation *********
[0.165434] RLB_PRO: LinkAdrAns: 07
[0.165704] RLB_PRO: [MAC] 0x04
[0.169277] RLB_PRO: 00000000: 00                                               .                 
[0.176723] RLB_PRO: DutyCycleReq: max duty cycle = 1/2^0
[0.180590] RLB_PRO: [MAC] 0x05
[0.188394] RLB_PRO: 00000000: 08 68 e2 8c                                      .h..              
[0.193828] RLB_PRO: RXParamSetupReq: Rx1DrOffset = 0, rx2DataRate = 8, freq = 923.300
[0.199949] RLB_PRO: [MAC] 0x08
[0.204367] RLB_PRO: 00000000: 01                                               .                 
[0.216110] RLB_PRO: RXTimingSetupReq: delay = 1 sec
[0.216415] RLB_PRO: [MAC] 0x09
[0.221334] RLB_PRO: 00000000: 1d                                               .                 
[0.227494] RLB_PRO: [MAC] 0x0c
[0.232838] RLB_PRO: 00000000: 65                                               e                 
[0.238738] RLB_PRO: ADRParamSetupReq: limitExp = 6, delayExp = 5
[0.244456] RLB_PRO: [MAC] 0x0f
[0.250136] RLB_PRO: 00000000: fa                                               .                 
[0.261134] RLB_PRO: RejoinParamSetupReq: maxTime = 15, maxCount = 10
[0.281219] RLB_PRO: JoinRequest (DevNonce = 0):
[0.283080] RLB_PRO: 00000000: 00 9d d6 8d ff 0d 2e 5f 8c a3 67 1a fe ff 09 1f  ......._..g.....
[0.292158] RLB_PRO: 00000010: ac 00 00 36 67 68 79                             ...6ghy           

[0.298725] RLB_PRO: Frequency = 905.100 MHz, TX = 30 dBm
[0.305867] RLB_PRO: [LoRa] SF = 10, BW = 125.0 kHz, CR = 4/5, IQ: U
[0.687877] RLB_PRO: Uplink sent (ToA = 370 ms)

[0.689317] RLB_PRO: Frequency = 926.900 MHz, TX = 30 dBm
[0.696849] RLB_PRO: [LoRa] SF = 10, BW = 500.0 kHz, CR = 4/5, IQ: D
[5.641636] RLB_PRO: Rx1 window open (151 + 100 ms)
[5.792010] RLB_PRO: Rx1 window closing
[5.802906] RLB_DBG: 1 at .pio/libdeps/lora_release/RadioLib/src/protocols/LoRaWAN/LoRaWAN.cpp:1734
[5.818944] RLB_PRO: JoinAccept (JoinNonce = 1115, previously 0):
[5.822620] RLB_PRO: 00000000: 20 5b 04 00 00 00 00 73 8e c7 00 88 01 00 ff 00   [.....s........
[5.833775] RLB_PRO: 00000010: 00 00 00 00 00 02 00 00 00 00 00 00 01 d7 cd b0  ................
[5.838281] RLB_PRO: 00000020: 4e                                               N                 
[5.849149] RLB_PRO: LoRaWAN revision: 1.1
[5.874772] RLB_PRO: [MAC] 0x05
[5.875494] RLB_PRO: 00000000: 08 68 e2 8c                                      .h..              
[5.883378] RLB_PRO: RXParamSetupReq: Rx1DrOffset = 0, rx2DataRate = 8, freq = 923.300
[5.892243] RLB_PRO: [MAC] 0x08
[5.892685] RLB_PRO: 00000000: 01                                               .                 
[5.902906] RLB_PRO: RXTimingSetupReq: delay = 1 sec
[5.905689] RLB_PRO: Processing CFList
[5.908568] RLB_PRO: [MAC] 0x03
[5.915283] RLB_PRO: 00000000: ff 00 ff 00 00 00 00 00 00 02 00 00 00 01        ..............    
[5.919865] RLB_PRO: LinkAdrReq: dataRate = 15, txSteps = 15, nbTrans = 1
[5.931006] RLB_PRO: ********* Fixed band / No activation *********
[5.936706] RLB_PRO: LinkAdrAns: 07
[5.956584] RLB_PRO: ********* Fixed band / No activation *********
node.activateOTAA : RADIOLIB_LORAWAN_NEW_SESSION (-1118)



node.sendReceive()
[5.979927] RLB_PRO: Uplink MAC payload:
[5.980445] RLB_PRO: 00000000: 0b 01                                            ..                
[5.997364] RLB_PRO: Uplink (FCntUp = 0) encoded:
[5.999299] RLB_PRO: 00000000: 50 01 00 20 50 01 00 20 10 00 00 00 10 00 00 00  P.. P.. ........
[6.010810] RLB_PRO: 00000010: 40 73 8e c7 00 02 00 00 ce d9 df d4 6b 05 00 00  @s..........k...
[6.015663] RLB_PRO: 00000020: 5f                                               _                 

[6.055485] RLB_PRO: Frequency = 905.100 MHz, TX = 30 dBm
[6.058556] RLB_PRO: [LoRa] SF = 10, BW = 125.0 kHz, CR = 4/5, IQ: U
[6.401796] RLB_PRO: Uplink sent (ToA = 329 ms)

[6.403198] RLB_PRO: Frequency = 926.900 MHz, TX = 30 dBm
[6.410479] RLB_PRO: [LoRa] SF = 10, BW = 500.0 kHz, CR = 4/5, IQ: D
[7.355636] RLB_PRO: Rx1 window open (151 + 100 ms)
[7.506009] RLB_PRO: Rx1 window closing
[7.512003] RLB_DBG: 1 at .pio/libdeps/lora_release/RadioLib/src/protocols/LoRaWAN/LoRaWAN.cpp:1734
[7.538201] RLB_PRO: Downlink (NFCntDown = 0) decoded:
[7.540147] RLB_PRO: 00000000: 49 00 00 00 00 01 73 8e c7 00 00 00 00 00 00 0a  I.....s.........
[7.550364] RLB_PRO: 00000010: 60 73 8e c7 00 82 00 00 0b 01 77 6d 6b 1c        `s........wmk.    
[7.555038] RLB_PRO: [MAC] 0x0b
[7.560703] RLB_PRO: 00000000: 01                                               .                 
[7.571700] RLB_PRO: RekeyConf: server version = 1.1
Uplink success!
Stop 2 mode. Waiting for interrupt...



stop2Mode() end
node.sendReceive()
[7.620955] RLB_PRO: Uplink (FCntUp = 1) encoded:
[7.622888] RLB_PRO: 00000000: 50 01 00 20 50 01 00 20 10 00 00 00 10 00 00 00  P.. P.. ........
[7.634559] RLB_PRO: 00000010: 40 73 8e c7 00 00 01 00 df 4a 81 6d d1 05 00     @s.......J.m...   

[7.668590] RLB_PRO: Frequency = 904.700 MHz, TX = 30 dBm
[7.673301] RLB_PRO: [LoRa] SF = 10, BW = 125.0 kHz, CR = 4/5, IQ: U
[8.018416] RLB_PRO: Uplink sent (ToA = 329 ms)

[8.019817] RLB_PRO: Frequency = 925.700 MHz, TX = 30 dBm
[8.028634] RLB_PRO: [LoRa] SF = 10, BW = 500.0 kHz, CR = 4/5, IQ: D
[8.966643] RLB_PRO: Rx1 window open (151 + 100 ms)
[9.117010] RLB_PRO: Rx1 window closing
[9.117350] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[9.126417] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[9.137452] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279

[9.141855] RLB_PRO: Frequency = 923.300 MHz, TX = 30 dBm
[9.148664] RLB_PRO: [LoRa] SF = 12, BW = 500.0 kHz, CR = 4/5, IQ: D
[9.966638] RLB_PRO: Rx2 window open (265 + 100 ms)
[10.231010] RLB_PRO: Rx2 window closing
[10.231363] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[10.236930] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[10.249470] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
Uplink success!
Stop 2 mode. Waiting for interrupt...



stop2Mode() end
node.sendReceive()
[10.300948] RLB_PRO: Uplink (FCntUp = 2) encoded:
[10.302860] RLB_PRO: 00000000: 50 01 00 20 50 01 00 20 10 00 00 00 10 00 00 00  P.. P.. ........
[10.312528] RLB_PRO: 00000010: 40 73 8e c7 00 00 02 00 df 6e 15 86 d1 05 00     @s.......n.....   

[10.351028] RLB_PRO: Frequency = 903.900 MHz, TX = 30 dBm
[10.354072] RLB_PRO: [LoRa] SF = 10, BW = 125.0 kHz, CR = 4/5, IQ: U
[10.697371] RLB_PRO: Uplink sent (ToA = 329 ms)

[10.698753] RLB_PRO: Frequency = 923.300 MHz, TX = 30 dBm
[10.704768] RLB_PRO: [LoRa] SF = 10, BW = 500.0 kHz, CR = 4/5, IQ: D
[11.650643] RLB_PRO: Rx1 window open (151 + 100 ms)
[11.801009] RLB_PRO: Rx1 window closing
[11.801361] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[11.806928] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[11.824095] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279

[11.830971] RLB_PRO: Frequency = 923.300 MHz, TX = 30 dBm
[11.834518] RLB_PRO: [LoRa] SF = 12, BW = 500.0 kHz, CR = 4/5, IQ: D
[12.650642] RLB_PRO: Rx2 window open (265 + 100 ms)
[12.915010] RLB_PRO: Rx2 window closing
[12.915352] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[12.924507] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[12.935650] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
Uplink success!
Stop 2 mode. Waiting for interrupt...



stop2Mode() end
node.sendReceive()
[12.986945] RLB_PRO: Uplink (FCntUp = 3) encoded:
[12.988882] RLB_PRO: 00000000: 50 01 00 20 50 01 00 20 10 00 00 00 10 00 00 00  P.. P.. ........
[13.000566] RLB_PRO: 00000010: 40 73 8e c7 00 00 03 00 df 25 58 1c d1 05 00     @s.......%%X....   

[13.034477] RLB_PRO: Frequency = 904.500 MHz, TX = 30 dBm
[13.037500] RLB_PRO: [LoRa] SF = 10, BW = 125.0 kHz, CR = 4/5, IQ: U
[13.378955] RLB_PRO: Uplink sent (ToA = 329 ms)

[13.380385] RLB_PRO: Frequency = 925.100 MHz, TX = 30 dBm
[13.388022] RLB_PRO: [LoRa] SF = 10, BW = 500.0 kHz, CR = 4/5, IQ: D
[14.332643] RLB_PRO: Rx1 window open (151 + 100 ms)
[14.483010] RLB_PRO: Rx1 window closing
[14.483362] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[14.488930] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[14.502498] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279

[14.509793] RLB_PRO: Frequency = 923.300 MHz, TX = 30 dBm
[14.516004] RLB_PRO: [LoRa] SF = 12, BW = 500.0 kHz, CR = 4/5, IQ: D
[15.332643] RLB_PRO: Rx2 window open (265 + 100 ms)
[15.597011] RLB_PRO: Rx2 window closing
[15.597363] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[15.603381] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[15.619594] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
Uplink success!
Stop 2 mode. Waiting for interrupt...



stop2Mode() end
node.sendReceive()
[15.670949] RLB_PRO: Uplink (FCntUp = 4) encoded:
[15.672859] RLB_PRO: 00000000: 50 01 00 20 50 01 00 20 10 00 00 00 10 00 00 00  P.. P.. ........
[15.681050] RLB_PRO: 00000010: 40 73 8e c7 00 00 04 00 df f7 45 c0 d1 05 00     @s........E....   

[15.719668] RLB_PRO: Frequency = 904.600 MHz, TX = 30 dBm
[15.722700] RLB_PRO: [LoRa] SF = 10, BW = 125.0 kHz, CR = 4/5, IQ: U
[16.066296] RLB_PRO: Uplink sent (ToA = 329 ms)

[16.067690] RLB_PRO: Frequency = 923.900 MHz, TX = 30 dBm
[16.074503] RLB_PRO: [LoRa] SF = 10, BW = 500.0 kHz, CR = 4/5, IQ: D
[17.019637] RLB_PRO: Rx1 window open (151 + 100 ms)
[17.170010] RLB_PRO: Rx1 window closing
[17.170350] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[17.179500] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[17.191591] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279

[17.196963] RLB_PRO: Frequency = 923.300 MHz, TX = 30 dBm
[17.203771] RLB_PRO: [LoRa] SF = 12, BW = 500.0 kHz, CR = 4/5, IQ: D
[18.019643] RLB_PRO: Rx2 window open (265 + 100 ms)
[18.284010] RLB_PRO: Rx2 window closing
[18.284362] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[18.289930] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[18.303080] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
Uplink success!
Stop 2 mode. Waiting for interrupt...



stop2Mode() end
node.sendReceive()
[18.354945] RLB_PRO: Uplink (FCntUp = 5) encoded:
[18.356843] RLB_PRO: 00000000: 50 01 00 20 50 01 00 20 10 00 00 00 10 00 00 00  P.. P.. ........
[18.366820] RLB_PRO: 00000010: 40 73 8e c7 00 00 05 00 df 92 1c 75 d1 05 00     @s.........u...   

[18.405611] RLB_PRO: Frequency = 904.900 MHz, TX = 30 dBm
[18.408639] RLB_PRO: [LoRa] SF = 10, BW = 125.0 kHz, CR = 4/5, IQ: U
[18.752422] RLB_PRO: Uplink sent (ToA = 329 ms)

[18.753804] RLB_PRO: Frequency = 926.300 MHz, TX = 30 dBm
[18.761445] RLB_PRO: [LoRa] SF = 10, BW = 500.0 kHz, CR = 4/5, IQ: D
[19.705637] RLB_PRO: Rx1 window open (151 + 100 ms)
[19.856010] RLB_PRO: Rx1 window closing
[19.856362] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[19.861929] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[19.874251] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279

[19.881659] RLB_PRO: Frequency = 923.300 MHz, TX = 30 dBm
[19.884763] RLB_PRO: [LoRa] SF = 12, BW = 500.0 kHz, CR = 4/5, IQ: D
[20.706643] RLB_PRO: Rx2 window open (265 + 100 ms)
[20.971010] RLB_PRO: Rx2 window closing
[20.971351] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[20.980503] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[20.992172] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
Uplink success!
Stop 2 mode. Waiting for interrupt...



stop2Mode() end
node.sendReceive()
[21.043947] RLB_PRO: Uplink (FCntUp = 6) encoded:
[21.045890] RLB_PRO: 00000000: 50 01 00 20 50 01 00 20 10 00 00 00 10 00 00 00  P.. P.. ........
[21.058122] RLB_PRO: 00000010: 40 73 8e c7 00 00 06 00 df 28 37 d1 d1 05 00     @s.......(7....   

[21.092583] RLB_PRO: Frequency = 904.300 MHz, TX = 30 dBm
[21.095655] RLB_PRO: [LoRa] SF = 10, BW = 125.0 kHz, CR = 4/5, IQ: U
[21.437778] RLB_PRO: Uplink sent (ToA = 329 ms)

[21.439182] RLB_PRO: Frequency = 924.500 MHz, TX = 30 dBm
[21.447968] RLB_PRO: [LoRa] SF = 10, BW = 500.0 kHz, CR = 4/5, IQ: D
[22.392635] RLB_PRO: Rx1 window open (151 + 100 ms)
[22.543010] RLB_PRO: Rx1 window closing
[22.543351] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[22.552558] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[22.563283] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279

[22.567250] RLB_PRO: Frequency = 923.300 MHz, TX = 30 dBm
[22.574061] RLB_PRO: [LoRa] SF = 12, BW = 500.0 kHz, CR = 4/5, IQ: D
[23.391643] RLB_PRO: Rx2 window open (265 + 100 ms)
[23.656010] RLB_PRO: Rx2 window closing
[23.656363] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[23.661930] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[23.679298] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
Uplink success!
Stop 2 mode. Waiting for interrupt...



stop2Mode() end
node.sendReceive()
[23.730945] RLB_PRO: Uplink (FCntUp = 7) encoded:
[23.732857] RLB_PRO: 00000000: 50 01 00 20 50 01 00 20 10 00 00 00 10 00 00 00  P.. P.. ........
[23.741739] RLB_PRO: 00000010: 40 73 8e c7 00 00 07 00 df d5 d3 51 d1 05 00     @s.........Q...   

[23.780291] RLB_PRO: Frequency = 904.100 MHz, TX = 30 dBm
[23.783334] RLB_PRO: [LoRa] SF = 10, BW = 125.0 kHz, CR = 4/5, IQ: U
[24.126651] RLB_PRO: Uplink sent (ToA = 329 ms)

[24.128046] RLB_PRO: Frequency = 923.900 MHz, TX = 30 dBm
[24.134855] RLB_PRO: [LoRa] SF = 10, BW = 500.0 kHz, CR = 4/5, IQ: D
[25.080639] RLB_PRO: Rx1 window open (151 + 100 ms)
[25.231010] RLB_PRO: Rx1 window closing
[25.231360] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[25.237131] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[25.253323] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279

[25.259380] RLB_PRO: Frequency = 923.300 MHz, TX = 30 dBm
[25.263939] RLB_PRO: [LoRa] SF = 12, BW = 500.0 kHz, CR = 4/5, IQ: D
[26.081643] RLB_PRO: Rx2 window open (265 + 100 ms)
[26.346010] RLB_PRO: Rx2 window closing
[26.346362] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[26.351930] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[26.365781] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
Uplink success!
Stop 2 mode. Waiting for interrupt...



stop2Mode() end
node.sendReceive()
[26.417951] RLB_PRO: Uplink (FCntUp = 8) encoded:
[26.419852] RLB_PRO: 00000000: 50 01 00 20 50 01 00 20 10 00 00 00 10 00 00 00  P.. P.. ........
[26.429831] RLB_PRO: 00000010: 40 73 8e c7 00 00 08 00 df f0 01 51 d1 05 00     @s.........Q...   

[26.464148] RLB_PRO: Frequency = 905.300 MHz, TX = 30 dBm
[26.467216] RLB_PRO: [LoRa] SF = 10, BW = 125.0 kHz, CR = 4/5, IQ: U
[26.808123] RLB_PRO: Uplink sent (ToA = 329 ms)

[26.809548] RLB_PRO: Frequency = 927.500 MHz, TX = 30 dBm
[26.817129] RLB_PRO: [LoRa] SF = 10, BW = 500.0 kHz, CR = 4/5, IQ: D
[27.762644] RLB_PRO: Rx1 window open (151 + 100 ms)
[27.913010] RLB_PRO: Rx1 window closing
[27.913361] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[27.918930] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[27.931821] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279

[27.939151] RLB_PRO: Frequency = 923.300 MHz, TX = 30 dBm
[27.942281] RLB_PRO: [LoRa] SF = 12, BW = 500.0 kHz, CR = 4/5, IQ: D
[28.762644] RLB_PRO: Rx2 window open (265 + 100 ms)
[29.027010] RLB_PRO: Rx2 window closing
[29.027355] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[29.036485] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[29.048874] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
Uplink success!
Stop 2 mode. Waiting for interrupt...



stop2Mode() end
node.sendReceive()
[29.100858] RLB_PRO: ********* Fixed band / Activated *********
[29.103369] RLB_PRO: Uplink (FCntUp = 9) encoded:
[29.108439] RLB_PRO: 00000000: 50 01 00 20 50 01 00 20 10 00 00 00 10 00 00 00  P.. P.. ........
[29.116061] RLB_PRO: 00000010: 40 73 8e c7 00 00 09 00 df 56 49 06 d1 05 00     @s.......VI....   

[29.154777] RLB_PRO: Frequency = 903.900 MHz, TX = 30 dBm
[29.157846] RLB_PRO: [LoRa] SF = 10, BW = 125.0 kHz, CR = 4/5, IQ: U
[29.500577] RLB_PRO: Uplink sent (ToA = 329 ms)

[29.501977] RLB_PRO: Frequency = 923.300 MHz, TX = 30 dBm
[29.508949] RLB_PRO: [LoRa] SF = 10, BW = 500.0 kHz, CR = 4/5, IQ: D
[30.453643] RLB_PRO: Rx1 window open (151 + 100 ms)
[30.604010] RLB_PRO: Rx1 window closing
[30.604351] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[30.613505] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[30.624888] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279

[30.629467] RLB_PRO: Frequency = 923.300 MHz, TX = 30 dBm
[30.636282] RLB_PRO: [LoRa] SF = 12, BW = 500.0 kHz, CR = 4/5, IQ: D
[31.453639] RLB_PRO: Rx2 window open (265 + 100 ms)
[31.718010] RLB_PRO: Rx2 window closing
[31.718362] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[31.723930] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[31.736310] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
Uplink success!
Stop 2 mode. Waiting for interrupt...

@StevenCellist
Copy link
Collaborator

I assume you set a specific subband?

@olivierouellet
Copy link
Contributor Author

Yes.

const LoRaWANBand_t Region = US915;
const uint8_t subBand = 2;
const float freq = 915.0F;
const float bw = 125.0F;
//  [ ... ]
LoRaWANNode node(&radio, &Region, subBand);
//  [ ... ]
radio.begin(freq, bw, sf, cr, syncWord, power, preambleLength, tcxoVoltage, useRegulatorLDO);
SPI log of a transmit not seen by the gateway

[16.583886] RLB_SPI: CMDR       11
[16.584205] RLB_SPI: SI         0       0
[16.584602] RLB_SPI: SO B2      B2      1
[16.587452] RLB_SPI: CMDR       11
[16.591864] RLB_SPI: SI         0       0
[16.592915] RLB_SPI: SO B2      B2      1
[16.597882] RLB_SPI: CMDW       8B
[16.598469] RLB_SPI: SI         A       6       1       0
[16.603594] RLB_SPI: SO B2      B2      B2      B2      B2
[16.609397] RLB_SPI: CMDR       11
[16.609762] RLB_SPI: SI         0       0
[16.612839] RLB_SPI: SO B2      B2      1
[16.615551] RLB_SPI: CMDW       8B
[16.618592] RLB_SPI: SI         A       4       1       0
[16.621030] RLB_SPI: SO B2      B2      B2      B2      B2
[16.624784] RLB_SPI: CMDR       11
[16.626615] RLB_SPI: SI         0       0
[16.630718] RLB_SPI: SO B2      B2      1
[16.632410] RLB_SPI: CMDW       8B
[16.636454] RLB_SPI: SI         A       4       1       0
[16.637911] RLB_SPI: SO B2      B2      B2      B2      B2

[16.643092] RLB_SPI: CMDW       86
[16.643502] RLB_SPI: SI         38      89      99      80
[16.648897] RLB_SPI: SO B2      B2      B2      B2      B2
[16.652873] RLB_SPI: CMDR       1D      8       E7
[16.654908] RLB_SPI: SI                         0       0
[16.658587] RLB_SPI: SO B2      B2      B2      B2      38
[16.660761] RLB_SPI: CMDR       C0
[16.664342] RLB_SPI: SI         0       0
[16.666093] RLB_SPI: SO B2      B2      B2
[16.671010] RLB_SPI: CMDW       95
[16.671641] RLB_SPI: SI         4       7       0       1
[16.676853] RLB_SPI: SO B2      B2      B2      B2      B2
[16.682715] RLB_SPI: CMDR       1D      8       D8
[16.683204] RLB_SPI: SI                         0       0
[16.688499] RLB_SPI: SO B2      B2      B2      B2      FE
[16.689183] RLB_SPI: CMDR       C0
[16.693438] RLB_SPI: SI         0       0
[16.693825] RLB_SPI: SO B2      B2      B2
[16.699205] RLB_SPI: CMDW       D       8       D8
[16.699752] RLB_SPI: SI                         FE
[16.704933] RLB_SPI: SO B2      B2      B2      B2
[16.710448] RLB_SPI: CMDW       8E
[16.710762] RLB_SPI: SI         16      4
[16.715872] RLB_SPI: SO B2      B2      B2
[16.716414] RLB_SPI: CMDW       D       8       E7
[16.719805] RLB_SPI: SI                         38
[16.722167] RLB_SPI: SO B2      B2      B2      B2
[16.725949] RLB_SPI: CMDR       11
[16.727896] RLB_SPI: SI         0       0
[16.731684] RLB_SPI: SO B2      B2      1
[16.733588] RLB_SPI: CMDR       1D      7       36
[16.737650] RLB_SPI: SI                         0       0
[16.739160] RLB_SPI: SO B2      B2      B2      B2      9
[16.743587] RLB_SPI: CMDR       C0
[16.744814] RLB_SPI: SI         0       0
[16.749442] RLB_SPI: SO B2      B2      B2
[16.750526] RLB_SPI: CMDW       D       7       36
[16.755321] RLB_SPI: SI                         D
[16.756144] RLB_SPI: SO B2      B2      B2      B2
[16.761323] RLB_SPI: CMDW       8C
[16.766889] RLB_SPI: SI         0       8       0       FF      1       0
[16.767625] RLB_SPI: SO B2      B2      B2      B2      B2      B2      B2
[16.770413] RLB_SPI: CMDR       11
[16.772970] RLB_SPI: SI         0       0
[16.777496] RLB_SPI: SO B2      B2      1
[16.778689] RLB_SPI: CMDR       1D      7       36
[16.783375] RLB_SPI: SI                         0       0
[16.784361] RLB_SPI: SO B2      B2      B2      B2      D
[16.789406] RLB_SPI: CMDR       C0
[16.795242] RLB_SPI: SI         0       0
[16.795680] RLB_SPI: SO B2      B2      B2
[16.798649] RLB_SPI: CMDW       D       7       36
[16.801163] RLB_SPI: SI                         D
[16.804249] RLB_SPI: SO B2      B2      B2      B2
[16.806996] RLB_SPI: CMDW       8C
[16.810163] RLB_SPI: SI         0       8       0       FF      1       0
[16.812698] RLB_SPI: SO B2      B2      B2      B2      B2      B2      B2
.[16.823481] RLB_SPI: CMDR      11
[16.827096] RLB_SPI: SI         0       0
[16.827482] RLB_SPI: SO B2      B2      1
[16.834847] RLB_SPI: CMDR       11
[16.835166] RLB_SPI: SI         0       0
[16.835582] RLB_SPI: SO B2      B2      1
[16.840750] RLB_SPI: CMDW       D       7       40
[16.843263] RLB_SPI: SI                         34      44
[16.846282] RLB_SPI: SO B2      B2      B2      B2      B2
[16.849668] RLB_SPI: CMDR       11
[16.851759] RLB_SPI: SI         0       0
[16.856133] RLB_SPI: SO B2      B2      1
[16.857488] RLB_SPI: CMDR       1D      7       36
[16.862004] RLB_SPI: SI                         0       0
[16.863162] RLB_SPI: SO B2      B2      B2      B2      D
[16.868028] RLB_SPI: CMDR       C0
[16.873935] RLB_SPI: SI         0       0
[16.874375] RLB_SPI: SO B2      B2      B2
[16.876750] RLB_SPI: CMDW       D       7       36
[16.880050] RLB_SPI: SI                         D
[16.882654] RLB_SPI: SO B2      B2      B2      B2
[16.885863] RLB_SPI: CMDW       8C
[16.888519] RLB_SPI: SI         0       8       0       F       1       0
[16.891530] RLB_SPI: SO B2      B2      B2      B2      B2      B2      B2
[16.894983] RLB_SPI: CMDW       8
[16.896793] RLB_SPI: SI         2       1       0       1       0       0       0       0
[16.902613] RLB_SPI: SO B2      B2      B2      B2      B2      B2      B2      B2      B2
[16.905978] RLB_SPI: CMDW       8F
[16.908061] RLB_SPI: SI         0       0
[16.913199] RLB_SPI: SO B2      B2      B2
[16.918987] RLB_SPI: CMDW       E       0
[16.919431] RLB_SPI: SI                 40      34      89      B8      1       0       2       0       DF      5A      17      7B      59      E4      DB
[16.925052] RLB_SPI: SO B2      B2      B2      B2      B2      B2      B2      B2      B2      B2      B2      B2      B2      B2      B2      B2      B2
[16.931073] RLB_SPI: CMDW       2
[16.933285] RLB_SPI: SI         43      FF
[16.936260] RLB_SPI: SO B2      B2      B2
[16.940122] RLB_SPI: CMDR       1D      8       89
[16.941957] RLB_SPI: SI                         0       0
[16.946074] RLB_SPI: SO B2      B2      B2      B2      24
[16.952055] RLB_SPI: CMDR       C0
[16.952371] RLB_SPI: SI         0       0
[16.958064] RLB_SPI: SO B2      B2      B2
[16.958646] RLB_SPI: CMDR       11
[16.961731] RLB_SPI: SI         0       0
[16.962120] RLB_SPI: SO B2      B2      1
[16.969414] RLB_SPI: CMDW       D       8       89
[16.969921] RLB_SPI: SI                         24
[16.972929] RLB_SPI: SO B2      B2      B2      B2
[16.976122] RLB_SPI: CMDW       83
[16.978832] RLB_SPI: SI         0       0       0
[16.981332] RLB_SPI: SO B2      B2      B2      B2
[17.313099] RLB_SPI: CMDW       2
[17.313412] RLB_SPI: SI         43      FF
[17.313810] RLB_SPI: SO BC      BC      BC
[17.317602] RLB_SPI: CMDW       0
[17.321071] RLB_SPI: SI
[17.322935] RLB_SPI: SO BC
[17.327098] RLB_SPI: CMDW       80
[17.327413] RLB_SPI: SI         1
[17.334192] RLB_SPI: SO BC      BC
[17.337714] RLB_SPI: CMDR       11
[17.339978] RLB_SPI: SI         0       0
[17.343299] RLB_SPI: SO B2      B2      1
[17.345746] RLB_SPI: CMDR       11
[17.349555] RLB_SPI: SI         0       0
[17.351221] RLB_SPI: SO B2      B2      1
[17.355661] RLB_SPI: CMDW       8B
[17.356771] RLB_SPI: SI         A       4       1       0
[17.361376] RLB_SPI: SO B2      B2      B2      B2      B2
[17.367025] RLB_SPI: CMDR       11
[17.367341] RLB_SPI: SI         0       0
[17.373033] RLB_SPI: SO B2      B2      1
[17.373715] RLB_SPI: CMDW       8B
[17.376594] RLB_SPI: SI         A       6       1       0
[17.379153] RLB_SPI: SO B2      B2      B2      B2      B2
[17.382767] RLB_SPI: CMDR       11
[17.384916] RLB_SPI: SI         0       0
[17.388498] RLB_SPI: SO B2      B2      1
[17.390714] RLB_SPI: CMDW       8B
[17.394233] RLB_SPI: SI         A       6       1       0
[17.396216] RLB_SPI: SO B2      B2      B2      B2      B2

[17.400871] RLB_SPI: CMDW       86
[17.401802] RLB_SPI: SI         39      BE      66      80
[17.406669] RLB_SPI: SO B2      B2      B2      B2      B2
[17.412591] RLB_SPI: CMDR       1D      8       E7
[17.413105] RLB_SPI: SI                         0       0
[17.416799] RLB_SPI: SO B2      B2      B2      B2      38
[17.418983] RLB_SPI: CMDR       C0
[17.422640] RLB_SPI: SI         0       0
[17.424388] RLB_SPI: SO B2      B2      B2
[17.428782] RLB_SPI: CMDW       95
[17.429941] RLB_SPI: SI         4       7       0       1
[17.434631] RLB_SPI: SO B2      B2      B2      B2      B2
[17.440315] RLB_SPI: CMDR       1D      8       D8
[17.440773] RLB_SPI: SI                         0       0
[17.446861] RLB_SPI: SO B2      B2      B2      B2      FE
[17.447569] RLB_SPI: CMDR       C0
[17.450016] RLB_SPI: SI         0       0
[17.452620] RLB_SPI: SO B2      B2      B2
[17.455766] RLB_SPI: CMDW       D       8       D8
[17.458241] RLB_SPI: SI                         FE
[17.462108] RLB_SPI: SO B2      B2      B2      B2
[17.464018] RLB_SPI: CMDW       8E
[17.468023] RLB_SPI: SI         16      4
[17.469420] RLB_SPI: SO B2      B2      B2
[17.474137] RLB_SPI: CMDW       D       8       E7
[17.479713] RLB_SPI: SI                         38
[17.480095] RLB_SPI: SO B2      B2      B2      B2
[17.485919] RLB_SPI: CMDR       11
[17.486289] RLB_SPI: SI         0       0
[17.488912] RLB_SPI: SO B2      B2      1
[17.492032] RLB_SPI: CMDR       1D      7       36
[17.495041] RLB_SPI: SI                         0       0
[17.497633] RLB_SPI: SO B2      B2      B2      B2      D
[17.501106] RLB_SPI: CMDR       C0
[17.503119] RLB_SPI: SI         0       0
[17.507221] RLB_SPI: SO B2      B2      B2
[17.508827] RLB_SPI: CMDW       D       7       36
[17.513099] RLB_SPI: SI                         9
[17.514440] RLB_SPI: SO B2      B2      B2      B2
[17.519100] RLB_SPI: CMDW       8C
[17.519998] RLB_SPI: SI         0       8       0       FF      1       1
[17.525191] RLB_SPI: SO B2      B2      B2      B2      B2      B2      B2
[17.531302] RLB_SPI: CMDR       11
[17.531617] RLB_SPI: SI         0       0
[17.536715] RLB_SPI: SO B2      B2      1
[17.537295] RLB_SPI: CMDR       1D      7       36
[17.542485] RLB_SPI: SI                         0       0
[17.542937] RLB_SPI: SO B2      B2      B2      B2      9
[17.548440] RLB_SPI: CMDR       C0
[17.548747] RLB_SPI: SI         0       0
[17.553843] RLB_SPI: SO B2      B2      B2
[17.555845] RLB_SPI: CMDW       D       7       36
[17.559546] RLB_SPI: SI                         9
[17.561654] RLB_SPI: SO B2      B2      B2      B2
[17.565368] RLB_SPI: CMDW       8C
[17.567652] RLB_SPI: SI         0       8       0       FF      1       1
[17.571031] RLB_SPI: SO B2      B2      B2      B2      B2      B2      B2
.[17.581772] RLB_SPI: CMDR      11
[17.584738] RLB_SPI: SI         0       0
[17.585122] RLB_SPI: SO B2      B2      1
[17.592399] RLB_SPI: CMDR       11
[17.592714] RLB_SPI: SI         0       0
[17.593242] RLB_SPI: SO B2      B2      1
[17.598487] RLB_SPI: CMDW       D       7       40
[17.603758] RLB_SPI: SI                         34      44
[17.604248] RLB_SPI: SO B2      B2      B2      B2      B2
[17.608238] RLB_SPI: CMDW       0
[17.610052] RLB_SPI: SI
[17.613751] RLB_SPI: SO B2
[17.614121] RLB_SPI: CMDW       80
[17.621166] RLB_SPI: SI         1
[17.621505] RLB_SPI: SO B2      B2
[17.622077] RLB_SPI: CMDW       8
[17.626495] RLB_SPI: SI         2       72      2       2       0       0       0       0
[17.632259] RLB_SPI: SO B2      B2      B2      B2      B2      B2      B2      B2      B2
[17.635779] RLB_SPI: CMDW       8F
[17.636097] RLB_SPI: SI         0       0
[17.638281] RLB_SPI: SO B2      B2      B2
[17.643505] RLB_SPI: CMDW       2
[17.649007] RLB_SPI: SI         43      FF
[17.649440] RLB_SPI: SO B2      B2      B2
[17.652026] RLB_SPI: CMDR       11
[17.655090] RLB_SPI: SI         0       0
[17.657695] RLB_SPI: SO B2      B2      1
[17.660823] RLB_SPI: CMDR       1D      7       36
[17.663660] RLB_SPI: SI                         0       0
[17.666493] RLB_SPI: SO B2      B2      B2      B2      9
[17.669791] RLB_SPI: CMDR       C0
[17.671975] RLB_SPI: SI         0       0
[17.675904] RLB_SPI: SO B2      B2      B2
[17.677688] RLB_SPI: CMDW       D       7       36
[17.681781] RLB_SPI: SI                         9
[17.683300] RLB_SPI: SO B2      B2      B2      B2
[17.687781] RLB_SPI: CMDW       8C
[17.688857] RLB_SPI: SI         0       8       0       FF      1       1
[17.693873] RLB_SPI: SO B2      B2      B2      B2      B2      B2      B2
[17.699877] RLB_SPI: CMDW       84
[17.700245] RLB_SPI: SI         4
[17.701631] RLB_SPI: SO B2      B2
[18.280071] RLB_SPI: CMDW       0
[18.280394] RLB_SPI: SI
[18.280630] RLB_SPI: SO FF
[18.290860] RLB_SPI: CMDW       80
[18.291179] RLB_SPI: SI         1
[18.291491] RLB_SPI: SO A2      A2
[18.296718] RLB_SPI: CMDW       82
[18.297030] RLB_SPI: SI         0       25      ED
[18.302135] RLB_SPI: SO B2      B2      B2      B2
[18.458349] RLB_SPI: CMDR       12
[18.463798] RLB_SPI: SI         0       0       0
[18.464312] RLB_SPI: SO A6      A6      2       0
[18.475522] RLB_SPI: CMDW       2
[18.475861] RLB_SPI: SI         2       0
[18.478270] RLB_SPI: SO A6      A6      A6
[18.492364] RLB_SPI: CMDW       0
[18.492696] RLB_SPI: SI
[18.493965] RLB_SPI: SO A6
[18.503206] RLB_SPI: CMDW       80
[18.503521] RLB_SPI: SI         1
[18.503832] RLB_SPI: SO A6      A6
[18.517379] RLB_SPI: CMDR       11
[18.517687] RLB_SPI: SI         0       0
[18.519360] RLB_SPI: SO B2      B2      1
[18.523192] RLB_SPI: CMDR       11
[18.528323] RLB_SPI: SI         0       0
[18.528731] RLB_SPI: SO B2      B2      1
[18.534178] RLB_SPI: CMDW       8B
[18.534495] RLB_SPI: SI         C       6       1       0
[18.539612] RLB_SPI: SO B2      B2      B2      B2      B2
[18.541921] RLB_SPI: CMDR       11
[18.545376] RLB_SPI: SI         0       0
[18.545764] RLB_SPI: SO B2      B2      1
[18.551199] RLB_SPI: CMDW       8B
[18.553488] RLB_SPI: SI         C       6       1       0
[18.556673] RLB_SPI: SO B2      B2      B2      B2      B2
[18.559670] RLB_SPI: CMDR       11
[18.562261] RLB_SPI: SI         0       0
[18.565755] RLB_SPI: SO B2      B2      1
[18.568055] RLB_SPI: CMDW       8B
[18.571490] RLB_SPI: SI         C       6       1       0
[18.573556] RLB_SPI: SO B2      B2      B2      B2      B2

[18.578125] RLB_SPI: CMDW       86
[18.579157] RLB_SPI: SI         39      B4      CC      C0
[18.583925] RLB_SPI: SO B2      B2      B2      B2      B2
[18.590093] RLB_SPI: CMDR       1D      8       E7
[18.590612] RLB_SPI: SI                         0       0
[18.593448] RLB_SPI: SO B2      B2      B2      B2      38
[18.596407] RLB_SPI: CMDR       C0
[18.599375] RLB_SPI: SI         0       0
[18.601733] RLB_SPI: SO B2      B2      B2
[18.606042] RLB_SPI: CMDW       95
[18.607285] RLB_SPI: SI         4       7       0       1
[18.611887] RLB_SPI: SO B2      B2      B2      B2      B2
[18.617561] RLB_SPI: CMDR       1D      8       D8
[18.618024] RLB_SPI: SI                         0       0
[18.624165] RLB_SPI: SO B2      B2      B2      B2      FE
[18.624868] RLB_SPI: CMDR       C0
[18.626999] RLB_SPI: SI         0       0
[18.629962] RLB_SPI: SO B2      B2      B2
[18.632759] RLB_SPI: CMDW       D       8       D8
[18.635579] RLB_SPI: SI                         FE
[18.639355] RLB_SPI: SO B2      B2      B2      B2
[18.641357] RLB_SPI: CMDW       8E
[18.645269] RLB_SPI: SI         16      4
[18.646758] RLB_SPI: SO B2      B2      B2
[18.651386] RLB_SPI: CMDW       D       8       E7
[18.652461] RLB_SPI: SI                         38
[18.657215] RLB_SPI: SO B2      B2      B2      B2
[18.663161] RLB_SPI: CMDR       11
[18.663526] RLB_SPI: SI         0       0
[18.666535] RLB_SPI: SO B2      B2      1
[18.669229] RLB_SPI: CMDR       1D      7       36
[18.672579] RLB_SPI: SI                         0       0
[18.674797] RLB_SPI: SO B2      B2      B2      B2      9
[18.678619] RLB_SPI: CMDR       C0
[18.680456] RLB_SPI: SI         0       0
[18.684472] RLB_SPI: SO B2      B2      B2
[18.686173] RLB_SPI: CMDW       D       7       36
[18.690356] RLB_SPI: SI                         9
[18.691788] RLB_SPI: SO B2      B2      B2      B2
[18.696362] RLB_SPI: CMDW       8C
[18.697345] RLB_SPI: SI         0       8       0       FF      1       1
[18.702451] RLB_SPI: SO B2      B2      B2      B2      B2      B2      B2
[18.708551] RLB_SPI: CMDR       11
[18.708859] RLB_SPI: SI         0       0
[18.710279] RLB_SPI: SO B2      B2      1
[18.714488] RLB_SPI: CMDR       1D      7       36
[18.717893] RLB_SPI: SI                         0       0
[18.720013] RLB_SPI: SO B2      B2      B2      B2      9
[18.724442] RLB_SPI: CMDR       C0
[18.725490] RLB_SPI: SI         0       0
[18.730560] RLB_SPI: SO B2      B2      B2
[18.731207] RLB_SPI: CMDW       D       7       36
[18.736437] RLB_SPI: SI                         9
[18.741764] RLB_SPI: SO B2      B2      B2      B2
[18.742464] RLB_SPI: CMDW       8C
[18.745681] RLB_SPI: SI         0       8       0       FF      1       1
[18.748126] RLB_SPI: SO B2      B2      B2      B2      B2      B2      B2
c[18.759126] RLB_SPI: CMDR      11
[18.759467] RLB_SPI: SI         0       0
[18.762256] RLB_SPI: SO B2      B2      1
[18.769648] RLB_SPI: CMDR       11
[18.769962] RLB_SPI: SI         0       0
[18.770590] RLB_SPI: SO B2      B2      1
[18.775747] RLB_SPI: CMDW       D       7       40
[18.781191] RLB_SPI: SI                         34      44
[18.781700] RLB_SPI: SO B2      B2      B2      B2      B2
[18.785496] RLB_SPI: CMDW       0
[18.787404] RLB_SPI: SI
[18.791022] RLB_SPI: SO B2
[18.791390] RLB_SPI: CMDW       80
[18.798431] RLB_SPI: SI         1
[18.798794] RLB_SPI: SO B2      B2
[18.799378] RLB_SPI: CMDW       8
[18.801676] RLB_SPI: SI         2       72      2       2       0       0       0       0
[18.807388] RLB_SPI: SO B2      B2      B2      B2      B2      B2      B2      B2      B2
[18.813290] RLB_SPI: CMDW       8F
[18.813605] RLB_SPI: SI         0       0
[18.815629] RLB_SPI: SO B2      B2      B2
[18.820763] RLB_SPI: CMDW       2
[18.821180] RLB_SPI: SI         43      FF
[18.826518] RLB_SPI: SO B2      B2      B2
[18.831797] RLB_SPI: CMDR       11
[18.832108] RLB_SPI: SI         0       0
[18.837541] RLB_SPI: SO B2      B2      1
[18.838147] RLB_SPI: CMDR       1D      7       36
[18.841089] RLB_SPI: SI                         0       0
[18.843773] RLB_SPI: SO B2      B2      B2      B2      9
[18.847133] RLB_SPI: CMDR       C0
[18.849324] RLB_SPI: SI         0       0
[18.853170] RLB_SPI: SO B2      B2      B2
[18.855039] RLB_SPI: CMDW       D       7       36
[18.859046] RLB_SPI: SI                         9
[18.860649] RLB_SPI: SO B2      B2      B2      B2
[18.865048] RLB_SPI: CMDW       8C
[18.866210] RLB_SPI: SI         0       8       0       FF      1       1
[18.871141] RLB_SPI: SO B2      B2      B2      B2      B2      B2      B2
[18.877141] RLB_SPI: CMDW       84
[18.877505] RLB_SPI: SI         4
[18.881160] RLB_SPI: SO B2      B2
[19.279072] RLB_SPI: CMDW       0
[19.279395] RLB_SPI: SI
[19.279630] RLB_SPI: SO FF
[19.289842] RLB_SPI: CMDW       80
[19.290161] RLB_SPI: SI         1
[19.290473] RLB_SPI: SO A2      A2
[19.295783] RLB_SPI: CMDW       82
[19.296094] RLB_SPI: SI         0       42      78
[19.301196] RLB_SPI: SO B2      B2      B2      B2
[19.571348] RLB_SPI: CMDR       12
[19.576787] RLB_SPI: SI         0       0       0
[19.577244] RLB_SPI: SO A6      A6      2       0
[19.588611] RLB_SPI: CMDW       2
[19.588950] RLB_SPI: SI         2       0
[19.591272] RLB_SPI: SO A6      A6      A6
[19.605452] RLB_SPI: CMDW       0
[19.605785] RLB_SPI: SI
[19.606966] RLB_SPI: SO A6
[19.616313] RLB_SPI: CMDW       80
[19.616639] RLB_SPI: SI         1
[19.616950] RLB_SPI: SO A6      A6

@StevenCellist
Copy link
Collaborator

Rest assured that I cannot read SPI logs. I can only read the protocol debug info. Any chance you have the protocol debug info related to that transmission?

@olivierouellet
Copy link
Contributor Author

Protocol debug info of a transmit not seen by the gateway

node.sendReceive()
[23.732958] RLB_PRO: Uplink (FCntUp = 7) encoded:
[23.734872] RLB_PRO: 00000000: 50 01 00 20 50 01 00 20 10 00 00 00 10 00 00 00  P.. P.. ........
[23.743841] RLB_PRO: 00000010: 40 06 97 18 01 00 07 00 df 97 44 d4 d1 05 00     @.........D....   

[23.782368] RLB_PRO: Frequency = 904.600 MHz, TX = 30 dBm
[23.785411] RLB_PRO: [LoRa] SF = 10, BW = 125.0 kHz, CR = 4/5, IQ: U
[24.128723] RLB_PRO: Uplink sent (ToA = 329 ms)

[24.130112] RLB_PRO: Frequency = 923.900 MHz, TX = 30 dBm
[24.136928] RLB_PRO: [LoRa] SF = 10, BW = 500.0 kHz, CR = 4/5, IQ: D
[25.083649] RLB_PRO: Rx1 window open (151 + 100 ms)
[25.234011] RLB_PRO: Rx1 window closing
[25.234361] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[25.240212] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[25.256432] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279

[25.262603] RLB_PRO: Frequency = 923.300 MHz, TX = 30 dBm
[25.266853] RLB_PRO: [LoRa] SF = 12, BW = 500.0 kHz, CR = 4/5, IQ: D
[26.082650] RLB_PRO: Rx2 window open (265 + 100 ms)
[26.347010] RLB_PRO: Rx2 window closing
[26.347362] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:251
[26.352930] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
[26.366863] RLB_DBG: -705 at .pio/libdeps/lora_release/RadioLib/src/Module.cpp:279
Uplink success!

Please note that it's not from the same run as the SPI log in my last post (and also different from previous log).

@olivierouellet
Copy link
Contributor Author

Oh. I had ADR disabled for debugging. Enabling ADR makes calculateChannelFlags() run right after the first transmit, so the only uplink that could fail is Uplink 0. Still, it's a problem if ADR is not enabled.

Protocol debug info

radio.begin() starting
[0.031228] RLB_DBG: 
RadioLib Info
Version:  "7.5.0.0"
Platform: "Arduino STM32 (official)"
"Feb 15 2026" "11:59:33"
[0.038830] RLB_DBG: Found SX126x: RADIOLIB_SX126X_REG_VERSION_STRING:
[0.046944] RLB_DBG: 00000320: 53 58 31 32 36 31 20 54 4b 46 20 31 41 31 31 00  SX1261 TKF 1A11.
[0.056554] RLB_DBG: 
[0.056769] RLB_DBG: M   SX126x
radio.begin() : ERR_NONE (0)
node.beginOTAA : ERR_NONE (0)
[0.145584] RLB_PRO: [MAC] 0x03
[0.146033] RLB_PRO: 00000000: 20                                                                 
[0.152351] RLB_PRO: LinkAdrReq: dataRate = 2, txSteps = 0, nbTrans = 0
[0.163477] RLB_PRO: ********* Fixed band / No activation *********
[0.169434] RLB_PRO: LinkAdrAns: 07
[0.169704] RLB_PRO: [MAC] 0x04
[0.173277] RLB_PRO: 00000000: 00                                               .                 
[0.180723] RLB_PRO: DutyCycleReq: max duty cycle = 1/2^0
[0.184590] RLB_PRO: [MAC] 0x05
[0.192393] RLB_PRO: 00000000: 08 68 e2 8c                                      .h..              
[0.197826] RLB_PRO: RXParamSetupReq: Rx1DrOffset = 0, rx2DataRate = 8, freq = 923.300
[0.203948] RLB_PRO: [MAC] 0x08
[0.208366] RLB_PRO: 00000000: 01                                               .                 
[0.220109] RLB_PRO: RXTimingSetupReq: delay = 1 sec
[0.220415] RLB_PRO: [MAC] 0x09
[0.225332] RLB_PRO: 00000000: 1d                                               .                 
[0.231493] RLB_PRO: [MAC] 0x0c
[0.236836] RLB_PRO: 00000000: 65                                               e                 
[0.242737] RLB_PRO: ADRParamSetupReq: limitExp = 6, delayExp = 5
[0.248454] RLB_PRO: [MAC] 0x0f
[0.254136] RLB_PRO: 00000000: fa                                               .                 
[0.265132] RLB_PRO: RejoinParamSetupReq: maxTime = 15, maxCount = 10
[0.285216] RLB_PRO: JoinRequest (DevNonce = 0):
[0.287077] RLB_PRO: 00000000: 00 9d d6 8d ff 0d 2e 5f 8c a3 67 1a fe ff 09 1f  ......._..g.....
[0.296155] RLB_PRO: 00000010: ac 00 00 36 67 68 79                             ...6ghy           

[0.302722] RLB_PRO: Frequency = 904.700 MHz, TX = 30 dBm
[0.309864] RLB_PRO: [LoRa] SF = 10, BW = 125.0 kHz, CR = 4/5, IQ: U
[0.691873] RLB_PRO: Uplink sent (ToA = 370 ms)

[0.693313] RLB_PRO: Frequency = 925.700 MHz, TX = 30 dBm
[0.700841] RLB_PRO: [LoRa] SF = 10, BW = 500.0 kHz, CR = 4/5, IQ: D
[5.645642] RLB_PRO: Rx1 window open (151 + 100 ms)
[5.796010] RLB_PRO: Rx1 window closing
[5.806901] RLB_DBG: 1 at .pio/libdeps/lora_release/RadioLib/src/protocols/LoRaWAN/LoRaWAN.cpp:1734
[5.822947] RLB_PRO: JoinAccept (JoinNonce = 1118, previously 0):
[5.826623] RLB_PRO: 00000000: 20 5e 04 00 00 00 00 45 97 d3 01 88 01 00 ff 00   ^.....E........
[5.837775] RLB_PRO: 00000010: 00 00 00 00 00 02 00 00 00 00 00 00 01 62 7a a4  .............bz.
[5.842280] RLB_PRO: 00000020: f0                                               .                 
[5.853149] RLB_PRO: LoRaWAN revision: 1.1
[5.878757] RLB_PRO: [MAC] 0x05
[5.879478] RLB_PRO: 00000000: 08 68 e2 8c                                      .h..              
[5.887363] RLB_PRO: RXParamSetupReq: Rx1DrOffset = 0, rx2DataRate = 8, freq = 923.300
[5.896224] RLB_PRO: [MAC] 0x08
[5.896666] RLB_PRO: 00000000: 01                                               .                 
[5.906886] RLB_PRO: RXTimingSetupReq: delay = 1 sec
[5.909665] RLB_PRO: Processing CFList
[5.912546] RLB_PRO: [MAC] 0x03
[5.919261] RLB_PRO: 00000000: ff 00 ff 00 00 00 00 00 00 02 00 00 00 01        ..............    
[5.923842] RLB_PRO: LinkAdrReq: dataRate = 15, txSteps = 15, nbTrans = 1
[5.934979] RLB_PRO: ********* Fixed band / No activation *********
[5.940687] RLB_PRO: LinkAdrAns: 07
[5.960549] RLB_PRO: ********* Fixed band / No activation *********
node.activateOTAA : RADIOLIB_LORAWAN_NEW_SESSION (-1118)



node.sendReceive()
[5.983889] RLB_PRO: Uplink MAC payload:
[5.984407] RLB_PRO: 00000000: 0b 01                                            ..                
[6.001332] RLB_PRO: Uplink (FCntUp = 0) encoded:
[6.003275] RLB_PRO: 00000000: 50 01 00 20 50 01 00 20 10 00 00 00 10 00 00 00  P.. P.. ........
[6.014784] RLB_PRO: 00000010: 40 45 97 d3 01 82 00 00 28 7d df 11 9d 05 00 00  @E......(}......
[6.019636] RLB_PRO: 00000020: 5f                                               _                 

[6.059448] RLB_PRO: Frequency = 904.500 MHz, TX = 30 dBm
[6.062473] RLB_PRO: [LoRa] SF = 10, BW = 125.0 kHz, CR = 4/5, IQ: U
[6.405746] RLB_PRO: Uplink sent (ToA = 329 ms)

[6.407149] RLB_PRO: Frequency = 925.100 MHz, TX = 30 dBm
[6.414419] RLB_PRO: [LoRa] SF = 10, BW = 500.0 kHz, CR = 4/5, IQ: D
[7.359642] RLB_PRO: Rx1 window open (151 + 100 ms)
[7.510010] RLB_PRO: Rx1 window closing
[7.515988] RLB_DBG: 1 at .pio/libdeps/lora_release/RadioLib/src/protocols/LoRaWAN/LoRaWAN.cpp:1734
[7.542234] RLB_PRO: Downlink (NFCntDown = 0) decoded:
[7.544179] RLB_PRO: 00000000: 49 00 00 00 00 01 45 97 d3 01 00 00 00 00 00 0f  I.....E.........
[7.554591] RLB_PRO: 00000010: 60 45 97 d3 01 87 00 00 0b 01 03 32 00 ff 01 fe  `E.........2....
[7.559396] RLB_PRO: 00000020: 6d 15 bf                                         m..               
[7.570290] RLB_PRO: [MAC] 0x0b
[7.573304] RLB_PRO: 00000000: 01                                               .                 
[7.581417] RLB_PRO: RekeyConf: server version = 1.1
[7.584650] RLB_PRO: [MAC] 0x03
[7.588576] RLB_PRO: 00000000: 32 00 ff 00 00 00 00 00 00 02 00 00 00 01        2.............    
[7.598297] RLB_PRO: LinkAdrReq: dataRate = 3, txSteps = 2, nbTrans = 1
[7.603977] RLB_PRO: ********* Fixed band / Activated *********
[7.609584] RLB_PRO: LinkAdrAns: 07
Uplink success!

@StevenCellist
Copy link
Collaborator

Right. So I didn't want to merge this without understanding the issue, but I've traced it down.

Before join, any one channel can be used and the datarate is calculated based on the random channel that is picked. Upon join, the datarate is selected and a channel is picked on random as long as it supports the datarate (so vice versa).

However, the order before this PR is that activation is set after channel flags are calculated. So a datarate is fixed by the join but the channels are calculated as if any datarate could be used. This means that a channel can be selected that is not available for this datarate, but then the datarate is still used. This emerges for the 500kHz channel if a 125kHz datarate is used. It could happen the other way around too, which is more dramatic but very infrequent.

This PR does correctly resolve the problem. Merging, thank you!

@StevenCellist StevenCellist merged commit ac70f5f into jgromes:master Feb 18, 2026
31 checks passed
@StevenCellist
Copy link
Collaborator

As a demonstration, the "missing uplink log" shows 904.6MHz which is a 500kHz-band channel, but it is used with a 125kHz datarate.

@olivierouellet
Copy link
Contributor Author

I was about to ask you if you needed some water or carrots while down there, but I'm glad to know you're already out!

Do you want to add a comment to make sure it doesn't get flipped back in the future? It does look better the original way and it's tempting to put it back the way it was. (I can do a PR if it saves you time.)

Thanks a lot for your help. This project and the team behind it are truly amazing.

@StevenCellist
Copy link
Collaborator

I'd like myself some carrots ;)
Added a comment!

@olivierouellet olivierouellet deleted the Fix-for-calculateChannelFlags() branch February 21, 2026 01:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants