This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Hash mismatching when performing DFU over BLE with Node.js

Got this error while trying to perform a DFU over BLE (noble) on a raspberry pi 3. The peripheral should be running  v15.

Error message for known extended error code from DFU target: The hash of the received firmware image does not match the hash in the init packet.

Here is the partial log just before the error:

Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 10 10 10 10>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 20 00 07 03 20 04 17 02 01 08 57 10 40 80 00 00 00 1c c6 03 00 e0 c4>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 03 00 f4 c5 03 00 53 75 6e 00 4d 6f 6e 00 54 75 65 00 57 65 64 00 54>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 68 75 00 46 72 69 00 53 61 74 00 00 00 00 00 4a 61 6e 00 46 65 62 00>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 4d 61 72 00 41 70 72 00 4d 61 79 00 4a 75 6e 00 4a 75 6c 00 41 75 67>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 00 53 65 70 00 4f 63 74 00 4e 6f 76 00 44 65 63 00 00 00 00 00 41 4d>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 00 50 4d 00 00 00 18 c6 03 00 14 c6 03 00 14 c6 03 00 14 c6 03 00 14>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer c6 03 00 14 c6 03 00 14 c6 03 00 14 c6 03 00 14 c6 03 00 14 c6 03 00>
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport PRN hit, expecting CRC
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  recv <--  <Buffer 60 03 01 08 65 01 00 40 11 a9 eb>
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport Parsed DFU response packet: opcode  3 , payload:  <Buffer 08 65 01 00 40 11 a9 eb>
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport PRN checksum OK at offset 91400 (0x16508) (0xeba91140)
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00 00 54 c5 03 00 84 c4 03>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 00 90 c5 03 00 a4 c4 03 00 d8 c4 03 00 38 c5 03 00 e8 c5 03 00 44 c5>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 03 00 25 6d 2f 25 64 2f 25 79 00 00 00 00 25 61 20 25 62 20 25 65 20>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 25 54 20 25 59 00 00 53 75 6e 64 61 79 00 4d 6f 6e 64 61 79 00 54 75>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 65 73 64 61 79 00 57 65 64 6e 65 73 64 61 79 00 54 68 75 72 73 64 61>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 79 00 46 72 69 64 61 79 00 53 61 74 75 72 64 61 79 00 00 00 00 4a 61>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 6e 75 61 72 79 00 46 65 62 72 75 61 72 79 00 4d 61 72 63 68 00 41 70>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 72 69 6c 00 4d 61 79 00 4a 75 6e 65 00 4a 75 6c 79 00 41 75 67 75 73>
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport PRN hit, expecting CRC
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  recv <--  <Buffer 60 03 01 c0 65 01 00 aa 87 20 7a>
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport Parsed DFU response packet: opcode  3 , payload:  <Buffer c0 65 01 00 aa 87 20 7a>
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport PRN checksum OK at offset 91584 (0x165c0) (0x7a2087aa)
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 74 00 53 65 70 74 65 6d 62 65 72 00 4f 63 74 6f 62 65 72 00 4e 6f 76>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 65 6d 62 65 72 00 44 65 63 65 6d 62 65 72 00 00 00 25 48 3a 25 4d 3a>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 25 53 00 00 00 00 3d 96 03 00 59 96 03 00 65 96 03 00 71 96 03 00 8d>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 96 03 00 99 96 03 00 a5 96 03 00 b3 96 03 00 00 00 00 00 2e 00 00 00>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 43 00 00 00 50 4f 53 49 58 00 00 00 30 31 32 33 34 35 36 37 38 39 61>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 62 63 64 65 66 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 28 6e>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 75 6c 6c 29 00 00 44 a2 03 00 00 00 00 00 00 00 00 00 00 00 00 00 a4>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer a3 03 00 ac a3 03 00 b4 a3 03 00 bc a3 03 00 c4 a3 03 00 cc a3 03 00>
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport PRN hit, expecting CRC
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  recv <--  <Buffer 60 03 01 78 66 01 00 6b 0e 86 cf>
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport Parsed DFU response packet: opcode  3 , payload:  <Buffer 78 66 01 00 6b 0e 86 cf>
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport PRN checksum OK at offset 91768 (0x16678) (0xcf860e6b)
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer d4 a3 03 00 dc a3 03 00 e4 a3 03 00 ec a3 03 00 f4 a3 03 00 fc a3 03>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 00 04 a4 03 00 00 00 00 00 00 20 00 40 00 00 00 00 00 20 00 40 00 00>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b4 2a 00 20 00>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0 2a 00 20 00 90 d0 03>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer f4 3b 00 20 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 00 00 00 00 00 78 2b 00 20 00 00 00 00 ff ff 14 00 01 00 02 00 d0 3c>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer 00 20 1f 00 00 00 01 00 00 00 78 c4 03 00 78 c4 03 00 78 c4 03 00 78>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  data -->  <Buffer c4 03 00 78 c4 03 00>
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport PRN hit, expecting CRC
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  recv <--  <Buffer 60 03 01 20 67 01 00 ef bb ac 62>
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport Parsed DFU response packet: opcode  3 , payload:  <Buffer 20 67 01 00 ef bb ac 62>
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport PRN checksum OK at offset 91936 (0x16720) (0x62acbbef)
Wed, 23 Jan 2019 10:01:44 GMT dfu:transport Payload type fully transferred, requesting explicit checksum
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport Request CRC explicitly
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  ctrl -->  <Buffer 03>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  recv <--  <Buffer 60 03 01 20 67 01 00 ef bb ac 62>
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport Parsed DFU response packet: opcode  3 , payload:  <Buffer 20 67 01 00 ef bb ac 62>
Wed, 23 Jan 2019 10:01:44 GMT dfu:transport Explicit checksum OK at 91936 bytes
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport Execute (mark payload chunk as ready)
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  ctrl -->  <Buffer 04>
Wed, 23 Jan 2019 10:01:44 GMT dfu:noble  recv <--  <Buffer 60 04 0b 0c>
Wed, 23 Jan 2019 10:01:44 GMT dfu:prntransport 524 undefined
Wed, 23 Jan 2019 10:01:44 GMT dfu:error Error type is 2.
Wed, 23 Jan 2019 10:01:44 GMT dfu:error This is an extended error message.

I wonder where is the "initial hash" get calculated and sent?

PS: the same content has been posted to GitHub: github.com/.../44

Related