It seems usb1 is expecting the full string descriptor whereas libusb seems to returning only the string part.
If I hack the code at or around line 1350 to not check for the DT_STRING type and return the full result instead of just a subset it works as expected.
manufacturer_string = device.getManufacturer()
File "/usr/local/lib/python3.4/dist-packages/usb1/__init__.py", line 1961, in getManufacturer
self.device_descriptor.iManufacturer)
File "/usr/local/lib/python3.4/dist-packages/usb1/__init__.py", line 1953, in _getASCIIStringDescriptor
return self.open().getASCIIStringDescriptor(descriptor)
File "/usr/local/lib/python3.4/dist-packages/usb1/__init__.py", line 1351, in getASCIIStringDescriptor
raise ValueError('Invalid string descriptor')
ValueError: Invalid string descriptor
It seems usb1 is expecting the full string descriptor whereas libusb seems to returning only the string part.
If I hack the code at or around line 1350 to not check for the DT_STRING type and return the full result instead of just a subset it works as expected.