Specify multicast downlink data rate

Hello,

I am trying to implement FUOTA with multicast downlinks. When I queue downlinks on a single device, it sends with SF9, but when I send a multicast, it always sends with SF12. After searching for a while, I have not found a way to change this behavior. No options were found for either the application, the multicast group or per downlink.
Is there any way to change the data rate? And if not, why not?
If I understand it correctly, under normal circumstances DR0 & DR1 should be tried to avoid.
Changing Data Rate on TTN stack (Multicast)

DR0 & DR1 are not permitted for normal operation.

Someone else has already asked a similar question, but never received an answer.
LoRaWAN Multicast-Frame Payload size (TTN/TTI)

I would like to do the same SF switching with multicast TTN virtual devices.

I got help:
It is possible to change the datarate from the CLI

ttn-lw-cli end-devices set --application-id --device-id --mac-state.current-parameters.rx2-data-rate-index --mac-state.desired-parameters.rx2-data-rate-index

or via the API

curl --location --request PUT ‘https://#server#/api/v3/ns/applications/#app-id#/devices/#device-id#’
–header ‘Authorization: Bearer XXXXXXXXXXXXXXXX’
–header ‘Content-Type: application/json’
–data-raw ‘{
“end_device”: {
“mac_state”:{
“current_parameters”: {
“rx2_data_rate_index”: “DATA_RATE_3”
},
“desired_parameters”:{
“rx2_data_rate_index”: “DATA_RATE_3”
}
}
},
“field_mask”: {
“paths”:[“mac_state.current_parameters.rx2_data_rate_index”,“mac_state.desired_parameters.rx2_data_rate_index”]
}
}’

1 Like

Very useful, thanks!!

I have been working with FUOTA in TTI, but i have some problems with timing.

I have an issue with Schedule time in TTI, in order to Send Firmware packets I use a MQTT client that publish in MQTT API in TTI, all is working ok.
(FUOTA Server) MQTT client publish the message—> MQTT server receive it—> Network server manage it and send it to Gateway–> End device receive it
The issue is that the time between the Network Server receive it and schedule it in Gateway is almost 2 seconds. ( I am working in DR3 = 400 ms of transmision) The time that i save changing from DR0 to DR3 is lost in Network Server internal task, Is there any way to improve it?

At fuota the packages are available in advance.
When the update is sent to a single device, all packets can be queued and the network server takes care of the delivery on its own.
With multicast, the devices are in class c mode and the receive window gets irrelevant.

Downlinks can also be scheduled for a specific time when they should be sent.

Thanks for your response Christoph,

How can i schedule multicast downlink for a specific time? ( i would like to schedule it as soon as possible)

When you create a downlink json object add “absolute_time”.
Here is a link to the documentation: Message ApplicationDownlink.ClassBC

Here is how to complete a mac settings PUT request for schedule_downlinks
Thanks for your help Christoph…

  curl --location \
  --header 'Authorization: Bearer NNSXS.(API_TOKEN)' \
  --header 'Content-Type: application/json' \
  --request PUT \
  --data-raw '{
   "end_device":{
	  "mac_settings":{
	  "schedule_downlinks": true
	}},
    "field_mask": {
      "paths": [
        "mac_settings.schedule_downlinks"
      ]
    }
  }' \
  'https://(thingsstackURL).com/api/v3/ns/applications/application-name/devices/device-name'