IBM BSC CRC?

Mattis Lind mattislind at gmail.com
Sun Jan 26 13:58:48 CST 2020


Hello IBM BSC Experts!

I am trying to figure out the CRC algorithm used by IBM BSC. I have tried a
lot of different settings in crcreveng but not getting a match.

I am pretty convinced that the CRC-16 used by IBM was
  16          15       2
x      +   x     +   x     +  1
This would give the polynomial 8005.
Anyone against this statement?

But what was the initial value?

I have two actual messages from equipment employing IBM BSC:
32016CD90240404070032688
and
32016CD90240C84050030D28

>From this document (
http://bitsavers.trailing-edge.com/pdf/ibm/datacomm/GA27-3004-2_General_Information_Binary_Synchronous_Communications_Oct70.pdf
)
I get that the CRC calculation is reset on SOH (01h) or STX (02h) and
accumulates until and including the ETX (03h). (excluding any SYN (32h)
characters).

I have tried crcreveng back and forth and I am not getting the CRC bytes
right.
I think I have tried most things, different bit order, different initial
values. But nothing.

I also tried the mode in crcreveng where it searches for matches but it
always says "no models found". Maybe I am doing something wrong when using
crcreveng?

Any clues? Surely there are someone out there that has been around for some
time and knows this, right?

On the topic of crc reveng I tried to verify how it works by using some
kind of known value: This article
https://stackoverflow.com/questions/23638939/crc-16-ibm-reverse-lookup-in-c

has a specific example where a certain data in (75h) with initial value
90f1h gives output 6390h. I tried to get crc reveng to do the same, but
failed. There has to be some option I simply do not understand. I tried
most combinations.

/Mattis


More information about the cctalk mailing list