RN2483 datarate not changing

I am using a Microchip RN2483 to transmit packets to TTN. Adaptive datarate on the module is switched off, and I manually specify the datarate.

On the TTN API my packets always say they have a datarate of SF7BW125, even when I change it to something else.

Is this a problem with the RN2483, or an issue with my gateway, or maybe TTN’s side?

What command are you using to change the datarate? What version of the firmware are you using too?
I have had no problem changing this on 1.0 firmware and the older 0.9.5 firmware.


The commands as I send them:
mac reset 868 mac set rx2 3 869525000 mac set nwkskey 2B7E151628AED2A6ABF7158809CF4F3C mac set appskey 2B7E151628AED2A6ABF7158809CF4F3C mac set devaddr 03FFxxxx mac set adr off mac set ar off mac set pwridx 1 mac set dr 5 mac save mac join abp

I have tried to mac set dr X to 0, 5, 6, and 7, but all of them result in “SF7BW125” on TTN’s side. 6 and 7 is answered with invalid_param by the RN2483.

The RN2483’s firmware version is “RN2483 1.0.0 Oct 23 2015 14:46:12”.

For SF12/125kHz use:

mac set dr 0

The values are 0 to 5 with 5 being SF7/125kHz


Ahh I see. So it’s only 6 and 7 that does not work.

Reading the LoRaWAN specification I see that the default channels (868.1, 868.3, 868.5) only support DR0-DR5.

Thanks for answering and putting me on the right track.

Hi all ,

I am also facing problem with Data rate when i am using dr5 data transmitting continuously.but rest of 0,1,2 data rate if i using then data transmitting successfully two times only after that i ma getting no_free_channel ,is there any solution for this , i want to use dr0 but i am getting problem…please let me know…

Thanks in Advance…

You can not transmit continuously. LoRaWAN uses frequencies where you can only transmit 1% of the time. At highest speed with minimal data you will still need to wait at least 7 seconds before a next transmission. If you transmit more data you need to wait longer.
The ‘no_free_ch’ message means you need to wait longer before attempting to send the next packet.

Hi Kersing ,

Very Very thanks for your quick response …

I have seen improvement after using more delay(10 second) for every transmit ,now i am receiving data multiple time while using data rate dr0…

i have another query related to rn2483 module and multitech gateway…

while using radio communication between two RN2483 Module ,using "radio tx data"command to transmit data and “radio rx 0” command to receive data its working me fine …

But i am not getting how to receive the data from the gateway to rn2483 module,i am transmit the data by using "mac tx 1 uncnf data"but how can i receive the data from gateway to rn2483 module ,like in rn2483 to rn2483 module communication we can receive data by using “radio rx 0” command…

Please let me know…

Thanks in Advance…

The RN2483 can receive data after it sends. One of the possible responses to ‘mac tx 1 uncnf data’ is 'mac_rx ’ (see chapter 2.4.2 of the data sheet) when data has been scheduled for transmission to the node. The RN2483 is a LoRaWAN class A device, that means it can not receive data continuously.

For gateways connected to the staging environment of TheThingsNetwork you can use the ‘ttnctl downlink’ command to upload data to be transmitted a node. Example: ‘ttnctl downlink 0000445566778899 AA0040 1h’ schedules ‘AA0040’ to be transmitted to node 0000445566778899 the next time the node sends data within the next hour. If the node does not send data within that hour the message expires and will not be sent.

If you’re sending all day long: when you’re hitting the duty-cycle limitations, you’re surely exceeding the The Things Network fair access policy of an average of 30 seconds uplink per day. The same policy also limits the downlinks to only 10 messages per day!

Hi JP,
i just read this and remembered that i use ur library for the rn2483
so i checked the source…

// TTN does not yet support Adaptive Data Rate.
// Using it is also only necessary in limited situations.
// Therefore disable it by default.
sendRawCommand(F(“mac set adr off”));

sendRawCommand(F(“mac set dr 5”)); //0= min, 7=max

are these statements still correct? i manually replace the mac set dr 5 with 0, but i am not sure about the first block why disable adaptive DR?

is there any other library you would recommend?


i manually replace the mac set dr 5 with 0

No, you should not do this. By changing it to 0 you are forcing your device to SF12, which is actually not allowed. Leave it of DR5/SF7.

If you really want ADR, change that first line to mac set adr off. Remeber that ADR is only useful for devices that remain at a fixed position. When a device is on the move ADR doesn’t work correctly.

Alternatively you can also use The Things Network Arduino library.

Thx JP for the reply!

  1. but if I understand correctly, by setting DR5 we are also forcing SF7 right? or does the RN handle that even with ADR OFF?
  2. i’ll try ADR since my beehives are mostly Stationary!
  3. will also look into the ttn library

Pretty sure if you set to SF12 to start with ADR will not work…

Regarding forcing the device to SF12, see this (and plenty other threads on this forum) about it:

Assuming ADR is on:
Before joining, forcing the device to SF7/DR5 is perfect. If it is close to a gateway the device will remain on SF7. If the device is not in range of a gateway using SF7, the module will slowly switch to a slower SF until the network hears and responds to it.

ADR off:
For mobile devices long airtimes are actually worse than short time on airs. There are many measurements made with TTN Mapper to prove this. So using SF7 is anyway better.