#!/usr/bin/env python eeprom_data = [ 0x01, 0x00, 0x0d, 0x00, 0xee, 0x0c, 0xe8, 0x03, 0x44, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x39, 0x39, 0x2d, 0x38, 0x33, 0x33, 0x31, 0x30, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x2d, 0x44, 0x30, 0x30, 0x20, 0x48, 0x2e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x92, 0xf6, 0x4b, 0x04, 0x00, 0x60, 0x92, 0xf6, 0x4b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x92, 0xf6, 0x4b, 0x04, 0x00, 0x31, 0x34, 0x32, 0x33, 0x38, 0x31, 0x39, 0x30, 0x32, 0x33, 0x33, 0x35, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x56, 0x43, 0x42, 0x1c, 0x00, 0x4d, 0x31, 0x00, 0x00, 0x5f, 0x92, 0xf6, 0x4b, 0x04, 0x00, 0x60, 0x92, 0xf6, 0x4b, 0x04, 0x00, 0x61, 0x92, 0xf6, 0x4b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ] #crc=0xcf def AddToCRC(b, crc): b2 = b if (b < 0): b2 = b + 256 for i in range(8): odd = ((b2^crc) & 1) == 1 crc >>= 1 b2 >>= 1 if (odd): crc ^= 0x8C # This means crc ^= 140. return crc def CalculateCRC(data): crc = 0 for b in data: crc = AddToCRC(b, crc) return crc print("crc: 0x%02x" % CalculateCRC(eeprom_data)) # prints crc: 0xcf