Hi,
Each Element, identified by a Unicast Address, in a mesh network must always use a higher Sequence Number then was used previously from the same address (those are stored in the Reply Protection List on Relay Nodes and nodes that processed each message from that Element).
This "last Sequence Number" isn't stored in JSON, and it is not exported, as it changes too quickly. It is, however, stored locally on the phone, so after the app is restarted, the last Seq Num is loaded. When you export/import a mesh network on a phone that doesn't have this Sequence Number stored for this given Unicast Address, such a node would start sending messages with Seq Num = 0. They are discarded on all other nodes until they are greater than what they knew before. This is expected behavior.
A solution is to use a unique Provisioner on each phone. Before exporting user shall create a new Provisioner in nRF Mesh / Settings / Provisioners, assign it a unique Unicast Address and range of addresses for unicast addresses, groups, and scenes, and only then export the network. On the other phone, which imports the network, you will be asked to select which Provisioner instance shall be assigned to that phone. You need to select the new Provisioner from which address no message has yet been sent. The 2nd phone is free to transmit messages with Seq Num = 0, other nodes will add this source address to their RPL.
It is also possible to export mesh network config with a subset of nodes, and a subset of Provisioners. I.e. user can select only the 2nd Provisioner to be exported. The 2nd phone, upon import, will simply assign that Provisioner instance to itself, as there's no other choice. Such "partial" export prevents this new phone to send a Config message to the 1st phone, i.e., a Config Node Reset (which requires the Device Key of the 1st Provisioner's Node).
Why does changing the unicast address of the provisioner not work? Am I missing something?
This should be sufficient, given they changed to a new address, which was never* used.
*-never expires when the IV Index changes high enough that it can be reused.
Regards,
Amanda H.
Hi,
Each Element, identified by a Unicast Address, in a mesh network must always use a higher Sequence Number then was used previously from the same address (those are stored in the Reply Protection List on Relay Nodes and nodes that processed each message from that Element).
This "last Sequence Number" isn't stored in JSON, and it is not exported, as it changes too quickly. It is, however, stored locally on the phone, so after the app is restarted, the last Seq Num is loaded. When you export/import a mesh network on a phone that doesn't have this Sequence Number stored for this given Unicast Address, such a node would start sending messages with Seq Num = 0. They are discarded on all other nodes until they are greater than what they knew before. This is expected behavior.
A solution is to use a unique Provisioner on each phone. Before exporting user shall create a new Provisioner in nRF Mesh / Settings / Provisioners, assign it a unique Unicast Address and range of addresses for unicast addresses, groups, and scenes, and only then export the network. On the other phone, which imports the network, you will be asked to select which Provisioner instance shall be assigned to that phone. You need to select the new Provisioner from which address no message has yet been sent. The 2nd phone is free to transmit messages with Seq Num = 0, other nodes will add this source address to their RPL.
It is also possible to export mesh network config with a subset of nodes, and a subset of Provisioners. I.e. user can select only the 2nd Provisioner to be exported. The 2nd phone, upon import, will simply assign that Provisioner instance to itself, as there's no other choice. Such "partial" export prevents this new phone to send a Config message to the 1st phone, i.e., a Config Node Reset (which requires the Device Key of the 1st Provisioner's Node).
Why does changing the unicast address of the provisioner not work? Am I missing something?
This should be sufficient, given they changed to a new address, which was never* used.
*-never expires when the IV Index changes high enough that it can be reused.
Regards,
Amanda H.
A solution is to use a unique Provisioner on each phone.
This should be sufficient, given they changed to a new address, which was never* used.
Hi,
We need to test this. Ideally, step 8 should not set the address to 0006; it should be 0001 as it was before.
-Amanda H.