示例#1
0
def gpio_readi(dev):
    buff = bulk2(dev, "\x03", target=2)
    validate_readv((
            "\x31\x00",
            "\x71\x04",
            "\x71\x00",
            
            # SM
            "\x30\x00",
            "\x30\x04",
            ),
            buff, "packet 128/129")
    return struct.unpack('<H', buff)[0]
示例#2
0
def sm_read(dev):
    buff = bulk2(dev, "\x0E\x02", target=0x20)
    validate_readv((
              "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
              "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
              "\xFF",
              
              # Socket module
              # 00000000  11 00 53 4D 34 38 44 00  00 00 00 00 00 00 5D F4  |..SM48D.......].|
              # 00000010  39 FF 00 00 00 00 00 00  00 00 00 00 00 00 62 6C  |9.............bl|
              "\x11\x00\x53\x4D\x34\x38\x44\x00\x00\x00\x00\x00\x00\x00\x5D\xF4" \
              "\x39\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x6C",
              ),
              buff, "packet 136/137")
    # Don't throw exception on no SM for now?)
    # since it will break other code
    if buff == '\xFF' * 32:
        return None
    
    up = list(struct.unpack(SM1_FMT, buff))
    up[1] = up[1].replace('\x00', '')
    return SM1(*up)
示例#3
0
def replay_setup(dev):
    bulkRead, bulkWrite, controlRead, controlWrite = usb_wraps(dev)


    # Verified that control request allows bulk to be read
    # Generated from packet 281/282
    # None (0xB0)
    buff = controlRead(0xC0, 0xB0, 0x0000, 0x0000, 4096)
    # NOTE:: req max 4096 but got 3
    validate_read("\x00\x00\x00", buff, "packet 281/282")
    buff = bulk86(dev, target=1)
    validate_read("\x16", buff, "packet 283/284")
    
    # Generated from packet 285/286
    buff = bulk2(dev, "\x01", target=0x85)
    validate_readv((
              "\x84\xA4\x06\x02\x00\x26\x00\x43\x00\xC0\x03\x00\x08\x10\x24"
              "\x00\x00\x30\x00\x83\x00\x30\x01\x09\x00\xC0\x00\x00\x00\x09\x00"
              "\x08\x00\xFF\x00\xC4\x1E\x00\x00\xCC\x1E\x00\x00\xB4\x46\x00\x00"
              "\xD0\x1E\x00\x00\xC0\x1E\x01\x00\xB0\x1E\x01\x00\x00\x00\x30\x55"
              "\x01\x00\x00\x00\x00\x00\x02\x00\x80\x01\xD0\x01\x02\x00\x01\x00"
              "\x00\x00\x56\x10\x00\x00\xA0\x25\x00\x00\x84\x25\x00\x00\x00\x00"
              "\x01\x00\x7C\x25\x00\x00\x7E\x25\x00\x00\x80\x25\x00\x00\x74\x46"
              "\x00\x00\x38\x11\x00\x00\x3C\x11\x00\x00\x40\x11\x00\x00\x44\x11"
              "\x00\x00\xC0\x1E\x00\x00",

            "\x84\xA4\x06\x02\x00\x26\x00\x43\x00\xC0\x03\x00\x08\x10\x24\x00" \
            "\x00\x30\x00\x83\x00\x30\x01\x09\x00\xC0\x00\x00\x00\x09\x00\x08" \
            "\x00\xFF\x00\xC4\x1E\x00\x00\xCC\x1E\x00\x00\xB4\x46\x00\x00\xD0" \
            "\x1E\x00\x00\xC0\x1E\x01\x00\xB0\x1E\x01\x00\x00\x00\x30\x55\x01" \
            "\x00\x00\x00\x00\x00\x02\x00\x80\x01\xC0\x01\x02\x00\x01\x00\x00" \
            "\x00\x56\x10\x00\x00\xA0\x25\x00\x00\x84\x25\x00\x00\x00\x00\x01" \
            "\x00\x7C\x25\x00\x00\x7E\x25\x00\x00\x80\x25\x00\x00\x74\x46\x00" \
            "\x00\x38\x11\x00\x00\x3C\x11\x00\x00\x40\x11\x00\x00\x44\x11\x00" \
            "\x00\xC0\x1E\x00\x00"),
              
              buff, "packet 287/288")
    
    # Generated from packet 289/290
    buff = bulk2(dev, "\x43\x19\x00\x00\x00\x3B\x7E\x25\x00\x00\xFE\xFF\x3B\x7C\x25\x00"
              "\x00\xFE\xFF\x00", target=2)
    validate_read("\xA4\x06", buff, "packet 291/292")
    
    # Generated from packet 293/294
    buff = bulk2(dev, "\x01", target=0x85)
    validate_readv((
              "\x84\xA4\x06\x02\x00\x26\x00\x43\x00\xC0\x03\x00\x08\x10\x24"
              "\x00\x00\x30\x00\x83\x00\x30\x01\x09\x00\xC0\x00\x00\x00\x09\x00"
              "\x08\x00\xFF\x00\xC4\x1E\x00\x00\xCC\x1E\x00\x00\xB4\x46\x00\x00"
              "\xD0\x1E\x00\x00\xC0\x1E\x01\x00\xB0\x1E\x01\x00\x00\x00\x30\x55"
              "\x01\x00\x00\x00\x00\x00\x02\x00\x80\x01\xD0\x01\x02\x00\x01\x00"
              "\x00\x00\x56\x10\x00\x00\xA0\x25\x00\x00\x84\x25\x00\x00\x00\x00"
              "\x01\x00\x7C\x25\x00\x00\x7E\x25\x00\x00\x80\x25\x00\x00\x74\x46"
              "\x00\x00\x38\x11\x00\x00\x3C\x11\x00\x00\x40\x11\x00\x00\x44\x11"
              "\x00\x00\xC0\x1E\x00\x00",
              
            "\x84\xA4\x06\x02\x00\x26\x00\x43\x00\xC0\x03\x00\x08\x10\x24\x00" \
            "\x00\x30\x00\x83\x00\x30\x01\x09\x00\xC0\x00\x00\x00\x09\x00\x08" \
            "\x00\xFF\x00\xC4\x1E\x00\x00\xCC\x1E\x00\x00\xB4\x46\x00\x00\xD0" \
            "\x1E\x00\x00\xC0\x1E\x01\x00\xB0\x1E\x01\x00\x00\x00\x30\x55\x01" \
            "\x00\x00\x00\x00\x00\x02\x00\x80\x01\xC0\x01\x02\x00\x01\x00\x00" \
            "\x00\x56\x10\x00\x00\xA0\x25\x00\x00\x84\x25\x00\x00\x00\x00\x01" \
            "\x00\x7C\x25\x00\x00\x7E\x25\x00\x00\x80\x25\x00\x00\x74\x46\x00" \
            "\x00\x38\x11\x00\x00\x3C\x11\x00\x00\x40\x11\x00\x00\x44\x11\x00" \
            "\x00\xC0\x1E\x00\x00"
              ), buff, "packet 295/296")
    
    # Generated from packet 297/298
    buff = bulk2(dev, "\x0E\x00", target = 0x20)
    validate_read("\x3A\x00\x90\x32\xA7\x02\x2A\x86\x01\x95\x3C\x36\x90\x00\x1F"
              "\x00\x01\x00\xD6\x05\x01\x00\x72\x24\x22\x39\x00\x00\x00\x00\x27"
              "\x1F", buff, "packet 299/300")
    
    # Generated from packet 301/302
    buff = bulk2(dev, "\x14\x38\x25\x00\x00\x04\x00\x90\x32\x90\x00\xA7\x02\x1F\x00\x14"
              "\x40\x25\x00\x00\x01\x00\x3C\x36\x0E\x01", target=0x20)
    validate_read("\x14\x00\x54\x41\x38\x34\x56\x4C\x56\x5F\x46\x58\x34\x00\x00"
              "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3E"
              "\x2C", buff, "packet 303/304")
    
    # Generated from packet 305/306
    gpio_readi(dev)

    
    # Generated from packet 309/310
    gpio_readi(dev)

    
    # Generated from packet 313/314
    sm_read(dev)
    
    # Generated from packet 317/318
    buff = bulk2(dev, "\x01", target=0x85)
    validate_readv((
              "\x84\xA4\x06\x02\x00\x26\x00\x43\x00\xC0\x03\x00\x08\x10\x24"
              "\x00\x00\x30\x00\x83\x00\x30\x01\x09\x00\xC0\x00\x00\x00\x09\x00"
              "\x08\x00\xFF\x00\xC4\x1E\x00\x00\xCC\x1E\x00\x00\xB4\x46\x00\x00"
              "\xD0\x1E\x00\x00\xC0\x1E\x01\x00\xB0\x1E\x01\x00\x00\x00\x30\x55"
              "\x01\x00\x00\x00\x00\x00\x02\x00\x80\x01\xD0\x01\x02\x00\x01\x00"
              "\x00\x00\x56\x10\x00\x00\xA0\x25\x00\x00\x84\x25\x00\x00\x00\x00"
              "\x01\x00\x7C\x25\x00\x00\x7E\x25\x00\x00\x80\x25\x00\x00\x74\x46"
              "\x00\x00\x38\x11\x00\x00\x3C\x11\x00\x00\x40\x11\x00\x00\x44\x11"
              "\x00\x00\xC0\x1E\x00\x00", 
              
              # SM
            "\x84\xA4\x06\x02\x00\x26\x00\x43\x00\xC0\x03\x00\x08\x10\x24\x00" \
            "\x00\x30\x00\x83\x00\x30\x01\x09\x00\xC0\x00\x00\x00\x09\x00\x08" \
            "\x00\xFF\x00\xC4\x1E\x00\x00\xCC\x1E\x00\x00\xB4\x46\x00\x00\xD0" \
            "\x1E\x00\x00\xC0\x1E\x01\x00\xB0\x1E\x01\x00\x00\x00\x30\x55\x01" \
            "\x00\x00\x00\x00\x00\x02\x00\x80\x01\xC0\x01\x02\x00\x01\x00\x00" \
            "\x00\x56\x10\x00\x00\xA0\x25\x00\x00\x84\x25\x00\x00\x00\x00\x01" \
            "\x00\x7C\x25\x00\x00\x7E\x25\x00\x00\x80\x25\x00\x00\x74\x46\x00" \
            "\x00\x38\x11\x00\x00\x3C\x11\x00\x00\x40\x11\x00\x00\x44\x11\x00" \
            "\x00\xC0\x1E\x00\x00"
              ), buff, "packet 319/320")

    # Generated from packet 321/322
    bulkWrite(0x02, "\x43\x19\x00\x00\x00")
    
    # Generated from packet 323/324
    bulkWrite(0x02, "\x20\x01\x00\x0C\x04")
    
    # Generated from packet 325/326
    bulkWrite(0x02, "\x41\x00\x00")
    
    # Generated from packet 327/328
    buff = bulk2(dev, "\x10\x80\x02", target=6)
    validate_read("\x80\x00\x00\x00\x09\x00", buff, "packet 329/330")
    
    # Generated from packet 331/332
    buff = bulk2(dev, "\x45\x01\x00\x00\x31\x00\x06", target=0x64)
    validate_read("\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
              "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
              "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
              "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
              "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
              "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
              "\xFF\xFF\xFF\xFF\xFF", buff, "packet 333/334")
    
    # Generated from packet 335/336
    buff = bulk2(dev, "\x49", target=2)
    validate_read("\x0F\x00", buff, "packet 337/338")
    
    # Generated from packet 339/340
    gpio_readi(dev)

    
    # Generated from packet 343/344
    gpio_readi(dev)


    '''
    For kicks tried:
    bulk2(dev, "\x0E\x01", target=0x20)
    00000000  14 00 54 41 38 34 56 4C  56 5F 46 58 34 00 00 00  |..TA84VLV_FX4...|
    TA84VLV_FX4
    Is this some sort of special FX4 socket configuration?
    Looks like an EEPROM read
    maybe just reading some random memory buffer though
    '''

    # Generated from packet 347/348
    sm_read(dev)
    
    # Generated from packet 351/352
    bulkWrite(0x02, "\x3B\x0C\x22\x00\xC0\x40\x00\x3B\x0E\x22\x00\xC0\x00\x00\x3B\x1A"
              "\x22\x00\xC0\x18\x00")
    
    # Generated from packet 353/354
    buff = bulk2(dev, "\x4A\x03\x00\x00\x00", target=2)
    validate_read("\x03\x00", buff, "packet 355/356")
    
    # Generated from packet 357/358
    bulkWrite(0x02, "\x4C\x00\x02")
    
    # Generated from packet 359/360
    # None (0xB2)
    controlWrite(0x40, 0xB2, 0x0000, 0x0000, "")
    
    # Generated from packet 361/362
    bulkWrite(0x02, "\x50\x45\x00\x00\x00")
    
    # Generated from packet 363/364
    buff = bulk2(dev,
              "\xE9\x03\x00\x00\x00\x90\x00\x00\xE9\x03\x00\x00\x00\x90\x01\x10"
              "\xE9\x03\x00\x00\x00\x90\x00\x00\xE9\x03\x00\x00\x00\x90\x01\x80"
              "\xE9\x02\x00\x00\x00\x90\x00\xE9\x04\x00\x00\x00\x00\x00\x00\x00"
              "\xE9\x03\x00\x00\x00\x90\x00\x00\x66\xB9\x00\x00\xB2\x00\xFB\xFF"
              "\x25\x44\x11\x00\x00",
              target=2, truncate=True)
    validate_read("\x80\x00", buff, "packet 365/366")
    
    # Generated from packet 367/368
    buff = bulk2(dev, "\x02", target=6, truncate=True)
    validate_read("\x81\x00\x50\x00\x09\x00", buff, "packet 369/370")
    
    # Generated from packet 371/372
    bulkWrite(0x02, "\x50\xC0\x00\x00\x00")
    
    # Generated from packet 373/374
    buff = bulk2(dev,
              "\x66\xB8\x01\x2D\x81\xE3\xFF\xFF\x00\x00\x66\xBB\x18\x00\x66\xC7"
              "\x05\x30\x40\x00\xC0\xF0\xFF\x89\xD9\xC1\xE1\x02\x66\xC7\x81\x02"
              "\x00\x00\x00\xF0\xFF\x66\x03\x05\xE4\x46\x00\x00\x66\x89\x05\x90"
              "\x40\x00\xC0\x89\xDA\x81\xCA\x00\x80\x00\x00\x66\x89\x15\x50\x40"
              "\x00\xC0\xC6\x05\x14\x22\x00\xC0\x7B\x81\xCA\x00\x40\x00\x00\x66"
              "\x89\x15\x50\x40\x00\xC0\x89\xD9\x66\xC1\xE1\x02\x66\x89\x81\x00"
              "\x00\x00\x00\x66\x2B\x05\xE4\x46\x00\x00\xC6\x05\x14\x22\x00\xC0"
              "\xBB\x81\xCB\x00\x80\x00\x00\x66\x89\x1D\x50\x40\x00\xC0\x89\xC2"
              "\x81\xE2\x07\x00\x00\x00\x03\xD2\x81\xCA\x01\x00\x00\x00\x89\xD9"
              "\x81\xE1\x03\x00\x00\x00\xD3\xE2\xD3\xE2\xD3\xE2\xD3\xE2\xD3\xE2"
              "\xC1\xE2\x0A\x89\xD9\x81\xE1\xFC\x03\x00\x00\x09\xCA\x88\x82\x00"
              "\x00\x00\x40\x66\xB9\x00\x00\xB2\x00\xFB\xFF\x25\x44\x11\x00\x00",
              target=2, truncate=True)
    validate_read("\x81\x00", buff, "packet 375/376")
    
    # Generated from packet 377/378
    buff = bulk2(dev, "\x02", target=6, truncate=True)
    validate_read("\x82\x00\x10\x01\x09\x00", buff, "packet 379/380")
    
    # Generated from packet 381/382
    buff = bulk2(dev, "\x04\x63\x05\x72\x06\x69\x07\x70\x08\x74\x09\x20\x0A\x74\x0B\x79"
              "\x57\x81\x00\x0C\x02\x30", target=2, truncate=True)
    validate_read("\x02\x00", buff, "packet 383/384")

    # When paired with below looping fails on average maybe about 3 iterations
    # (about 1 - 8 observed)
    # 31/71 bit changes
    # Generated from packet 385/386
    buff = bulk2(dev, "\x20\x01\x00\x2B\x3B\x0C\x22\x00\xC0\x40\x00\x3B\x0E\x22\x00\xC0"
              "\x00\x00\x3B\x1A\x22\x00\xC0\x18\x00\x0E\x01", target=0x20, truncate=True)
    validate_read(
              "\x14\x00\x54\x41\x38\x34\x56\x4C\x56\x5F\x46\x58\x34\x00\x00"
              "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3E"
              "\x2C",
              buff, "packet 387/388")
        
    # 30k iterations by itself and always passes
    # Generated from packet 389/390
    gpio_readi(dev)

    
    # Generated from packet 393/394
    gpio_readi(dev)

    
    # Generated from packet 397/398
    sm_read(dev)
    
    # Generated from packet 401/402
    bulkWrite(0x02, "\x48\x00\x20\x00\x00\x50\x12\x00\x00\x00")
    
    # Generated from packet 403/404
    buff = bulk2(dev, 
              "\x00\x00\x00\x00\x04\x00\x08\x00\x0C\x00\x10\x00\x14\x00\x18\x00"
              "\x1C\x00",
              target=2, truncate=True)
    validate_read("\x82\x00", buff, "packet 405/406")
    
    # Generated from packet 407/408
    buff = bulk2(dev, "\x02", target=6, truncate=True)
    validate_read("\x83\x00\x30\x01\x09\x00", buff, "packet 409/410")
    
    # Generated from packet 411/412
    buff = bulk2(dev,
              "\x1D\x10\x01\x09\x00\x00\x00\x15\x60\x00\x00\x00\x00\x00\x00\x00"
              "\x00\x00\x00\x00\x00\x00\x1C\x00\x00\x48\x00\x12\xAA",
              target=1, truncate=True)
    validate_read("\xAB", buff, "packet 413/414")
示例#4
0
def replay_setup(dev):
    bulkRead, bulkWrite, controlRead, controlWrite = usb_wraps(dev)

    # Verified that control request allows bulk to be read
    # Generated from packet 281/282
    # None (0xB0)
    buff = controlRead(0xC0, 0xB0, 0x0000, 0x0000, 4096)
    # NOTE:: req max 4096 but got 3
    validate_read("\x00\x00\x00", buff, "packet 281/282")
    buff = bulk86(dev, target=1)
    validate_read("\x16", buff, "packet 283/284")

    # Generated from packet 285/286
    buff = bulk2(dev, "\x01", target=0x85)
    validate_readv((
              "\x84\xA4\x06\x02\x00\x26\x00\x43\x00\xC0\x03\x00\x08\x10\x24"
              "\x00\x00\x30\x00\x83\x00\x30\x01\x09\x00\xC0\x00\x00\x00\x09\x00"
              "\x08\x00\xFF\x00\xC4\x1E\x00\x00\xCC\x1E\x00\x00\xB4\x46\x00\x00"
              "\xD0\x1E\x00\x00\xC0\x1E\x01\x00\xB0\x1E\x01\x00\x00\x00\x30\x55"
              "\x01\x00\x00\x00\x00\x00\x02\x00\x80\x01\xD0\x01\x02\x00\x01\x00"
              "\x00\x00\x56\x10\x00\x00\xA0\x25\x00\x00\x84\x25\x00\x00\x00\x00"
              "\x01\x00\x7C\x25\x00\x00\x7E\x25\x00\x00\x80\x25\x00\x00\x74\x46"
              "\x00\x00\x38\x11\x00\x00\x3C\x11\x00\x00\x40\x11\x00\x00\x44\x11"
              "\x00\x00\xC0\x1E\x00\x00",

            "\x84\xA4\x06\x02\x00\x26\x00\x43\x00\xC0\x03\x00\x08\x10\x24\x00" \
            "\x00\x30\x00\x83\x00\x30\x01\x09\x00\xC0\x00\x00\x00\x09\x00\x08" \
            "\x00\xFF\x00\xC4\x1E\x00\x00\xCC\x1E\x00\x00\xB4\x46\x00\x00\xD0" \
            "\x1E\x00\x00\xC0\x1E\x01\x00\xB0\x1E\x01\x00\x00\x00\x30\x55\x01" \
            "\x00\x00\x00\x00\x00\x02\x00\x80\x01\xC0\x01\x02\x00\x01\x00\x00" \
            "\x00\x56\x10\x00\x00\xA0\x25\x00\x00\x84\x25\x00\x00\x00\x00\x01" \
            "\x00\x7C\x25\x00\x00\x7E\x25\x00\x00\x80\x25\x00\x00\x74\x46\x00" \
            "\x00\x38\x11\x00\x00\x3C\x11\x00\x00\x40\x11\x00\x00\x44\x11\x00" \
            "\x00\xC0\x1E\x00\x00"),

              buff, "packet 287/288")

    # Generated from packet 289/290
    buff = bulk2(
        dev, "\x43\x19\x00\x00\x00\x3B\x7E\x25\x00\x00\xFE\xFF\x3B\x7C\x25\x00"
        "\x00\xFE\xFF\x00",
        target=2)
    validate_read("\xA4\x06", buff, "packet 291/292")

    # Generated from packet 293/294
    buff = bulk2(dev, "\x01", target=0x85)
    validate_readv((
              "\x84\xA4\x06\x02\x00\x26\x00\x43\x00\xC0\x03\x00\x08\x10\x24"
              "\x00\x00\x30\x00\x83\x00\x30\x01\x09\x00\xC0\x00\x00\x00\x09\x00"
              "\x08\x00\xFF\x00\xC4\x1E\x00\x00\xCC\x1E\x00\x00\xB4\x46\x00\x00"
              "\xD0\x1E\x00\x00\xC0\x1E\x01\x00\xB0\x1E\x01\x00\x00\x00\x30\x55"
              "\x01\x00\x00\x00\x00\x00\x02\x00\x80\x01\xD0\x01\x02\x00\x01\x00"
              "\x00\x00\x56\x10\x00\x00\xA0\x25\x00\x00\x84\x25\x00\x00\x00\x00"
              "\x01\x00\x7C\x25\x00\x00\x7E\x25\x00\x00\x80\x25\x00\x00\x74\x46"
              "\x00\x00\x38\x11\x00\x00\x3C\x11\x00\x00\x40\x11\x00\x00\x44\x11"
              "\x00\x00\xC0\x1E\x00\x00",

            "\x84\xA4\x06\x02\x00\x26\x00\x43\x00\xC0\x03\x00\x08\x10\x24\x00" \
            "\x00\x30\x00\x83\x00\x30\x01\x09\x00\xC0\x00\x00\x00\x09\x00\x08" \
            "\x00\xFF\x00\xC4\x1E\x00\x00\xCC\x1E\x00\x00\xB4\x46\x00\x00\xD0" \
            "\x1E\x00\x00\xC0\x1E\x01\x00\xB0\x1E\x01\x00\x00\x00\x30\x55\x01" \
            "\x00\x00\x00\x00\x00\x02\x00\x80\x01\xC0\x01\x02\x00\x01\x00\x00" \
            "\x00\x56\x10\x00\x00\xA0\x25\x00\x00\x84\x25\x00\x00\x00\x00\x01" \
            "\x00\x7C\x25\x00\x00\x7E\x25\x00\x00\x80\x25\x00\x00\x74\x46\x00" \
            "\x00\x38\x11\x00\x00\x3C\x11\x00\x00\x40\x11\x00\x00\x44\x11\x00" \
            "\x00\xC0\x1E\x00\x00"
              ), buff, "packet 295/296")

    # Generated from packet 297/298
    buff = bulk2(dev, "\x0E\x00", target=0x20)
    validate_read(
        "\x3A\x00\x90\x32\xA7\x02\x2A\x86\x01\x95\x3C\x36\x90\x00\x1F"
        "\x00\x01\x00\xD6\x05\x01\x00\x72\x24\x22\x39\x00\x00\x00\x00\x27"
        "\x1F", buff, "packet 299/300")

    # Generated from packet 301/302
    buff = bulk2(
        dev, "\x14\x38\x25\x00\x00\x04\x00\x90\x32\x90\x00\xA7\x02\x1F\x00\x14"
        "\x40\x25\x00\x00\x01\x00\x3C\x36\x0E\x01",
        target=0x20)
    validate_read(
        "\x14\x00\x54\x41\x38\x34\x56\x4C\x56\x5F\x46\x58\x34\x00\x00"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3E"
        "\x2C", buff, "packet 303/304")

    # Generated from packet 305/306
    gpio_readi(dev)

    # Generated from packet 309/310
    gpio_readi(dev)

    # Generated from packet 313/314
    sm_read(dev)

    # Generated from packet 317/318
    buff = bulk2(dev, "\x01", target=0x85)
    validate_readv((
              "\x84\xA4\x06\x02\x00\x26\x00\x43\x00\xC0\x03\x00\x08\x10\x24"
              "\x00\x00\x30\x00\x83\x00\x30\x01\x09\x00\xC0\x00\x00\x00\x09\x00"
              "\x08\x00\xFF\x00\xC4\x1E\x00\x00\xCC\x1E\x00\x00\xB4\x46\x00\x00"
              "\xD0\x1E\x00\x00\xC0\x1E\x01\x00\xB0\x1E\x01\x00\x00\x00\x30\x55"
              "\x01\x00\x00\x00\x00\x00\x02\x00\x80\x01\xD0\x01\x02\x00\x01\x00"
              "\x00\x00\x56\x10\x00\x00\xA0\x25\x00\x00\x84\x25\x00\x00\x00\x00"
              "\x01\x00\x7C\x25\x00\x00\x7E\x25\x00\x00\x80\x25\x00\x00\x74\x46"
              "\x00\x00\x38\x11\x00\x00\x3C\x11\x00\x00\x40\x11\x00\x00\x44\x11"
              "\x00\x00\xC0\x1E\x00\x00",

              # SM
            "\x84\xA4\x06\x02\x00\x26\x00\x43\x00\xC0\x03\x00\x08\x10\x24\x00" \
            "\x00\x30\x00\x83\x00\x30\x01\x09\x00\xC0\x00\x00\x00\x09\x00\x08" \
            "\x00\xFF\x00\xC4\x1E\x00\x00\xCC\x1E\x00\x00\xB4\x46\x00\x00\xD0" \
            "\x1E\x00\x00\xC0\x1E\x01\x00\xB0\x1E\x01\x00\x00\x00\x30\x55\x01" \
            "\x00\x00\x00\x00\x00\x02\x00\x80\x01\xC0\x01\x02\x00\x01\x00\x00" \
            "\x00\x56\x10\x00\x00\xA0\x25\x00\x00\x84\x25\x00\x00\x00\x00\x01" \
            "\x00\x7C\x25\x00\x00\x7E\x25\x00\x00\x80\x25\x00\x00\x74\x46\x00" \
            "\x00\x38\x11\x00\x00\x3C\x11\x00\x00\x40\x11\x00\x00\x44\x11\x00" \
            "\x00\xC0\x1E\x00\x00"
              ), buff, "packet 319/320")

    # Generated from packet 321/322
    bulkWrite(0x02, "\x43\x19\x00\x00\x00")

    # Generated from packet 323/324
    bulkWrite(0x02, "\x20\x01\x00\x0C\x04")

    # Generated from packet 325/326
    bulkWrite(0x02, "\x41\x00\x00")

    # Generated from packet 327/328
    buff = bulk2(dev, "\x10\x80\x02", target=6)
    validate_read("\x80\x00\x00\x00\x09\x00", buff, "packet 329/330")

    # Generated from packet 331/332
    buff = bulk2(dev, "\x45\x01\x00\x00\x31\x00\x06", target=0x64)
    validate_read(
        "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
        "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
        "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
        "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
        "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
        "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
        "\xFF\xFF\xFF\xFF\xFF", buff, "packet 333/334")

    # Generated from packet 335/336
    buff = bulk2(dev, "\x49", target=2)
    validate_read("\x0F\x00", buff, "packet 337/338")

    # Generated from packet 339/340
    gpio_readi(dev)

    # Generated from packet 343/344
    gpio_readi(dev)
    '''
    For kicks tried:
    bulk2(dev, "\x0E\x01", target=0x20)
    00000000  14 00 54 41 38 34 56 4C  56 5F 46 58 34 00 00 00  |..TA84VLV_FX4...|
    TA84VLV_FX4
    Is this some sort of special FX4 socket configuration?
    Looks like an EEPROM read
    maybe just reading some random memory buffer though
    '''

    # Generated from packet 347/348
    sm_read(dev)

    # Generated from packet 351/352
    bulkWrite(
        0x02,
        "\x3B\x0C\x22\x00\xC0\x40\x00\x3B\x0E\x22\x00\xC0\x00\x00\x3B\x1A"
        "\x22\x00\xC0\x18\x00")

    # Generated from packet 353/354
    buff = bulk2(dev, "\x4A\x03\x00\x00\x00", target=2)
    validate_read("\x03\x00", buff, "packet 355/356")

    # Generated from packet 357/358
    bulkWrite(0x02, "\x4C\x00\x02")

    # Generated from packet 359/360
    # None (0xB2)
    controlWrite(0x40, 0xB2, 0x0000, 0x0000, "")

    # Generated from packet 361/362
    bulkWrite(0x02, "\x50\x45\x00\x00\x00")

    # Generated from packet 363/364
    buff = bulk2(
        dev, "\xE9\x03\x00\x00\x00\x90\x00\x00\xE9\x03\x00\x00\x00\x90\x01\x10"
        "\xE9\x03\x00\x00\x00\x90\x00\x00\xE9\x03\x00\x00\x00\x90\x01\x80"
        "\xE9\x02\x00\x00\x00\x90\x00\xE9\x04\x00\x00\x00\x00\x00\x00\x00"
        "\xE9\x03\x00\x00\x00\x90\x00\x00\x66\xB9\x00\x00\xB2\x00\xFB\xFF"
        "\x25\x44\x11\x00\x00",
        target=2,
        truncate=True)
    validate_read("\x80\x00", buff, "packet 365/366")

    # Generated from packet 367/368
    buff = bulk2(dev, "\x02", target=6, truncate=True)
    validate_read("\x81\x00\x50\x00\x09\x00", buff, "packet 369/370")

    # Generated from packet 371/372
    bulkWrite(0x02, "\x50\xC0\x00\x00\x00")

    # Generated from packet 373/374
    buff = bulk2(
        dev, "\x66\xB8\x01\x2D\x81\xE3\xFF\xFF\x00\x00\x66\xBB\x18\x00\x66\xC7"
        "\x05\x30\x40\x00\xC0\xF0\xFF\x89\xD9\xC1\xE1\x02\x66\xC7\x81\x02"
        "\x00\x00\x00\xF0\xFF\x66\x03\x05\xE4\x46\x00\x00\x66\x89\x05\x90"
        "\x40\x00\xC0\x89\xDA\x81\xCA\x00\x80\x00\x00\x66\x89\x15\x50\x40"
        "\x00\xC0\xC6\x05\x14\x22\x00\xC0\x7B\x81\xCA\x00\x40\x00\x00\x66"
        "\x89\x15\x50\x40\x00\xC0\x89\xD9\x66\xC1\xE1\x02\x66\x89\x81\x00"
        "\x00\x00\x00\x66\x2B\x05\xE4\x46\x00\x00\xC6\x05\x14\x22\x00\xC0"
        "\xBB\x81\xCB\x00\x80\x00\x00\x66\x89\x1D\x50\x40\x00\xC0\x89\xC2"
        "\x81\xE2\x07\x00\x00\x00\x03\xD2\x81\xCA\x01\x00\x00\x00\x89\xD9"
        "\x81\xE1\x03\x00\x00\x00\xD3\xE2\xD3\xE2\xD3\xE2\xD3\xE2\xD3\xE2"
        "\xC1\xE2\x0A\x89\xD9\x81\xE1\xFC\x03\x00\x00\x09\xCA\x88\x82\x00"
        "\x00\x00\x40\x66\xB9\x00\x00\xB2\x00\xFB\xFF\x25\x44\x11\x00\x00",
        target=2,
        truncate=True)
    validate_read("\x81\x00", buff, "packet 375/376")

    # Generated from packet 377/378
    buff = bulk2(dev, "\x02", target=6, truncate=True)
    validate_read("\x82\x00\x10\x01\x09\x00", buff, "packet 379/380")

    # Generated from packet 381/382
    buff = bulk2(
        dev, "\x04\x63\x05\x72\x06\x69\x07\x70\x08\x74\x09\x20\x0A\x74\x0B\x79"
        "\x57\x81\x00\x0C\x02\x30",
        target=2,
        truncate=True)
    validate_read("\x02\x00", buff, "packet 383/384")

    # When paired with below looping fails on average maybe about 3 iterations
    # (about 1 - 8 observed)
    # 31/71 bit changes
    # Generated from packet 385/386
    buff = bulk2(
        dev, "\x20\x01\x00\x2B\x3B\x0C\x22\x00\xC0\x40\x00\x3B\x0E\x22\x00\xC0"
        "\x00\x00\x3B\x1A\x22\x00\xC0\x18\x00\x0E\x01",
        target=0x20,
        truncate=True)
    validate_read(
        "\x14\x00\x54\x41\x38\x34\x56\x4C\x56\x5F\x46\x58\x34\x00\x00"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3E"
        "\x2C", buff, "packet 387/388")

    # 30k iterations by itself and always passes
    # Generated from packet 389/390
    gpio_readi(dev)

    # Generated from packet 393/394
    gpio_readi(dev)

    # Generated from packet 397/398
    sm_read(dev)

    # Generated from packet 401/402
    bulkWrite(0x02, "\x48\x00\x20\x00\x00\x50\x12\x00\x00\x00")

    # Generated from packet 403/404
    buff = bulk2(
        dev, "\x00\x00\x00\x00\x04\x00\x08\x00\x0C\x00\x10\x00\x14\x00\x18\x00"
        "\x1C\x00",
        target=2,
        truncate=True)
    validate_read("\x82\x00", buff, "packet 405/406")

    # Generated from packet 407/408
    buff = bulk2(dev, "\x02", target=6, truncate=True)
    validate_read("\x83\x00\x30\x01\x09\x00", buff, "packet 409/410")

    # Generated from packet 411/412
    buff = bulk2(
        dev, "\x1D\x10\x01\x09\x00\x00\x00\x15\x60\x00\x00\x00\x00\x00\x00\x00"
        "\x00\x00\x00\x00\x00\x00\x1C\x00\x00\x48\x00\x12\xAA",
        target=1,
        truncate=True)
    validate_read("\xAB", buff, "packet 413/414")