I'm having trouble getting the string descriptor of a USB device. What I'm looking for is human-friendly names of manufacturers and products. I use libusb-1.0 as the backend and can get the manufacturer name using the provided libusb testing program, so I know that it exists.
The PyUSB help file says that you can access usb_get_string_simple (from the libusb backend) using:
get_string (dev, length, index, langid = None)
Retrieve a string descriptor from the device. dev is the Device object to which the request will be sent to. length is the length of string in number of characters. index is the string descriptor index and langid is the Language ID of the descriptor. If langid is omitted, the string descriptor of the first Language ID will be returned. The return value is the unicode string present in the descriptor.
import usb #help(usb.core) busses = usb.busses() for bus in busses: devices = bus.devices for dev in devices: _name = usb.util.get_string(dev.dev,256,0) #This is where I'm having trouble 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
Any help would be appreciated.