I hope someone can help to rectify the problem we have found with XBee3 802.15.4 devices.
We use older XB/XBP24 and new XBee3 devices in API 1 mode as a coordinator and an end devices.
We have ported our older XB/XPB24 driver code to work with XBee3 as some commands are not fully compatible (byte size of some command parameters differ) and it works OK.
Old XB/XBP24 devices work well without any issues while with the new XBee3s it give us headaches.
We have a coordinator (CE=1) and an end device (CE=0), end device waking up every 5 seconds (SP= 0x1F4, 500 dec) and stay awake for 1100ms (ST= 0x44C, 1100dec). The same parameters are set to both the coordinator and the end device. Coordinator is powered all the time SM=0. The end device has SM=5 and SO=2. Seems the SO option does not work the same way on XBee3 as on older XB/XBP24. While old XB/XBP24 wakes up regularly every 5 seconds the newer XBee3 does not. Changing SO=0 on XBee3 helps, however it sends sample indicator which we do not require at all. Setting SO to 0x102 (bit 8 set as per doc) also does not help, the device does not wake up. Seems the sampling must be enabled (SO=0) otherwise the device does not wake up.
Tested XBee3 firmware version VR=200B and VR=2006.
This can be tested on dev kit as well. Coordinator and end device settings in xml are dumped below.
Is there any way to suppress sending sample indicator and to be sure the XBee3 wakes up?
Unfortunately the version 200C suffers the same problem. As we have 200 devices in production already I did not have many options, so I had to diagnose the problem deeper myself. The issue points to retry parameter RR>0 in XBee3 modules only. We normally use RR=3 in XB/XBP24 and all modules work reliably. When RR=3 on XBee3 transmitting side the receiving XBee3 gets stuck for some reason and needs reboot. Setting RR to 0 helps to resolve the problem, however makes communication reliability worse, so not much win here :-(.
I am providing a simple table below explaining how XBee3 behave in networks with mixed XBee1 and XBee3 when RR=3.
Our devices use Xbee1/3 modules, I name them Device A and Device B:
Device A | Device B | functionality
XBee1 | Xbee1 | OK
XBee1 | Xbee3 | OK
XBee3 | Xbee1 | OK
XBee3 | Xbee3 | FAILS !!!
Device A sends the remote command ‘D7 go low’ to wake-up DEVICE B (we do not use CTS# in flow control).
This repeats couple of times within SP period until device B responds or this process times out. XBee module in device B wakes up regularly in 5 seconds intervals SP = 5000ms, ST= 1100ms, SM = 5. Does not matter what C8 value is. As mentioned above with RR=3 XBee3 fails in Device B and needs reboot.
I hope this helps others to resolve the same or similar problem.