Skip to content

Instantly share code, notes, and snippets.

@themadinventor
Created December 7, 2016 13:47
Show Gist options
  • Select an option

  • Save themadinventor/0b486cf2521c407a1dadb3ada8ff1d18 to your computer and use it in GitHub Desktop.

Select an option

Save themadinventor/0b486cf2521c407a1dadb3ada8ff1d18 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
import usb.core
import usb.util
class BusError(Exception):
pass
class USBI(object):
USBI_VID = 0x0456
USBI_PID = 0x7031
CMD_WRITE = 0xb2
CMD_WRITE_READ = 0xb3
CMD_READ = 0xb4
CMD_CHECK_WRITE = 0xb5
CMD_CHECK_READ = 0xb6
CMD_RESET = 0xb7
CMD_POWERBOARD = 0xb8
CMD_LED = 0xb9
CMD_RESET_TOGGLE = 0xba
def __init__(self):
self.dev = usb.core.find(idVendor=self.USBI_VID,
idProduct=self.USBI_PID)
if self.dev is None:
raise ValueError('USBI device not found')
try:
self.dev.set_configuration()
except Exception as e:
print(e)
def write(self, chip, addr, data):
msg = bytes((addr >> 8, addr & 0xff)) + data
self.dev.ctrl_transfer(0x40, self.CMD_WRITE, chip, 0, msg)
if self.dev.ctrl_transfer(0xc0, self.CMD_CHECK_WRITE, chip, 0, 1)[0] !=1:
raise BusError()
def read(self, chip, addr, length):
msg = bytes((addr >> 8, addr & 0xff))
self.dev.ctrl_transfer(0x40, self.CMD_WRITE_READ, chip, 0, msg)
if self.dev.ctrl_transfer(0xc0, self.CMD_CHECK_WRITE, chip, 0, 1)[0] !=1:
raise BusError()
d = self.dev.ctrl_transfer(0xc0, self.CMD_READ, chip, 0, length)
if self.dev.ctrl_transfer(0xc0, self.CMD_CHECK_READ, chip, 0, 1)[0] !=1:
raise BusError()
return d
if __name__ == '__main__':
d = USBI()
d.write(0x34, 0x081c, b'\x00\x80')
d.write(0x34, 0x0820, b'\x00\x00\x00')
d.write(0x34, 0x0821, b'\x00\x22\x00')
d.write(0x34, 0x0808, b'\x00\x00')
print(d.read(0x34, 0x0800, 4))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment