Skip to content

Commit 7d863e0

Browse files
committed
firmware: workaround for 'No ack' error on XBee 3 DigiMesh remote firmware updates
After sending the explicit frame with the 'Upgrade end response' command, the received transmit status always has a 'No acknowledgement received' error (0x01) instead of a 'Success' (0x00). This happens for 3004 or lower firmware versions at least. The workaround considers as valid the 'No ack' error only for DigiMesh firmwares. https://jira.digi.com/browse/XBHAWKDM-796 Signed-off-by: Tatiana Leon <tatiana.leon@digi.com>
1 parent 4a0bad4 commit 7d863e0

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

digi/xbee/firmware.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2468,7 +2468,20 @@ def _finish_firmware_update(self):
24682468
continue
24692469
_log.debug("Received 'Upgrade end response' status frame: %s" %
24702470
status_frame.transmit_status.description)
2471-
if status_frame.transmit_status != TransmitStatus.SUCCESS:
2471+
2472+
# Workaround for 'No ack' error on XBee 3 DigiMesh remote firmware updates
2473+
#
2474+
# After sending the explicit frame with the 'Upgrade end response' command,
2475+
# the received transmit status always has a 'No acknowledgement received'
2476+
# error (0x01) instead of a 'Success' (0x00). This happens for 3004 or lower
2477+
# firmware versions at least.
2478+
# The workaround considers as valid the 'No ack' error only for DigiMesh firmwares.
2479+
#
2480+
# See https://jira.digi.com/browse/XBHAWKDM-796
2481+
dm_ack_error = (status_frame.transmit_status == TransmitStatus.NO_ACK
2482+
and self._remote_device.get_protocol() == XBeeProtocol.DIGI_MESH)
2483+
2484+
if status_frame.transmit_status != TransmitStatus.SUCCESS and not dm_ack_error:
24722485
retries -= 1
24732486
continue
24742487
try:

0 commit comments

Comments
 (0)