dresden-elektronik / deconz-serial-protocol

deCONZ Serial Protocol
7 stars 2 forks source link

CRC calculation for Metadata (command 0x0D) is incorrect. #15

Closed pwielders closed 2 years ago

pwielders commented 2 years ago

Currently we have the Conbee2 (USB) dongle and the Raspbee (Serial) working on the RDK stack. However there are two observations we are currently working around.

Whenever the command 0x0D (Metadata) is issued, the stick response is sending 0x0A (Config read data). Looks like the CRC is assuming that the command 0x0D was actually used during the CRC calculation. The retrieval of the Watchdog shows (sometimes a similar CRC calculation failure) Any idea what could be the issue? I am using the latest firmware.

Full logs:

Serial device

[Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:747] DataFrame: Send: 0D:01:00:09:00:00:00:00:00:E9:FF [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:170] Error: CRC failed but worked around (metadata). : [11], Data: [0A:01:00:09:00:00:05:39:26:85:FF], [0xFF88] != [0xFF85] [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:763] DataFrame: Received: 0D:01:00:09:00:00:05:39:26 [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:764] Protocol: Metadata: Version: 38.57 Platform: "Conbee"

[Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:747] DataFrame: Send: 0A:02:00:08:00:01:00:01:EA:FF [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:763] DataFrame: Received: 0A:02:00:10:00:09:00:01:E7:41:01:FF:FF:2E:21:00 [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:764] Protocol: Read: Parameter "MAC Address"

[Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:747] DataFrame: Send: 0A:03:00:08:00:01:00:07:E3:FF [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:763] DataFrame: Received: 0A:03:00:0A:00:03:00:07:00:00 [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:764] Protocol: Read: Parameter "Network address"

[Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:747] DataFrame: Send: 0A:04:00:08:00:01:00:09:E0:FF [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:763] DataFrame: Received: 0A:04:00:09:00:02:00:09:01 [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:764] Protocol: Read: Parameter "APS Designed mode"

[Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:747] DataFrame: Send: 0A:05:00:08:00:01:00:22:C6:FF [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:763] DataFrame: Received: 0A:05:00:0A:00:03:00:22:0C:01 [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:764] Protocol: Read: Parameter "Protocol version"

[Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:747] DataFrame: Send: 0A:06:00:08:00:01:00:05:E2:FF [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:763] DataFrame: Received: 0A:06:00:0A:00:03:00:05:91:1B [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:764] Protocol: Read: Parameter "Network PAN Id"

[Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:747] DataFrame: Send: 0A:07:00:08:00:01:00:0A:DC:FF [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:763] DataFrame: Received: 0A:07:00:0C:00:05:00:0A:00:80:00:00 [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:764] Protocol: Read: Parameter "Channel mask"

[Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:747] DataFrame: Send: 0A:08:00:08:00:01:00:26:BF:FF [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:763] DataFrame: Received: 0A:08:00:0C:00:05:00:26:D5:09:00:00 [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:764] Protocol: Read: Parameter "Watchdog"

[Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:747] DataFrame: Send: 0B:09:00:0C:00:05:00:26:88:0E:00:00:1F:FF [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:763] DataFrame: Received: 0B:09:00:08:00:01:00:26 [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:764] Protocol: Write: Parameter "Watchdog" [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:356] Timer: Watchdog @ [2517] loaded with [3720] seconds, Reset @ [Mon, 03 Jan 2022 20:43:04 GMT] [Mon, 03 Jan 2022 20:43:04]:[Dresden.cpp:720] Timer: Next trigger in 3600000 milliseconds

USB device [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:747] DataFrame: Send: 0D:01:00:09:00:00:00:00:00:E9:FF [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:170] Error: CRC failed but worked around (metadata). : [11], Data: [0A:01:00:09:00:00:07:72:26:4A:FF], [0xFF4D] != [0xFF4A] [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:763] DataFrame: Received: 0D:01:00:09:00:00:07:72:26 [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:764] Protocol: Metadata: Version: 38.114 Platform: "Conbee2"

[Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:747] DataFrame: Send: 0A:02:00:08:00:01:00:01:EA:FF [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:763] DataFrame: Received: 0A:02:00:10:00:09:00:01:2F:89:04:FF:FF:2E:21:00 [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:764] Protocol: Read: Parameter "MAC Address"

[Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:747] DataFrame: Send: 0A:03:00:08:00:01:00:07:E3:FF [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:763] DataFrame: Received: 0A:03:00:0A:00:03:00:07:00:00 [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:764] Protocol: Read: Parameter "Network address"

[Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:747] DataFrame: Send: 0A:04:00:08:00:01:00:09:E0:FF [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:763] DataFrame: Received: 0A:04:00:09:00:02:00:09:01 [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:764] Protocol: Read: Parameter "APS Designed mode"

[Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:747] DataFrame: Send: 0A:05:00:08:00:01:00:22:C6:FF [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:763] DataFrame: Received: 0A:05:00:0A:00:03:00:22:0E:01 [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:764] Protocol: Read: Parameter "Protocol version"

[Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:747] DataFrame: Send: 0A:06:00:08:00:01:00:05:E2:FF [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:763] DataFrame: Received: 0A:06:00:0A:00:03:00:05:AF:DE [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:764] Protocol: Read: Parameter "Network PAN Id"

[Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:747] DataFrame: Send: 0A:07:00:08:00:01:00:0A:DC:FF [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:763] DataFrame: Received: 0A:07:00:0C:00:05:00:0A:00:80:00:00 [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:764] Protocol: Read: Parameter "Channel mask"

[Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:747] DataFrame: Send: 0A:08:00:08:00:01:00:26:BF:FF [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:170] Error: CRC failed but worked around (metadata). : [14], Data: [0A:08:00:0C:00:05:00:26:9B:0A:00:00:0F:FF], [0xFF12] != [0xFF0F] [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:763] DataFrame: Received: 0D:08:00:0C:00:05:00:26:9B:0A:00:00 [Mon, 03 Jan 2022 20:47:29]:[Dresden.cpp:764] Protocol: Metadata: Version: 155.38 Platform: ""

[Mon, 03 Jan 2022 20:47:32]:[Dresden.cpp:273] Error: Could not extract watchdog value from stick [ 21534740 us] Activation of plugin [ZigbeeControl]:[ZigbeeControl], failed. Error [Could not open the ZigbeeController link.]

Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: CRC failed but worked around (metadata). : [11], Data: [0A:01:00:09:00:00:05:39:26:85:FF], [0xFF88] != [0xFF85] Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Received: 0D:01:00:09:00:00:05:39:26 Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Metadata: Version: 38.57 Platform: "Conbee"

Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Send: 0A:02:00:08:00:01:00:01:EA:FF Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Received: 0A:02:00:10:00:09:00:01:E7:41:01:FF:FF:2E:21:00 Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Read: Parameter "MAC Address"

Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Send: 0A:03:00:08:00:01:00:07:E3:FF Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Received: 0A:03:00:0A:00:03:00:07:00:00 Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Read: Parameter "Network address"

Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Send: 0A:04:00:08:00:01:00:09:E0:FF Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Received: 0A:04:00:09:00:02:00:09:01 Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Read: Parameter "APS Designed mode"

Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Send: 0A:05:00:08:00:01:00:22:C6:FF Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Received: 0A:05:00:0A:00:03:00:22:0C:01 Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Read: Parameter "Protocol version"

Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Send: 0A:06:00:08:00:01:00:05:E2:FF Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Received: 0A:06:00:0A:00:03:00:05:91:1B Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Read: Parameter "Network PAN Id"

Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Send: 0A:07:00:08:00:01:00:0A:DC:FF Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Received: 0A:07:00:0C:00:05:00:0A:00:80:00:00 Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Read: Parameter "Channel mask"

Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Send: 0A:08:00:08:00:01:00:26:BF:FF Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Received: 0A:08:00:0C:00:05:00:26:89:0A:00:00 Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Read: Parameter "Watchdog"

Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Send: 0B:09:00:0C:00:05:00:26:88:0E:00:00:1F:FF Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Received: 0B:09:00:08:00:01:00:26 Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Write: Parameter "Watchdog" Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Watchdog @ [2697] loaded with [3720] seconds, Reset @ [Mon, 03 Jan 2022 21:00:06 GMT] Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [21:00:06]: Next trigger in 3600000 milliseconds Jan 3 21:00:06 buildroot user.notice /usr/bin/bridge[213]: [Mon, 03 Jan 2022 21:00:06]:[PluginServer.cpp:396]: Startup: Activated plugin [ZigbeeControl]:[ZigbeeControl]

pwielders commented 2 years ago

Just found out it was due to a terminal setting (options.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL) ) that changed the CR->LF. Toggled that termios setting and now it is all working like a charm ! Thanks for all the feedback/help.