usbinput(7) usbinput(7)
usbinput - Onyx3 usb keyboard and mouse input
The Onyx3 system uses a USB keyboard and mouse for input. The devices
connect to the system through the USB ports on the base IO device
(Ibrick), either directly, or through a series of USB hubs. See usb(7)
for information on valid USB topologies.
Compatibility [Toc] [Back]
The only supported keyboard is the Onyx3 keyboard part number
062-0066-001 supplied by SGI. Other over the counter usb keyboards may
work, but have not been qualified by SGI.
Likewise, the only SGI qualified mouse is part number 063-0011-001.
Interface and Administration [Toc] [Back]
USB input devices are presented to applications through the directories
/dev/input[N], where N is the logical device number of the usb device.
/dev/inputis an alias for /dev/input0 (ie. device 0) for compatibility
reasons.
The mapping of a physical device to its device number is controlled by
ioconfig(1M) through the file /etc/ioconfig.conf. The logical controller
number in /etc/ioconfig.conf corresponds to the device number, and
determines the /dev/input[N] path to open to access it. For example, the
following ioconfig.conf lines:
0 /hw/module/006c05/Ibrick/xtalk/15/pci/5/usb/1/1/keyboard
0 /hw/module/006c05/Ibrick/xtalk/15/pci/5/usb/1/2/mouse
1 /hw/module/006c05/Ibrick/xtalk/15/pci/5/usb/1/3/keyboard
1 /hw/module/006c05/Ibrick/xtalk/15/pci/5/usb/1/4/mouse
Map two keyboards and two mice. The keyboard at physical location
/hw/module/006c05/Ibrick/xtalk/15/pci/5/usb/1/1/keyboard is keyboard 0
(/dev/input/keyboard), and the keyboard at physical location
/hw/module/006c05/Ibrick/xtalk/15/pci/5/usb/1/3/keyboard is keyboard 1
(/dev/input1/keyboard). Likewise for the mouse entries. See usb(7) for
a description of the physical device path.
hinv(1M) can be used to display usb devices that the system knows about
and their corresponding device id. The hinv output for usb keyboards and
mice looks like:
USB Human Interface Device: device id 0 type keyboard
USB Human Interface Device: device id 0 type mouse
USB Human Interface Device: device id 1 type keyboard
USB Human Interface Device: device id 1 type mouse
If hinv shows a device id of -1, it means that the device is new to the
system (ie. it has been plugged in after the system booted), and that
ioconfig needs to be run to assign a device id and construct a
Page 1
usbinput(7) usbinput(7)
/dev/input[N]/{keyboard,mouse} entry point.
If you want to change the device number of a device, you can edit
/etc/ioconfig.conf and change the device number. You must rerun ioconfig
to establish the new device number. Note that you should shut down any
applications that have the device open under it's old device id before
doing this. Also note that device id's must be unique among device
types.
Likewise, if you have stale entries in /etc/ioconfig.conf, you can delete
them to reuse the device id's.
The first time ioconfig sees a device, it assigns it an unused device id.
The id assigned will be the lowest id available (ie. not appearing in the
/etc/ioncofig.conf file for that type of device). The only way to preassign
a given device id is to hand enter the device in
/etc/ioconfig.conf (not recommended).
Hot Plug [Toc] [Back]
USB keyboard and mouse devices are fully hot pluggable. If a
/dev/input[X]/{keyboard,mouse} is open, and it is unplugged, any
application having that device open will stall. Once a device of the
same type is plugged back in, the application will continue. Note that
plugging in a 'new' device (one not represented in /etc/ioconfig.conf)
requires that ioconfig be run to assign a device id before it can be
used.
Troubleshooting [Toc] [Back]
There is currently no administrative tool to reset a usb keyboard or
mouse. Unplugging and replugging the device is the only method of reset.
Note that an unresponsive keyboard or mouse could be due to an
unresponsive USB hub upstream. If this is suspected, you can unplug the
hub, and plug it back in. Any downstream keyboard/mouse devices should
come back as though they were hot plugged.
In order to minimize changes to application code, the usb keyboard and
mouse driver convert usb usage codes to ps2 scan code sequences at the
/dev/input[N]/keyboard devices. Likewise ps2 mouse codes are generated
at /dev/input[N]/mouse.
The entry points /dev/input/keyboard and /dev/input/mouse will always
exist. If there is no corresponding physical device (ie. no keyboard
and/or mouse with device id 0), the device will operate similar to
/dev/null. If an application has the device open in this mode, and a
physical device is then plugged in (and ioconfig is run) the application
must be restarted to access the real device. This mode of operation is
present to allow X to be started without a keyboard and mouse physically
present for the purposes of manufacturing checkout, and should not be
used or relied upon outside of that context.
Page 2
usbinput(7) usbinput(7)
Assume we have a keyboard with the following ioconfig.conf entry:
0 /hw/module/006c05/Ibrick/xtalk/15/pci/5/usb/1/1/keyboard
This means the keyboard is plugged into port 1 of a hub that is plugged
into port 1 of the ibrick root hub.
To omit the 2nd hub and plug the keyboard into the ibrick directly, move
the keyboard, and change the entry in ioconfig.conf to:
0 /hw/module/006c05/Ibrick/xtalk/15/pci/5/usb/1/keyboard
Conversly, to change the device id (and therefore the /dev/inputX
directory) that the keyboard is grouped under, change the ioconfig.conf
entry to something like:
2 /hw/module/006c05/Ibrick/xtalk/15/pci/5/usb/1/1/keyboard
usb(7), pckeyboard(7), pcmouse(7), ioconfig(1M).
PPPPaaaaggggeeee 3333 [ Back ]
|