RAK3172 adaptive data rate while joining

I’m testing the RAK3172 in the field just next to another LoRaWAN device and I’m seeing a different behaviour: seems like the RAK3172 is not trying to adjust the data rate while trying to join. Since the gateway is a bit far away from where we are testing I see the other device joining the network in SF12 or SF11, instead I cannot see any request made by the RAK3172.
I’m wondering if the RAK3172 doesn’t adjust the DR while joining and it is just trying with SF7.

This is the process I use to join the network, which is from one of the RAK examples:

if (!api.lorawan.join())
  {
    debugStream->printf("LoRaWan Settings - join fail! \r\n");
    return false;
  }

  /** Wait for Join success */
  while (api.lorawan.njs.get() == 0)
  {
    debugStream->print("Wait for LoRaWAN join...");
    api.lorawan.join();
    delay(10000);
  }

  if (!api.lorawan.adr.set(true))
  {
    debugStream->printf("LoRaWan Settings - set adaptive data rate is incorrect! \r\n");
    return false;
  }

  if (!api.lorawan.rety.set(1))
  {
    debugStream->printf("LoRaWan Settings - set retry times is incorrect! \r\n");
    return false;
  }

  // Disable confirmation mode
  if (!api.lorawan.cfm.set(false))
  {
    debugStream->printf("LoRaWan Settings - set confirm mode is incorrect! \r\n");
    return false;
  }

  api.lorawan.daddr.get(assigned_dev_addr, 4);

Hello @a.occ

What LoRaWAN region are you using? US915 and AU915 limit the DR used during join.

Join parameters:
US915
Any channel
DR0 (125kHz channels) DR4 (500kHz channels)

AU915
Any channel
DR2 (125kHz channels) DR6 (500kHz channels)

If you are using EU868, any DR between 0 and 5 is possible for join.

Hello @beegee, I’m in 868 since I’m in Europe. What I’m asking is if I need to take care in the firmware of changing the DR myself when the join process is not working or the RUI3 join method does that. I used different end nodes in the past and almost everyone has some sort of NBTrials that changes every 2 or 3 join requests the DR of the join signal.

Hello Alessio,

Let me check with our R&D team if the change of DR after a failed join request is implemented.

1 Like

Hello Alessio,

Automatic change of the DR after a failed Join Request is not implemented in RUI3.

We added it to the list of future features.

Hello @beegee,
thank you for the info. Do you have a public roadmap for the RUI3 development?

Anyway do you think this is something that can be achieved by us using the api.lorawan.dr.set(value); API between failed join requests? I’m working on a wrapper library for our RAK3172 based module and I’m thinking of implementing this. Or do you think we can just set the DR to 0 and try to connect and then let the ADR doing the rest after connecting?

Hello @a.occ

No, we do not have a public roadmap for RUI3.

api.lorawan.dr.set(value); should work after the join callback reports that the join request has failed.

Starting with DR0 and using ADR is definitely a good idea as well.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.