This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC1350: Change channel of gateway collector after network is established

Part Number: CC1350

We are using beacon mode in our networks and want to be able to change the channel of a network while is is already running.

At networks startup the gateway scans and selects the channel with the least energy available and stores this in the file nv-simulation.bin.

But sometimes after a while the RF interference changes and another channel is better.

How can I let the collector rescan the channels and select a new one?

And how do the devices in the network change to that new channel? Will orphan scan detect the beacons on the new channel and remember the association?

We don't want to use frequency hopping as the beacon mode allows better power consumption.

  • Hey Marijn,

    There's some useful insight regarding something similar in this post: https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz/f/156/t/655480?CC1310-15-4-Stack-Can-sensor-device-using-Active-Scan-to-select-the-right-network-in-Beacon-mode.

    Marijn Achterkamp said:
    And how do the devices in the network change to that new channel? Will orphan scan detect the beacons on the new channel and remember the association?

    This is the bigger concern with this approach. As mentioned in the linked post, the sensors will become out of sync and will not know which channel was chosen and will not switch the channel on their own. The orphan scan will scan on the channel that was established originally. 

    This is a complicated process and I will try and provide some further insight. From a high level, you essentially need to let all the sensors know which channel you are moving to. You can send a simple data message, or modify the beacons. If modifying the beacons, I would send a few consecutive beacons before changing the channel because you don't want your sensors to miss this critical information. Once the collector changes it's channel, the sensors will also have to change their channel (in a similar way as was done on the collector). Here you need to ensure the orphaned sensors are sending orphan notifications on the new channel.

    Another approach could be to have the collector disassociate from its sensors. You can modify the disassociate message to include the new channel to switch to. Then, you can just call the start event in Sensor_process and act like you're forming a new network.

    For a large network, this may not result in power saving as restarting the network and going back into scanning mode consumes more power. Imagine doing this whenever you found a less busy channel. Depending on your environment, this could happen more often, making this approach less worth the return on its investment.

  • Hi Ammar,

    Thanks for the clarification.

    I think that sending a new channel (maybe via beacons) is the best approach then. The collector can then wait for all devices to acknowledge the reception of the new channel. Then switch to the new channel.

    The function

    void Jdllc_rejoin(ApiMac_deviceDescriptor_t *pDevInfo,
                      Llc_netInfo_t *pParentInfo)

    seems most likely to do exactly what I need. Do a resync on the beacons and rejoin the network.

    Do you have any suggestion on how to change the channel on the collector?

  • Just to reiterate, further analysis will be required to determine if you will be saving power using this method as opposed to FH mode. This use case is out of our example specifications and thus has not been tested by TI.

    Marijn Achterkamp said:
    Do you have any suggestion on how to change the channel on the collector?

    To change the channel, simply call this API:

    ApiMac_mlmeSetReqUint8(ApiMac_attribute_logicalChannel, newChannel);

    If you'd like to find the best channel, you may have to restart the energyDetect scan as done when the device starts.