.. include:: <isonum.txt>

===================
The userio Protocol
===================


:Copyright: |copy| 2015 Lyude Paul <thatslyude@gmail.com>

Sponsored by Red Hat


Introduction
=============

This module is intended to try to make the lives of input driver developers
easier by allowing them to test various serio devices (mainly the various
touchpads found on laptops) without having to have the physical device in front
of them. userio accomplishes this by allowing any privileged userspace program
to directly interact with the kernel's serio driver and control a virtual serio
port from there.

Usage overview
==============

In order to interact with the userio kernel module, one simply opens the
/dev/userio character device in their applications. Commands are sent to the
kernel module by writing to the device, and any data received from the serio
driver is read as-is from the /dev/userio device. All of the structures and
macros you need to interact with the device are defined in <linux/userio.h> and
<linux/serio.h>.

Command Structure
=================

The struct used for sending commands to /dev/userio is as follows::

	struct userio_cmd {
		__u8 type;
		__u8 data;
	};

``type`` describes the type of command that is being sent. This can be any one
of the USERIO_CMD macros defined in <linux/userio.h>. ``data`` is the argument
that goes along with the command. In the event that the command doesn't have an
argument, this field can be left untouched and will be ignored by the kernel.
Each command should be sent by writing the struct directly to the character
device. In the event that the command you send is invalid, an error will be
returned by the character device and a more descriptive error will be printed
to the kernel log. Only one command can be sent at a time, any additional data
written to the character device after the initial command will be ignored.

To close the virtual serio port, just close /dev/userio.

Commands
========

USERIO_CMD_REGISTER
~~~~~~~~~~~~~~~~~~~

Registers the port with the serio driver and begins transmitting data back and
forth. Registration can only be performed once a port type is set with
USERIO_CMD_SET_PORT_TYPE. Has no argument.

USERIO_CMD_SET_PORT_TYPE
~~~~~~~~~~~~~~~~~~~~~~~~

Sets the type of port we're emulating, where ``data`` is the port type being
set. Can be any of the serio type macros from <linux/serio.h>. For example:
SERIO_8042 would set the port type to be a normal PS/2 port.

USERIO_CMD_SET_PORT_PROTO
~~~~~~~~~~~~~~~~~~~~~~~~~

Sets the protocol of port we're emulating, where ``data`` is the protocol being
set. Can be any of the serio proto macros from <linux/serio.h>. For example:
SERIO_IFORCE would set the port type to be an I-Force serial joystick.

USERIO_CMD_SET_PORT_ID
~~~~~~~~~~~~~~~~~~~~~~

Sets the ``id`` value on the identification of port we're emulating, where
``data`` is the value being set.

USERIO_CMD_SET_PORT_EXTRA
~~~~~~~~~~~~~~~~~~~~~~~~~

Sets the ``extra`` value on the identification of port we're emulating, where
``data`` is the value being set.

USERIO_CMD_SEND_INTERRUPT
~~~~~~~~~~~~~~~~~~~~~~~~~

Sends an interrupt through the virtual serio port to the serio driver, where
``data`` is the interrupt data being sent.

Userspace tools
===============

The userio userspace tools are able to record PS/2 devices using some of the
debugging information from i8042, and play back the devices on /dev/userio. The
latest version of these tools can be found at:

	https://github.com/Lyude/ps2emu
