Driver On Demand

Overview of Driver On Demand

Driver on demand is an attempt to ease driver installations in linux. Basically, what happens is that a user plugs any device into the computer, and if a driver isn't found, the client connects to a CGI server, to check if the device is known, and if its not in the database, then the driver lookup fails and the user is no worse off then they currently are. However, if the device is found online, the driver information file (similar to .inf's, just XML and more versatile) is analysed. If its built into newer versions of kernels, but theres a driver available, the driver is installed, but the system recommends strongly that the user upgrades their kernel, automatically, otherwise it just installs.

If the vendor chooses to, they can create their own driverinstall files, put it on their site, and put a reference on the Driver On Demand server, so the user will always have the newest files.. As opposed to having to wait for the admin to update their definitions.

To people who dont care about the specifics, all they need to care about is that if a device on their system needs a driver, this will find it on the internet, and install it for them automatically.


The main features of this system is:
- Uses HTTP/plaintext, so proxy compatible
- Allows the use of always up to date file.driverinstall files users can just click to install their latest hardware
- Takes the hassle of installing drivers away from the users
- XML based driver definitions, so extremely extendable, and is written in perl, so easy to edit and handle
- System handles licenses, allowing users to add them or remove licenses of drivers (promotes GPL drivers too, because that licence is accepted by default)
- Open source, GPL.. Which means u dont need to worry about licensing..
- Allows one click install of drivers (the first linux driver listing standard)
- Promotes Open source

NOTE:THIS IS NOT LIKE KUDZU!!!! Kudzu just uses preinstalled drivers, Driver on demand can download and install drivers itself.

Read the included documentation for more information, and also please read the FAQ.

Example Use Case

1) hotplug determines a device has been plugged in
2) hotplug tries to load a driver, and only if it fails, it loads Driver On Demand.
3) Driver On Demand looks at the device that has no driver, and fetches a list of possible drivers online (a .linuxdriver file).
4) Driver On Demand might go "hmm, well, the user loves LUFS, so lets see if we have a LUFS userspace driver on the list"
5) If They dont have LUFS, it might check for other types of specialised drivers (like driverloader ones or others, or normal ones).
6) Driver On demand determines the drivers the user most wants, and reorders them by order of preference.. It also wipes out the choices the user doesn't want (like ones which aren't signed, or are signed wrong, or wrong arch, poor success rate, not a LUFS driver, doesn't have a package for ur distribution), etc.
7) Driver on demand installs (needs to download the file normally and most the time compile it automatically) and modprobes/runs the module... if it fails, go to the next preferred driver on the list to try..
8) If driver was successfully inserted, send a signal to HAL, or whatever other systems available to manage the driver (deal with specifics)..

In the perfect world.. HAL and other layers would work out that the device suddenly started working because they got a driver by themselves, but if they dont, we have to tell them to recheck for newly added drivers..

In an even better world, all the drivers for every device get included with every distro, but this overcomes that shortcoming :P