usb- Communicate with USB devices

MaintainerBas van Dijk <>



This module provides functionality for enumerating the USB devices currently attached to the system.



data Device Source

Abstract type representing a USB device detected on the system.

You can only obtain a USB device from the getDevices function.

Certain operations can be performed on a device, but in order to do any I/O you will have to first obtain a DeviceHandle using openDevice. Alternatively you can use the usb-safe package which provides type-safe device handling. See:

Just because you have a reference to a device does not mean it is necessarily usable. The device may have been unplugged, you may not have permission to operate such device or another process or driver may be using the device.

To get additional information about a device you can retrieve its descriptor using deviceDesc.

Note that equality on devices is defined by comparing their descriptors: (==) = (==) `on` deviceDesc

getDevices :: Ctx -> IO [Device]Source

Returns a list of USB devices currently attached to the system.

This is your entry point into finding a USB device.


busNumber :: Device -> Word8Source

The number of the bus that a device is connected to.

deviceAddress :: Device -> Word8Source

The address of the device on the bus it is connected to.

deviceDesc :: Device -> DeviceDescSource

Get the descriptor of the device.