man ur98 (Fichiers spéciaux) - UR98 (TR88L803) head tracker driver


UR-98 - UR98 (TR88L803) head tracker driver


Section qInputDeviceq

Identifier qidevnameq

Driver qUR-98q

Option qDeviceq qdevpathq




UR-98 is an Xorg input driver for the Union Reality UR-F98 headtracker.

The UR-98 driver functions as a pointer input device, and can be used either as an additional input device or as the X server's core pointer. The driver provides support for the three axes, throttle and four buttons of the controller. If mapped as the core pointer the headtracker provides headtracking to try and place the mouse cursor where you look. As a secondary input device the unit can be used for gaming, for example to provide the look up/down and the turn in quake, and with the Z axis bound to ack/forward to provide movement control.

The default mapping maps left-right movement to X, up-down movement to Y and near/far movement to the Z axis. The throttle is mapped as the fourth axis by default but can also be mapped as button 5.

For use in "head only" mode the Z axis can be mapped as a button. This allows the user to select objects with head/neck movement alone but takes some practice to use well.


Union Reality UR-98. While this is a joystick driver the behaviour is absolute so this driver is not useful for true joystick interfaces.


Please refer to xorg.conf(5) for general configuration details and for options that can be used with all input drivers. This section only covers configuration details specific to this driver.

The following driver options are supported

Option qMinXq qintegerq
Set the left hand X value from the headgear, for calibration.
Option qMaxXq qintegerq
Set the right hand X value from the headgear, for calibration.
Option qMinYq qintegerq
Set the top Y value from the headgear, for calibration.
Option qMaxYq qintegerq
Set the bottom Y value from the headgear, for calibration.
Option qMinZq qintegerq
Set the nearest Z value from the headgear, for calibration.
Option qMaxZq qintegerq
Set the furthest Z value from the headgear, for calibration.
Option qMinTq qintegerq
Set the low throttle value from the headgear, for calibration.
Option qMaxTq qintegerq
Set the high throttle value from the headgear, for calibration.
Option qScreenq qintegerq
The screen to attach to the headgear when running with multiple screens. The default is screen 0.
Option qDeviceq qstringq
The joystick port that is attached to the headgear interface. This is usually /dev/input/js0. The digital port is not supported due to lack of documentation.
Option qDeviceNameq qstringq
Set the X11 device name for the headgear. This defaults to HEAD.
Option qPortraitModeq qstringq
Set the display orientation. The default is "landscape" but you can rotate the screen clockwise ("portrait") or anticlockwise ("portraitCCW").
Option qSwapXYq qbooleanq
Swap the X and Y values on the display. The default is false.
Option qButton5q qbooleanq
Map the throttle as a button instead of axis 4. For some gaming applications this can be more useful. The default is to map the throttle as axis 4.
Option qHeadButtonq qbooleanq
Map the Z axis as button 1. This defaults to false.
Option qHeadThreshq qbooleanq
Set the distance that is held to be mouse down.
Option qHeadLockq qbooleanq
Set the range of depth around the mouse down point where mouse x and y movement is locked out. Set to zero to disable.


The "HeadButton" option is currently not implemented.

The hardware or kernel driver has some idiosyncracies. Notably on kernel initialization the interface occasionally gets into a state where the readings rapidly cycle left-right-left-right or top-bottom-top-bottom. In those cases it seems to be necessary to unload the driver, unplug, replug and reload the joystick drivers. Once it initializes sanely it remains sane.

If the device refuses to work check the gray/black cables are plugged into the right ports on the unit. Be careful about this as crossing the cables can lead to the device failing with a nasty burning electronics smell. The author writes from direct experience.

This driver is currently Linux specific.



Authors include... Alan Cox