USB Devices in Linux


Helpful Links:

Linux USB Home Page
http://www.linux-usb.org/
The mother of all Linux USB sites/information. If in doubt, go here.

Linux USB devices drivers status
http://www.linux-usb.org/devices.html
The official status of devices and their drivers from the USB developers themselves. Generally devices are "classed" together (eg. "keyboards" supported; "cpia webcams" experimental(; sometimes the most popular model/brand is singled out.

Wiki-like site on functionality of specific USB devices in Linux
http://www.qbik.ch/usb/devices
This is the place to find out about other users' experiences with the USB device you are considering purchasing (or, whoops! already bought that and can't get it to work!)

USB device configuration HOWTO's
http://www.linux-usb.org/USB-guide/c122.html
Go here to find out the general way to get a device type working. It has the nitty-gritty on configuring your USB keyboard or digital camera, but not necessarily this or that particular model.

Linux USB Subsystem Guide
http://www.linux-usb.org/USB-guide/book1.html
The official USB Guide for Linux. Some of the above links are, in fact, just subsections of this document, which also includes more low-level information (eg. the USB kernel architecture, USB hardware design, etc.)


How to get the demo'd devices working in 30 seconds or less


First, the USB hardware on the motherboard must be enabled: modprobe usbcore
modprobe usb-uhci          or "usb-ohci" or "uhci" as the case may be

Now your system is ready to accept and run USB devices- all you have to do is get the individual device drivers loaded.

USB Keyboard

modprobe hid
modprobe input
modprobe keybdev

The keyboard should now work. There is one gotchya though in my experience: be sure to enable USB keyboard/mouse support in your CMOS and plug the keyboard into the "root" controller of the motherboard, rather than into a secondary mobo controller or an external hub. If you don't do these two things, your keyboard will probably work after Linux is fully booted, but you may not be able to enter your mobo's CMOS or change settings at the Lilo prompt, etc..

USB Mouse

mkdir /dev/input
		first time only - make the inputdev section

mknod /dev/input/mice c 13 63
		first time only - make the mousedev node

modprobe hid
modprobe input
modprobe mousedev

The mouse is now working, just point gpm and/or X to the new device node by changing the device file pointer to /dev/input/mice in their respective config files (traditional ps/2 mice are usually pointed to either /dev/psaux and serial mice to /dev/ttyS0 or /dev/ttyS1; often the "true" mousedev node is symlinked to /dev/mouse).

For examples:
--- /etc/gpm.conf ---
device=/dev/input/mice
responsiveness=
repeat_type=
type=autops2
append=""
sample_rate=

--- mouse section of /etc/X11/XF86Config-4 ---
Section "InputDevice"
    Identifier	"Configured Mouse"
    Driver	"mouse"
    Option	"CorePointer"
    Option	"Device"	"/dev/input/mice"
    Option	"Protocol"	"ImPS/2"
    Option	"ZAxisMapping"	"4 5"
EndSection


Zoom Webcam

modprobe cpia
	this should find your webcam and install the proper v4l drivers as well


The camera is now functional- just start up your favorite v4l/webcam software (eg. camstream, gnomemeeting, or xawtv)

SMC and D-Link NICS

modprobe pegasus

Now just configure according to your distro's preferred method (eg. /sbin/ifconfig command on slack, or edit /etc/sysconfig/network-scripts/ifconfig-eth? on Redhat and friends, or /etc/network/interfaces on Debian and friends). NOTE: from experience I can tell you that the Netgear USB NIC (EA 101) uses the "kawasaki" chipset (kaweth.o module) and as of 2.4.16 simply does not work, and Netgear does not seem to provide their own drivers. Too bad; their PCI nics are longtime Linux-crowd favorites. Pegasus chipset devices seem to work very well- the SMC USB NIC served Internet traffic to my home lan for months without a hiccup, and the D-Link HUB+NIC has run on a workstation on and off with no problems. Both perform surprisingly well at high bandwidth.

D-Link Hub

The hub portion of the D-Link HUB+NIC needs no special driver- it should work out of the box, as should almost any USB hub (there are some exceptions; check the user's reports at qbik.ch if unsure).

Iomega Zip-250 USB

mkdir /zipdrive
		create a mount point; this could be anywhere you like

modprobe usb-storage
mount -t vfat /dev/sd?4 /zipdrive

Iomega USB drives, like their parallel port ancestors, are emulated as scsi devices in Linux. For some unknown reason, the yahoo at the factory who formats the disks partitions them to be the fourth partition (thus /dev/sd?4 rather than /dev/sd?1).

Sony Digital Video Camera

mkdir /sonycam
		again, first time only; could be anywhere

modprobe storage
mount -t vfat /dev/sd?1 /sonycam

Most camera devices (not streaming or webcam devices) are simply accessed as scsi filesystems... just like the zipdrive above as a matter of fact. The factory workers are a little smart at Sony: /dev/sd?1.

Lexmark Z23/Z33 USB Printer

modprobe printer

For this particular printer, you must also download and install a proprietary driver from lexmark.com. This may not be the case for your USB printer- try the old HPIII/4/5 emulation trick.