One thing that annoys me with Debian and Linux distributions in
-general, is that there is a great package management system with the
-ability to automatically install software packages by downloading them
-from the distribution mirrors, but no way to get it to automatically
-install the packages I need to use the hardware I plug into my
-machine. Even if the package to use it is easily available from the
-Linux distribution. When I plug in a LEGO Mindstorms NXT, it could
-suggest to automatically install the python-nxt, nbc and t2n packages
-I need to talk to it. When I plug in a Yubikey, it could propose the
-yubikey-personalization package. The information required to do this
-is available, but no-one have pulled all the pieces together.
-
-
Some years ago, I proposed to
-use
-the discover subsystem to implement this. The idea is fairly
-simple:
-
-
-
-- Add a desktop entry in /usr/share/autostart/ pointing to a program
- starting when a user log in.
-
-- Set this program up to listen for kernel events emitted when new
- hardware is inserted into the computer.
-
-- When new hardware is inserted, look up the hardware ID in a
- database mapping to packages, and take note of any non-installed
- packages.
-
-- Show a message to the user proposing to install the discovered
- package, and make it easy to install it.
-
-
-
-
I am not sure what the best way to implement this is, but my
-initial idea was to use dbus events to discover new hardware, the
-discover database to find packages and
-PackageKit to install
-packages.
-
-
Yesterday, I found time to try to implement this idea, and the
-draft package is now checked into
-the
-Debian Edu subversion repository. In the process, I updated the
-discover-data
-package to map the USB ids of LEGO Mindstorms and Yubikey devices to
-the relevant packages in Debian, and uploaded a new version
-2.2013.01.09 to unstable. I also discovered that the current
-discover
-package in Debian no longer discovered any USB devices, because
-/proc/bus/usb/devices is no longer present. I ported it to use
-libusb as a fall back option to get it working. The fixed package
-version 2.1.2-6 is now in experimental (didn't upload it to unstable
-because of the freeze).
-
-
With this prototype in place, I can insert my Yubikey, and get this
-desktop notification to show up (only once, the first time it is
-inserted):
-
-

-
-
For this prototype to be really useful, some way to automatically
-install the proposed packages by pressing the "Please install
-program(s)" button should to be implemented.
-
-
If this idea seem useful to you, and you want to help make it
-happen, please help me update the discover-data database with mappings
-from hardware to Debian packages. Check if 'discover-pkginstall -l'
-list the package you would like to have installed when a given
-hardware device is inserted into your computer, and report bugs using
-reportbug if it isn't. Or, if you know of a better way to provide
-such mapping, please let me know.
-
-
This prototype need more work, and there are several questions that
-should be considered before it is ready for production use. Is dbus
-the correct way to detect new hardware? At the moment I look for HAL
-dbus events on the system bus, because that is the events I could see
-on my Debian Squeeze KDE desktop. Are there better events to use?
-How should the user be notified? Is the desktop notification
-mechanism the best option, or should the background daemon raise a
-popup instead? How should packages be installed? When should they
-not be installed?
-
-
If you want to help getting such feature implemented in Debian,
-please send me an email. :)
-