Install pyUSB 1.x latest version

pyUSB is an excellent Python package that can significantly simplify USB programming. For most Linux distributions there are packages only for older versions of pyUSB, but since it is actively developed you probably want to have the latest version on your system.

First of all, make sure one of libusb-0.1, libusb-1.0 or openusb is installed – currently libusb-1.0 is installed as default on most Linux systems.

Download the latest package by visiting the pyUSB website and clicking on the tar.gz folder icon.

If you have an older version of pyUSB already installed, you may want to remove it:

sudo apt-get remove python-usb

Install the Python package manager and then use it to install the freshly downloaded pyUSB package:

sudo apt-get install python-pip
sudo pip install --upgrade ~/Downloads/walac-pyusb-1.0.0b1-52-g452880f.tar.gz

To check that the version you have just installed is accessed by default:

laczik@laptop$ python
Python 2.7.3 (default, Feb 27 2014, 20:00:17) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import usb
>>> print usb.__version__
1.0.0b2
>>> exit()

To get help/information, use the built-in help function:

laczik@laptop$ python
Python 2.7.3 (default, Feb 27 2014, 20:00:17) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import usb.core
>>> help(usb.core)
[ ... ]
>>> help(usb.core.Device)
[ ... ]
>>> exit()

Finally, an example of how easy USB programming is with pyUSB:

laczik@laptop$ python
Python 2.7.3 (default, Feb 27 2014, 20:00:17) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import usb.core
>>> import usb.util
>>> for dev in usb.core.find(find_all=True):
...   print dev
... 
DEVICE ID 04d8:feaa on Bus 007 Address 063 =================
 bLength                :   0x12 (18 bytes)
 bDescriptorType        :    0x1 Device
 bcdUSB                 :  0x200 USB 2.0
 bDeviceClass           :   0xff Vendor-specific
 bDeviceSubClass        :   0xff
 bDeviceProtocol        :   0xff
 bMaxPacketSize0        :   0x40 (64 bytes)
 idVendor               : 0x04d8
 idProduct              : 0xfeaa
 bcdDevice              :  0x414 Device 4.14
 iManufacturer          :    0x1 RB+AG
 iProduct               :    0x2 P8
 iSerialNumber          :    0x0 
 bNumConfigurations     :    0x1
  CONFIGURATION 1: 250 mA ==================================
   bLength              :    0x9 (9 bytes)
   bDescriptorType      :    0x2 Configuration
   wTotalLength         :   0x20 (32 bytes)
   bNumInterfaces       :    0x1
   bConfigurationValue  :    0x1
   iConfiguration       :    0x0 
   bmAttributes         :   0xc0 Self Powered
   bMaxPower            :   0x7d (250 mA)
    INTERFACE 0: Vendor Specific ===========================
     bLength            :    0x9 (9 bytes)
     bDescriptorType    :    0x4 Interface
     bInterfaceNumber   :    0x0
     bAlternateSetting  :    0x0
     bNumEndpoints      :    0x2
     bInterfaceClass    :   0xff Vendor Specific
     bInterfaceSubClass :   0xff
     bInterfaceProtocol :   0xff
     iInterface         :    0x0 
      ENDPOINT 0x1: Bulk OUT ===============================
       bLength          :    0x7 (7 bytes)
       bDescriptorType  :    0x5 Endpoint
       bEndpointAddress :    0x1 OUT
       bmAttributes     :    0x2 Bulk
       wMaxPacketSize   :   0x40 (64 bytes)
       bInterval        :    0x0
      ENDPOINT 0x81: Bulk IN ===============================
       bLength          :    0x7 (7 bytes)
       bDescriptorType  :    0x5 Endpoint
       bEndpointAddress :   0x81 IN
       bmAttributes     :    0x2 Bulk
       wMaxPacketSize   :   0x40 (64 bytes)
       bInterval        :    0x0
DEVICE ID 1d6b:0001 on Bus 007 Address 000 =================
 bLength                :   0x12 (18 bytes)
[ ... detailed list of all other USB devices found ... ]
>>> exit()

4 thoughts on “Install pyUSB 1.x latest version”

  1. I am very new to the world of systems and softwares and trying to learn my way around the prepherials while using Ubuntu. Anyway, addressing my usb’s was a huge problem and could not work out what was wrong until I came across this page.
    After following the instructions here I have resolved my problem and connected my smart phone to prove to myself that I can see it.
    On reflection my problem was in not removing the old version of python-usb files. Executing sudo apt-get remove python-usb resolved my issues.

    Thank you so much for great help.
    Darius

  2. after trying the last (final) example en got the following error
    can you help me on what’s wrong and how to solve it?

    File “/usr/lib/python2.7/site-packages/usb/core.py”, line 864, in find
    raise ValueError(‘No backend available’)

  3. Thanks for this. I was struggling with this. Somehow stumbled upon your page and found exactly what I was looking for.

    Thanks for this amazing and easy to follow blog.
    George

Leave a Reply

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