Identify USB device and discover its name and port

Download latest PyUSB from :

Place file “pyusb-1.0.0b2.tar.gz” on your desktop

gunzip <pyusb-1.0.0b2.tar.gz |tar xvfp -
cd pyusb-1.0.0b2
sudo ./ install

Make a new python script with the following code — don’t forget your #! line

import usb
busses = usb.busses()
for bus in busses:
    devices = bus.devices
    for devi in devices:
        print "Device:", devi.filename

def print_internals(dev):
    for attrib in dir(dev):
        if not attrib.startswith('_') and not attrib == 'configurations':
            x=getattr(dev, attrib)
            print "  ", attrib, x
    for config in dev.configurations:
        for attrib in dir(config):
            if not attrib.startswith('_'):
                x=getattr(config, attrib)

import usb
busses = usb.busses()
for bus in busses:
  devices = bus.devices
  for dev in devices:
    _name = usb.util.get_string(,256,2) 
    print "device name=",_name
    print "Device:", dev.filename
    print "  Device class:",dev.deviceClass
    print "  Device sub class:",dev.deviceSubClass
    print "  Device protocol:",dev.deviceProtocol
    print "  Max packet size:",dev.maxPacketSize
    print "  idVendor:",hex(dev.idVendor)
    print "  idProduct:",hex(dev.idProduct)
    print "  Device Version:",dev.deviceVersion
    for config in dev.configurations:
      print "  Configuration:", config.value
      print "    Total length:", config.totalLength 
      print "    selfPowered:", config.selfPowered
      print "    remoteWakeup:", config.remoteWakeup
      print "    maxPower:", config.maxPower
      for intf in config.interfaces:
        print "    Interface:",intf[0].interfaceNumber
        for alt in intf:
          print "    Alternate Setting:",alt.alternateSetting
          print "      Interface class:",alt.interfaceClass
          print "      Interface sub class:",alt.interfaceSubClass
          print "      Interface protocol:",alt.interfaceProtocol
          for ep in alt.endpoints:
            print "      Endpoint:",hex(ep.address)
            print "        Type:",ep.type
            print "        Max packet size:",ep.maxPacketSize
            print "        Interval:",ep.interval

Save the file,  change permissions and run.

We now know the name of our USB device and we can write an if/then line in our script to give the usb port location (filename) to our Hex/Serial code in order to speak with our Satellite USB device.


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.