The LinkADRReq payload enables unexpected uplink channels


Yes, If you set ENABLE_UPLINK_CHANNELS=0-7,The LoRa Server will send block of maccommands to disable all channels first. And second, LoRa Server send block of maccommands to enable the channels that your select, channels 0-7.

So make sure your sub-band 1 which is channels:0-7. And then make sure your flag ENABLE_UPLINK_CHANNELS are correct. If correct the LoRa server should result in something like this in the logs:

INFO[0000] disabling all channels
INFO[0000] enabling channel block first_channel=0 last_channel=7

And I’m sorry, my english is not good, I worry about are not very good in communicating with you, So this is for your reference only.


Thanks, that makes sense. Although since this is a global configuration setting, it means I am limited to a single uplink channel configuration right? For example, if I wanted to add a second gateway on sub-band 2, this would only be possible with a second network server.


The ENABLE_UPLINK_CHANNELS acts as configuration for your devices, not for your gateways. So when you would have two gateways one listening on 0-7 the other 8-15 you would set this value to 0-15. Note that after changing this configuration, LoRa Server will directly re-configure your devices from 0-7 to 0-15 on the first possible receive-window :slight_smile:


Ok, but let’s say I have one gateway which only has devices on sub-band 1 and another gateway in a different location which only has devices on sub-band 2. In this case 0-15 would not be ideal since any given device can only use the 8 channels available on the gateway.


Yes, in that case you need to setup two LoRa Server instances (as you have practically two different networks with different channel plans). Note that these still can be managed from a single LoRa App Server instance.


This seems like something that could be assigned through the device profile. Would that be possible? Thanks for the information and keep up the great work!


Actually I believe the service or device profile has a channel mask field. The behavior (and format) however is not documented in the backend interfaces specification…


in my .toml:

but code:
chMask[c%16] = true,
when c=10,[c%16]==4,
when c=36,[c%16]==4,

chMaskCntl = c / 16
when c=10,chMaskCntl==0,
when c=36,chMaskCntl==2,

Will cover? There is an error?