X-Git-Url: https://pere.pagekite.me/gitweb/homepage.git/blobdiff_plain/d3fbd9444b0cfd17804efa2992f361e6d31fbd0f..a12e90a81cb1ae182e5713cc180abad737b6cfef:/blog/archive/2013/01/01.rss diff --git a/blog/archive/2013/01/01.rss b/blog/archive/2013/01/01.rss index 6cfce8697a..8197c3648b 100644 --- a/blog/archive/2013/01/01.rss +++ b/blog/archive/2013/01/01.rss @@ -6,6 +6,99 @@ http://people.skolelinux.org/pere/blog/ + + Lets make hardware dongles easier to use in Debian + http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html + http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html + Wed, 9 Jan 2013 15:40:00 +0100 + <p>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.</p> + +<p>Many years ago, I proposed to +<a href="http://lists.debian.org/debian-devel/2010/05/msg01206.html">use +the discover subsystem to implement this</a>. The idea is fairly +simple: + +<ul> + +<li>Add a desktop entry in /usr/share/autostart/ pointing to a program + starting when a user log in.</li> + +<li>Set this program up to listen for kernel events emitted when new + hardware is inserted into the computer.</li> + +<li>When new hardware is inserted, look up the hardware ID in a + database mapping to packages, and take note of any non-installed + packages.</li> + +<li>Show a message to the user proposing to install the discovered + package, and make it easy to install it.</li> + +</ul> + +<p>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 +<a href="http://www.packagekit.org/">PackageKit</a> to install +packages.</p> + +<p>Yesterday, I found time to try to implement this idea, and the +draft package is now checked into +<a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/">the +Debian Edu subversion repository</a>. In the process, I updated the +<a href="http://packages.qa.debian.org/d/discover-data.html">discover-data</a> +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 +<a href="http://packages.qa.debian.org/d/discover-data.html">discover</a> +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).</p> + +<p>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):</p> + +<p align="center"><img src="http://people.skolelinux.org/pere/blog/images/2013-01-09-hw-autoinstall.png"></p> + +<p>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.</p> + +<p>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.</p> + +<p>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?</p> + +<p>If you want to help getting such feature implemented in Debian, +please send me an email. :)</p> + + + New IRC channel for LEGO designers using Debian http://people.skolelinux.org/pere/blog/New_IRC_channel_for_LEGO_designers_using_Debian.html