usbhid-dump - dump USB HID device report descriptors and streams


   usbhid-dump [OPTION]...


   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

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


   -h, --help
          Output a help message and exit.

   -v, --version
          Output version information and exit.

   -s, -a, --address=bus[:dev]
          Limit interfaces by bus number and device address.  Both  1-255,
          decimal.  Zeroes match any bus or device.

   -d, -m, --model=vid[:pid]
          Limit  interfaces by device vendor and product IDs. Both 1-FFFF,
          hexadecimal.  Zeroes match any vendor or product.

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

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

   -t, --stream-timeout=NUMBER
          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.


          Pause/resume stream dump output.


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


   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.


   Dump report descriptor for a device with address 3 on bus number 2:
          usbhid-dump -a 2:3

   Dump  report  stream  for a device with vendor ID 0x5543 and product ID
          usbhid-dump -m 5543:0005 -es

   Dump report descriptor from interface 1 of  a  device  with  vendor  ID
          usbhid-dump -m 5543 -i 1 -ed

   Dump  report  streams  from  all  HID  interfaces  of  all  USB devices
   (caution: you will loose control over  the  terminal  if  you  use  USB
          usbhid-dump -es


   Nikolai Kondrashov <>

                             February 2012                  usbhid-dump(8)

More Linux Commands

systemd-fsck .service(8) File system checker logic..........
systemd-fsck@.service is a service responsible for file system checks. It is instantiated for each device that requires a file system check. systemd-fsck-root.s

uuencode(5) - format of an encoded uuencode file (Man Page)
Files output by uuencode(1) consist of a header line, followed by a number of body lines, and a trailer line. The uudecode(1) command will ignore any lines prec

smyrna(1) - interactive graph viewer - Linux manual page....
smyrna is a viewer for graphs in the DOT format. It is especially designed to handle large graphs, and allows flat and topological fisheye views. It is assumed

fts_open(3) - traverse a file hierarchy - Linux manual page
The fts functions are provided for traversing file hierarchies. A simple overview is that the fts_open() function returns a handle on a file hierarchy, which is

Tcl_WriteChars(3) - buffered I/O facilities using channels
The Tcl channel mechanism provides a device-independent and platform-independent mechanism for performing buffered input and output operations on a variety of f

XkbNoteNameChanges(3) - Note the changed names in a changes
When your application receives a XkbNamesNotify event, you can note the changed names in a changes structure using XkbNoteNameChanges. The wanted parameter is t

xfsinfo(1) - X font server information utility (Man Page)...
Xfsinfo is a utility for displaying information about an X font server. It is used to examine the capabilities of a server, the predefined values for various pa

nocbreak(3ncurses) - curses input options - Linux man page
Normally, the tty driver buffers typed characters until a newline or carriage return is typed. The cbreak routine disables line buffering and erase/kill charact

registerrpc(3) - library routines for remote procedure calls
These routines allow C programs to make procedure calls on other machines across the network. First, the client calls a procedure to send a data packet to the s

XCompositeUnredirectWindow(3) - X Composite Extension librar
The composite extension provides several related mechanisms: Per-hierarchy storage The rendering of an entire hierarchy of windows is redirected to off-screen s

gvfs-cat(1) Concatenate files (Commands - Linux man page)...
gvfs-cat concatenates the given files and prints them to the standard output. gvfs-cat works just like the traditional cat utility, but using gvfs locations ins

access(5) - Postfix SMTP server access table (Man Page).....
This document describes access control on remote SMTP client information: host names, network addresses, and envelope sender or recipient addresses; it is imple

We can't live, work or learn in freedom unless the software we use is free.