Not all devices need a Linux kernel driver in order to work properly. The following is a list of some of these types of devices.
USB devices
Most of these should not need in-kernel drivers beyond those that already exist. Userspace can access USB devices via
libusb, or soon via
usbfs2.
USB Scanners
These devices use
libusb and the
xsane project to access the device properly. Please contact that project if you need new devices supported.
USB Digital Cameras
For digital cameras, first check if the camera shows up as a mass storage device; if not, see
gphoto.
USB Media Players (music, video)
If the device shows up as a mass storage device, then either it finds media automatically (no driver needed) or it needs a magic media index built (userspace support needed only). If the device does not show up as a mass storage device, it can have a driver written in userspace (no kernel driver needed, often using
libusb). Such userspace drivers exist for e.g MTP devices (see
libmtp), NOMAD devices (
libnjb).
Mobile Phones
Mobile phones can typically present several types of interfaces, sometimes all at once. They are all already supported through kernel drivers or userspace libraries.
Mass storage interface
Kernel driver available, but occasionally device quirks need to be specified for new phones.
CDC ACM Modem
Supported by cdc_acm kernel driver.
OBEX filetransfer interface
Supported through
libopenobex (which is using libusb) and various frontends to that library.
OBEX SyncML? interface
Supported through
OpenSync and libsyncml library that it includes (that in turn is using libopenobex).
Nokia FBUS interface also known as DKU2 interface
Supported by
http://www.gnokii.org through libusb.
Generic serial interfaces
Supported by kernel drivers.
Windows Mobile RNDIS interface
Supported via rndis_host driver. Check
this and
this.
Printers
All Linux printer drivers are done in userspace. Contact the
Linux Printing Project if you have a printer that you wish to get properly supported under Linux.
Video Cards
A number of video cards are directly supported by the
x.org project and do not need a kernel driver. However, for some newer devices, to get properly 3d graphics support, a kernel driver is needed to help out the X side. We will be glad to help out with the kernel driver for projects like this if needed.
GPS
For GPS devices, see
gpsd
Fingerprint Readers
These are the same as scanners mentioned above, kernel drivers are not needed. The
fprint project supports a lot of fingerprint scanners found in consumer devices.
Spectrometers and Colorimeters
These devices are used for colour calibration and profiling. A number of them are supported via the
Argyll CMS project and don't need a kernel driver.
Winmodem devices
The large majority of these devices are already supported by the ALSA modem drivers, and should work just fine in the latest version of your favorite Linux distribution.
FireWire Audio devices
FireWire Audio devices are handled in userspace; see the
FFADO project.
Uninterruptible Power Supplies (UPS)
These devices, whatever the bus used (serial, USB, network), use
Network UPS Tools project to access the device properly. Please contact that project if you need new devices supported.