Users should instead use the tools from
repository, located at
The information below is kept for archival purposes.
hid-recorder captures hidraw events, i.e. the raw events emited
by the HID device before the processing in the kernel.
hid-replay replays the captured events through the uhid kernel
Note: In order to replay the HID events, you will need to load the module uhid which is available in kernels v3.6+.
hid-replay is a very low level events injector. To have
the virtual device handled by the right HID kernel module, hid-replay
fakes that the device is on the original bus (USB, I2C or BT).
Thus, if the kernel module in use has to write back to the device
the kernel may oops if the module is trying to direclty talk to the
Be sure to use this program with friendly HID modules that rely only on the generic hid callbacks.
Starting with kernel 3.10, most HID modules are friendly with
hid-replay, but some are not (hid-logitech-dj, hid-roccat, etc…)
This is mainly for debugging kernel drivers. If your goal is just to replay events, have a look at evemu: http://wiki.freedesktop.org/wiki/Evemu
If you are running Fedora,
hid-replay is now packaged directly in the distribution:
$> sudo dnf install hid-replay
hid-replay is now in epel.
$> sudo yum install hid-replay
If you want to compile from the source:
$> git clone https://github.com/bentiss/hid-replay.git $> cd hid-replay $> ./autogen.sh $> ./configure --prefix=/usr $> make && sudo make install
hid-recorder is safe to be run on any kernel. All you need is to have a
hid device plugged and the hidraw module loaded. The syntax is the
#> hid-recorder > mydevice.hid
hid-recorder will show you a list of available devices, and will start
recording the events.
If you already know which hidraw node you want to record (to use it in a script for instance), you can use the following syntax:
#> hid-recorder /dev/hidrawN > mydevice.hid
/dev/hidrawN is a valid device (replace N by the correct number).
If you are sure to want to run it, you need to have a at least a 3.6 kernel and te module uhid loaded.
The syntax is the following:
#> hid-replay mydevice.hid
If everything is correct, the new virtual device will appear, and
hit enter (re)start replaying the events will appear.
You can inject the previously recorded events by hitting the enter
key as requested by the tool.
Hit Ctrl-C to leave the application.
File a bug in the github issues tracker at https://github.com/bentiss/hid-replay/issues