Programming USB devices from Java applications using jUSB

Click here Java USB Api Download 

The jUSB API includes the following packages:
  • usb.core: This package is the core part of the jUSB API. It allows Java applications to access USB devices from USB hosts.
  • usb.linux: This package contains a Linux implementation of a usb.core.Host object, bootstrapping support, and other classes leveraging Linux USB support. This implementation accesses the USB devices through the virtual USB device file system (usbdevfs).
  • This package has a Windows implementation of a usb.core.Host object, bootstrapping support, and other classes leveraging Windows USB support. This implementation is still in its very early stage.
  • usb.remote: This package is a remote version of the usb.core API. It includes an RMI proxy and a daemon application, which allow Java applications to access USB devices on a remote computer.
  • usb.util: This package provides some useful utilities to download firmware to USB devices, dump the content of the USB system into XML, and convert a USB device with only bulk I/O into a socket.
  • usb.devices: This optional package collects Java code to access a variety of USB devices with the jUSB API, including Kodak digital cameras and Rio 500 MP3 Players. These APIs were specially written to simplify the process of accessing the designated USB devices and cannot be used to access other devices. The APIs were built upon the usb.core APIs, and they will work on any operating system where jUSB is supported.
  • usb.view: This optional package provides a simple USB tree browser based on Swing. It is a very good example program illustrating the use of the jUSB API.
Although the implementation of the usb.core.Host object varies from operating system to operating system, a Java programmer needs to understand only the usb.core package to start developing applications with the jUSB APIs. 

// Comment
import usb.core.*;
public class ListUSB
    public static void main(String[] args)
            // Bootstrap by getting the USB Host from the HostFactory.
            Host   host = HostFactory.getHost();
            // Obtain a list of the USB buses available on the Host.
            Bus[]  bus  = host.getBusses();
            int    total_bus = bus.length;
            // Traverse through all the USB buses.
            for (int i=0; i<total_bus; i++)
                // Access the root hub on the USB bus and obtain the
                // number of USB ports available on the root hub.
                Device root = bus[i].getRootHub();
                int total_port = root.getNumPorts();
                // Traverse through all the USB ports available on the 
                // root hub. It should be mentioned that the numbering 
                // starts from 1, not 0.
                for (int j=1; j<=total_port; j++)
                    // Obtain the Device connected to the port.
                    Device device = root.getChild(j);
                     if (device != null)
       // Obtain the current Configuration of the device and the number of 
       // Interfaces available under the current Configuration.
       Configuration config = device.getConfiguration();
       int total_interface = config.getNumInterfaces();
       // Traverse through the Interfaces
       for (int k=0; k<total_interface; k++)
           // Access the currently Interface and obtain the number of 
           // endpoints available on the Interface. 
           Interface itf = config.getInterface(k, 0);
           int total_ep  = itf.getNumEndpoints();
           // Traverse through all the endpoints.
           for (int l=0; l<total_ep; l++)
               // Access the endpoint, and obtain its I/O type.
               Endpoint ep = itf.getEndpoint(l);
               String io_type = ep.getType();
               boolean input  = ep.isInput();
               // If the endpoint is an input endpoint, obtain its
               // InputStream and read in data.
               if (input)
                   InputStream in;
                   in = ep.getInputStream();
                   // Read in data here
               // If the Endpoint is and output Endpoint, obtain its 
               // OutputStream and write out data.
                   OutputStream out;
                   out = ep.getOutputStream();
                   // Write out data here.
        } catch (Exception e)

test Web Developer


  1. hii...

    i was trying this code using netbeans 7.1.2 on windows 7 64 bit and kubuntu 64 bit, no error found. but cannot read my USB device. on library i was adding jUSB API.jar and when i running the code, i get notify like this >>>

    USB Host support is unavailable.
    BUILD SUCCESSFUL (total time: 0 seconds)

    actually my PC connected with 1 USB drive, 1 device with USB to serial device and 1 device with USB controller.

    can you tell me why

    thank you

  2. Your information about Java is useful for me to know more technical information. Really very informative post you shared here. Keep sharing this type of informative blog. If anyone wants to become a Java professional learn Java Training in Bangalore. Nowadays Java has tons of job opportunities for all professionals.

  3. Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here. Kindly keep blogging. If anyone wants to become a Java developer learn from Java Training in Chennai. or learn thru Java Online Training India . Nowadays Java has tons of job opportunities on various vertical industry.


Related Posts Plugin for WordPress, Blogger...