ironduke wrote:Way late to the party but I just started looking at BCMs.. this might help out someone..
load the file into a hex editor, highlight everything but the first 2 bytes(08 D8) and then get your checksums for the selection..
Find the sum of the Big-Endian 16-bit values and get the last 2 bytes.. (f728)
checksum = ~f728 + 1 This would give you the 08D8 that's right at the start of the file..
I am unable to get f728 what hex editor should I use? I have Hxd. I don’t see any option for big Indian check sum 16. I highlighted everything but the two bytes. And choose every type of 16 bit checksum I could find and never came up with f728? Every time I tried a 16 style checksum only only got 2 bytes. But you say take the last two bytes? So do you mean to use a 32 bit check sum that outputs 4 bytes? Example ffff bbbb and then take the bbbb and add 1?
Also I’m not sure how adding 1 to f728 becomes 08D8? How is this math done? Wouldn’t it be f729?
Thanks Jamie
I've been using Hex editor Neo but I know others have a checksum feature as well.. I never figured out the CVN the original poster was looking for so I don't think I have all the asnwers, but..
If I hightlight every byte except for the first 2 (08D8) and perform checksums against the selected data the sum of the Big-endian 16 bit values is shows as 0xff728..
Now I use the last 4 or 0xF728 or 1111 0111 0010 1000 in binary..
the little ~ that I used before is the bitwise NOT symbol which is the equivelent of ones compliment.. you flip all the 1's and zeros.. ~0000111 is 11110000 ... got it??
2's compliment is basically flipping all the 1's to zeros and the zeros to 1's.. and then adding 1 to it.. I don't know why or how or anything else other than the result, lol..
so 1111 0111 0010 1000 using the ~ or NOT function becomes 0000 1000 1101 0111 or 0x08d7... Now we need to add 1 to get 0000 1000 1101 1000 or 0x8d8..
if you use your hex editor and select everything but the first 2 bytes and perform the checksum routines what are you getting for results?
Thank you that now works neo was the ticket!! You Rock! I don’t think the bcms have a stored cvn?
Just GM uses it for their own calculations?
Hex editor hxd doesn’t have an option for big Indian sum 16
04colyZQ8 wrote:I can segment swap certain GM BCMs. I have a educated guess as to certain booleens are for, trouble is I can't figure out how to calculate the checksum (CVN) I've tried flashing without updated checksums and it bricks at 98%, but then is recoverable with GM SPS. The bins I have to don't show the CVns from GMs website? So I don't know they are calculating the checksums? It's likely some kind of CRC-16?
Here is a 2006 hummer H3 BCM stock lighting segment bin file. F2 E8 FA = the segment part number (15919354) Gm says the CVN is 0000E920 but I can't find that in the code, and I cannot calculate that value using 8, 16, CRC, so what gives? I'd guess the 08 D8 to be the checksum location (first 2 bytes) but I also can't figure out how that's calculated.