$manlookup

usbhid-dump

(8)

dump USB HID device report descriptors and streams

usbhid-dump [OPTION]...

Options

9
-h--help

Output a help message and exit.

-v--version

Output version information and exit.

-s-a--address

Limit interfaces by bus number and device address. Both 1-255, decimal. Zeroes match any bus or device.

-d-m--model

Limit interfaces by device vendor and product IDs. Both 1-FFFF, hexadecimal. Zeroes match any vendor or product.

-i--interface

Limit interfaces by number (0-254), decimal. 255 matches any interface.

-e--entity

The entity to dump: either "descriptor", "stream" or "all". The value can be abbreviated down to one letter. The default is "descriptor".

-t--stream-timeout

Stream interrupt transfer timeout, ms. Zero means infinity. The default is 60000 (60 seconds).

-p--stream-paused

Start with the stream dump output paused.

-f--stream-feedback

Enable stream dumping feedback: print a dot to stderr for every transfer dumped.

DESCRIPTION

usbhid-dump uses libusb to dump report descriptors and streams from HID (human interface device) interfaces of USB devices. By default, it dumps HID interfaces of all connected USB devices, but could be limited to a subset of them, or to a single interface, using options.

NOTE: usbhid-dump detaches kernel drivers from the interfaces it dumps and uses them exclusively, so no other program receives the input in the meantime. The report descriptor dumping is instantaneous, but the stream dumping continues until terminated with SIGINT (^C from the terminal) or a timeout expires.

If you accidentally start dumping a stream from the USB keyboard you use to control the terminal, the system will stop receiving the input and you won't be able to terminate usbhid-dump. Just stop your input and wait until the timeout expires. The stream dumping will stop, the keyboard will be reattached to the kernel driver and you will regain control.

The default stream dumping timeout is 60 seconds and could be changed with the -t option.

SIGNALS

Pause/resume stream dump output.

OUTPUT FORMAT

usbhid-dump outputs dumps in chunks. Each chunk is separated by an empty line and starts with the following header line:

BUS:DEVICE:INTERFACE:ENTITY TIMESTAMP

Here, BUS, DEVICE and INTERFACE are bus, device and interface numbers respectively. ENTITY is either "DESCRIPTOR" or "STREAM". TIMESTAMP is timestamp in seconds since epoch.

After the header the actual dump data follows as hex bytes. A descriptor chunk includes the whole report descriptor. Every stream chunk includes a whole report, usually, but if a report is bigger than endpoint's wMaxPacketSize, it will span several chunks.

EXAMPLES

AUTHOR

Nikolai Kondrashov spbnick@gmail.com