]> pere.pagekite.me Git - homepage.git/blobdiff - blog/archive/2013/01/index.html
Update to chronicle v4.6.
[homepage.git] / blog / archive / 2013 / 01 / index.html
index 8824fe8ba4e69eafd6f5c1487f0e493396eed534..09ca3f82a75341bd0722426455fceb8965d409f6 100644 (file)
 
     <h3>Entries from January 2013.</h3>
     
+    <div class="entry">
+      <div class="title">
+        <a href="http://people.skolelinux.org/pere/blog/Welcome_to_the_world__Isenkram_.html">Welcome to the world, Isenkram!</a>
+      </div>
+      <div class="date">
+        22nd January 2013
+      </div>
+      <div class="body">
+        <p>Yesterday, I
+<a href="http://people.skolelinux.org/pere/blog/First_prototype_ready_making_hardware_easier_to_use_in_Debian.html">asked
+for testers</a> for my prototype for making Debian better at handling
+pluggable hardware devices, which I
+<a href="http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html">set
+out to create</a> earlier this month.  Several valuable testers showed
+up, and caused me to really want to to open up the development to more
+people.  But before I did this, I want to come up with a sensible name
+for this project.  Today I finally decided on a new name, and I have
+renamed the project from hw-support-handler to this new name.  In the
+process, I moved the source to git and made it available as a
+<a href="http://anonscm.debian.org/gitweb/?p=collab-maint/isenkram.git">collab-maint</a>
+repository in Debian.  The new name?  It is <strong>Isenkram</strong>.
+To fetch and build the latest version of the source, use</p>
+
+<pre>
+git clone http://anonscm.debian.org/git/collab-maint/isenkram.git
+cd isenkram && git-buildpackage -us -uc
+</pre>
+
+<p>I have not yet adjusted all files to use the new name yet.  If you
+want to hack on the source or improve the package, please go ahead.
+But please talk to me first on IRC or via email before you do major
+changes, to make sure we do not step on each others toes. :)</p>
+
+<p>If you wonder what 'isenkram' is, it is a Norwegian word for iron
+stuff, typically meaning tools, nails, screws, etc.  Typical hardware
+stuff, in other words.  I've been told it is the Norwegian variant of
+the German word eisenkram, for those that are familiar with that
+word.</p>
+
+<p><strong>Update 2013-01-26</strong>: Added -us -us to build
+instructions, to avoid confusing people with an error from the signing
+process.</p>
+
+<p><strong>Update 2013-01-27</strong>: Switch to HTTP URL for the git
+clone argument to avoid the need for authentication.</p>
+
+      </div>
+      <div class="tags">
+        
+        
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>.
+        
+        
+      </div>
+    </div>
+    <div class="padding"></div>
+    
+    <div class="entry">
+      <div class="title">
+        <a href="http://people.skolelinux.org/pere/blog/First_prototype_ready_making_hardware_easier_to_use_in_Debian.html">First prototype ready making hardware easier to use in Debian</a>
+      </div>
+      <div class="date">
+        21st January 2013
+      </div>
+      <div class="body">
+        <p>Early this month I set out to try to
+<a href="http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html">improve
+the Debian support for pluggable hardware devices</a>.  Now my
+prototype is working, and it is ready for a larger audience.  To test
+it, fetch the
+<a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/">source
+from the Debian Edu subversion repository</a>, build and install the
+package.  You might have to log out and in again activate the
+autostart script.</p>
+
+<p>The design is simple:</p>
+
+<ul>
+
+<li>Add desktop entry in /usr/share/autostart/ causing a program
+hw-support-handlerd to start when the user log in.</li>
+
+<li>This program listen for kernel events about new hardware (directly
+from the kernel like udev does), not using HAL dbus events as I
+initially did.</li>
+
+<li>When new hardware is inserted, look up the hardware modalias in
+the APT database, a database
+<a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/modaliases?view=markup">available
+via HTTP</a> and a database available as part of the package.</li>
+
+<li>If a package is mapped to the hardware in question, the package
+isn't installed yet and this is the first time the hardware was
+plugged in, show a desktop notification suggesting to install the
+package or packages.</li>
+
+<li>If the user click on the 'install package now' button, ask
+aptdaemon via the PackageKit API to install the requrired package.</li>
+
+<li>aptdaemon ask for root password or sudo password, and install the
+package while showing progress information in a window.</li>
+
+</ul>
+
+<p>I still need to come up with a better name for the system.  Here
+are some screen shots showing the prototype in action.  First the
+notification, then the password request, and finally the request to
+approve all the dependencies.  Sorry for the Norwegian Bokmål GUI.</p>
+
+<p><img src="http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-1-notification.png">
+<br><img src="http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-2-password.png">
+<br><img src="http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-3-dependencies.png">
+<br><img src="http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-4-installing.png">
+<br><img src="http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-5-installing-details.png" width="70%"></p>
+
+<p>The prototype still need to be improved with longer timeouts, but
+is already useful.  The database of hardware to package mappings also
+need more work.  It is currently compatible with the Ubuntu way of
+storing such information in the package control file, but could be
+changed to use other formats instead or in addition to the current
+method.  I've dropped the use of discover for this mapping, as the
+modalias approach is more flexible and easier to use on Linux as long
+as the Linux kernel expose its modalias strings directly.</p>
+
+<p><strong>Update 2013-01-21 16:50</strong>: Due to popular demand,
+here is the command required to check out and build the source: Use
+'<tt>svn checkout
+svn://svn.debian.org/debian-edu/trunk/src/hw-support-handler/; cd
+hw-support-handler; debuild</tt>'.  If you lack debuild, install the
+devscripts package.</p>
+
+<p><strong>Update 2013-01-23 12:00</strong>: The project is now
+renamed to Isenkram and the source moved from the Debian Edu
+subversion repository to a Debian collab-maint git repository.  See
+<a href="http://people.skolelinux.org/pere/blog/Welcome_to_the_world__Isenkram_.html">build
+instructions</a> for details.</p>
+
+      </div>
+      <div class="tags">
+        
+        
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>.
+        
+        
+      </div>
+    </div>
+    <div class="padding"></div>
+    
+    <div class="entry">
+      <div class="title">
+        <a href="http://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html">Thank you Thinkpad X41, for your long and trustworthy service</a>
+      </div>
+      <div class="date">
+        19th January 2013
+      </div>
+      <div class="body">
+        <p>This Christmas my trusty old laptop died.  It died quietly and
+suddenly in bed.  With a quiet whimper, it went completely quiet and
+black.  The power button was no longer able to turn it on.  It was a
+IBM Thinkpad X41, and the best laptop I ever had.  Better than both
+Thinkpads X30, X31, X40, X60, X61 and X61S.  Far better than the
+Compaq I had before that.  Now I need to find a replacement.  To keep
+going during Christmas, I moved the one year old SSD disk to my old
+X40 where it fitted (only one I had left that could use it), but it is
+not a durable solution.
+
+<p>My laptop needs are fairly modest.  This is my wishlist from when I
+got a new one more than 10 years ago.  It still holds true.:)</p>
+
+<ul>
+
+<li>Lightweight (around 1 kg) and small volume (preferably smaller
+  than A4).</li>
+<li>Robust, it will be in my backpack every day.</li>
+<li>Three button mouse and a mouse pin instead of touch pad.</li>
+<li>Long battery life time.  Preferable a week.</li>
+<li>Internal WIFI network card.</li>
+<li>Internal Twisted Pair network card.</li>
+<li>Some USB slots (2-3 is plenty)</li>
+<li>Good keyboard - similar to the Thinkpad.</li>
+<li>Video resolution at least 1024x768, with size around 12" (A4 paper
+size).</li>
+<li>Hardware supported by Debian Stable, ie the default kernel and
+  X.org packages.</li>
+<li>Quiet, preferably fan free (or at least not using the fan most of
+  the time).
+
+</ul>
+
+<p>You will notice that there are no RAM and CPU requirements in the
+list.  The reason is simply that the specifications on laptops the
+last 10-15 years have been sufficient for my needs, and I have to look
+at other features to choose my laptop.  But are there still made as
+robust laptops as my X41?  The Thinkpad X60/X61 proved to be less
+robust, and Thinkpads seem to be heading in the wrong direction since
+Lenovo took over.  But I've been told that X220 and X1 Carbon might
+still be useful.</p>
+
+<p>Perhaps I should rethink my needs, and look for a pad with an
+external keyboard?  I'll have to check the
+<a href="http://www.linux-laptop.net/">Linux Laptops site</a> for
+well-supported laptops, or perhaps just buy one preinstalled from one
+of the vendors listed on the <a href="http://linuxpreloaded.com/">Linux
+Pre-loaded site</a>.</p>
+
+      </div>
+      <div class="tags">
+        
+        
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
+        
+        
+      </div>
+    </div>
+    <div class="padding"></div>
+    
+    <div class="entry">
+      <div class="title">
+        <a href="http://people.skolelinux.org/pere/blog/How_to_find_a_browser_plugin_supporting_a_given_MIME_type.html">How to find a browser plugin supporting a given MIME type</a>
+      </div>
+      <div class="date">
+        18th January 2013
+      </div>
+      <div class="body">
+        <p>Some times I try to figure out which Iceweasel browser plugin to
+install to get support for a given MIME type.  Thanks to
+<a href="https://wiki.ubuntu.com/MozillaTeam/Plugins">specifications
+done by Ubuntu</a> and Mozilla, it is possible to do this in Debian.
+Unfortunately, not very many packages provide the needed meta
+information, Anyway, here is a small script to look up all browser
+plugin packages announcing ther MIME support using this specification:</p>
+
+<pre>
+#!/usr/bin/python
+import sys
+import apt
+def pkgs_handling_mimetype(mimetype):
+    cache = apt.Cache()
+    cache.open(None)
+    thepkgs = []
+    for pkg in cache:
+        version = pkg.candidate
+        if version is None:
+            version = pkg.installed
+        if version is None:
+            continue
+        record = version.record
+        if not record.has_key('Npp-MimeType'):
+            continue
+        mime_types = record['Npp-MimeType'].split(',')
+        for t in mime_types:
+            t = t.rstrip().strip()
+            if t == mimetype:
+                thepkgs.append(pkg.name)
+    return thepkgs
+mimetype = "audio/ogg"
+if 1 < len(sys.argv):
+    mimetype = sys.argv[1]
+print "Browser plugin packages supporting %s:" % mimetype
+for pkg in pkgs_handling_mimetype(mimetype):
+    print "  %s" %pkg
+</pre>
+
+<p>It can be used like this to look up a given MIME type:</p>
+
+<pre>
+% ./apt-find-browserplug-for-mimetype 
+Browser plugin packages supporting audio/ogg:
+  gecko-mediaplayer
+% ./apt-find-browserplug-for-mimetype application/x-shockwave-flash
+Browser plugin packages supporting application/x-shockwave-flash:
+  browser-plugin-gnash
+%
+</pre>
+
+<p>In Ubuntu this mechanism is combined with support in the browser
+itself to query for plugins and propose to install the needed
+packages.  It would be great if Debian supported such feature too.  Is
+anyone working on adding it?</p>
+
+<p><strong>Update 2013-01-18 14:20</strong>: The Debian BTS
+request for icweasel support for this feature is
+<a href="http://bugs.debian.org/484010">#484010</a> from 2008 (and
+<a href="http://bugs.debian.org/698426">#698426</a> from today).  Lack
+of manpower and wish for a different design is the reason thus feature
+is not yet in iceweasel from Debian.</p>
+
+      </div>
+      <div class="tags">
+        
+        
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
+        
+        
+      </div>
+    </div>
+    <div class="padding"></div>
+    
+    <div class="entry">
+      <div class="title">
+        <a href="http://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_.html">What is the most supported MIME type in Debian?</a>
+      </div>
+      <div class="date">
+        16th January 2013
+      </div>
+      <div class="body">
+        <p>The <a href="http://wiki.debian.org/AppStreamDebianProposal">DEP-11
+proposal to add AppStream information to the Debian archive</a>, is a
+proposal to make it possible for a Desktop application to propose to
+the user some package to install to gain support for a given MIME
+type, font, library etc. that is currently missing.  With such
+mechanism in place, it would be possible for the desktop to
+automatically propose and install leocad if some LDraw file is
+downloaded by the browser.</p>
+
+<p>To get some idea about the current content of the archive, I decided
+to write a simple program to extract all .desktop files from the
+Debian archive and look up the claimed MIME support there.  The result
+can be found on the
+<a href="http://ftp.skolelinux.org/pub/AppStreamTest">Skolelinux FTP
+site</a>.  Using the collected information, it become possible to
+answer the question in the title.  Here are the 20 most supported MIME
+types in Debian stable (Squeeze), testing (Wheezy) and unstable (Sid).
+The complete list is available from the link above.</p>
+
+<p><strong>Debian Stable:</strong></p>
+
+<pre>
+  count MIME type
+  ----- -----------------------
+     32 text/plain
+     30 audio/mpeg
+     29 image/png
+     28 image/jpeg
+     27 application/ogg
+     26 audio/x-mp3
+     25 image/tiff
+     25 image/gif
+     22 image/bmp
+     22 audio/x-wav
+     20 audio/x-flac
+     19 audio/x-mpegurl
+     18 video/x-ms-asf
+     18 audio/x-musepack
+     18 audio/x-mpeg
+     18 application/x-ogg
+     17 video/mpeg
+     17 audio/x-scpls
+     17 audio/ogg
+     16 video/x-ms-wmv
+</pre>
+
+<p><strong>Debian Testing:</strong></p>
+
+<pre>
+  count MIME type
+  ----- -----------------------
+     33 text/plain
+     32 image/png
+     32 image/jpeg
+     29 audio/mpeg
+     27 image/gif
+     26 image/tiff
+     26 application/ogg
+     25 audio/x-mp3
+     22 image/bmp
+     21 audio/x-wav
+     19 audio/x-mpegurl
+     19 audio/x-mpeg
+     18 video/mpeg
+     18 audio/x-scpls
+     18 audio/x-flac
+     18 application/x-ogg
+     17 video/x-ms-asf
+     17 text/html
+     17 audio/x-musepack
+     16 image/x-xbitmap
+</pre>
+
+<p><strong>Debian Unstable:</strong></p>
+
+<pre>
+  count MIME type
+  ----- -----------------------
+     31 text/plain
+     31 image/png
+     31 image/jpeg
+     29 audio/mpeg
+     28 application/ogg
+     27 image/gif
+     26 image/tiff
+     26 audio/x-mp3
+     23 audio/x-wav
+     22 image/bmp
+     21 audio/x-flac
+     20 audio/x-mpegurl
+     19 audio/x-mpeg
+     18 video/x-ms-asf
+     18 video/mpeg
+     18 audio/x-scpls
+     18 application/x-ogg
+     17 audio/x-musepack
+     16 video/x-ms-wmv
+     16 video/x-msvideo
+</pre>
+
+<p>I am told that PackageKit can provide an API to access the kind of
+information mentioned in DEP-11.  I have not yet had time to look at
+it, but hope the PackageKit people in Debian are on top of these
+issues.</p>
+
+<p><strong>Update 2013-01-16 13:35</strong>: Updated numbers after
+discovering a typo in my script.</p>
+
+      </div>
+      <div class="tags">
+        
+        
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
+        
+        
+      </div>
+    </div>
+    <div class="padding"></div>
+    
+    <div class="entry">
+      <div class="title">
+        <a href="http://people.skolelinux.org/pere/blog/Using_modalias_info_to_find_packages_handling_my_hardware.html">Using modalias info to find packages handling my hardware</a>
+      </div>
+      <div class="date">
+        15th January 2013
+      </div>
+      <div class="body">
+        <p>Yesterday, I wrote about the
+<a href="http://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html">modalias
+values provided by the Linux kernel</a> following my hope for
+<a href="http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html">better
+dongle support in Debian</a>.  Using this knowledge, I have tested how
+modalias values attached to package names can be used to map packages
+to hardware.  This allow the system to look up and suggest relevant
+packages when I plug in some new hardware into my machine, and replace
+discover and discover-data as the database used to map hardware to
+packages.</p>
+
+<p>I create a modaliases file with entries like the following,
+containing package name, kernel module name (if relevant, otherwise
+the package name) and globs matching the relevant hardware
+modalias.</p>
+
+<p><blockquote>
+Package: package-name
+<br>Modaliases: module(modaliasglob, modaliasglob, modaliasglob)</p>
+</blockquote></p>
+
+<p>It is fairly trivial to write code to find the relevant packages
+for a given modalias value using this file.</p>
+
+<p>An entry like this would suggest the video and picture application
+cheese for many USB web cameras (interface bus class 0E01):</p>
+
+<p><blockquote>
+Package: cheese
+<br>Modaliases: cheese(usb:v*p*d*dc*dsc*dp*ic0Eisc01ip*)</p>
+</blockquote></p>
+
+<p>An entry like this would suggest the pcmciautils package when a
+CardBus bridge (bus class 0607) PCI device is present:</p>
+
+<p><blockquote>
+Package: pcmciautils
+<br>Modaliases: pcmciautils(pci:v*d*sv*sd*bc06sc07i*)
+</blockquote></p>
+
+<p>An entry like this would suggest the package colorhug-client when
+plugging in a ColorHug with USB IDs 04D8:F8DA:</p>
+
+<p><blockquote>
+Package: colorhug-client
+<br>Modaliases: colorhug-client(usb:v04D8pF8DAd*)</p>
+</blockquote></p>
+
+<p>I believe the format is compatible with the format of the Packages
+file in the Debian archive.  Ubuntu already uses their Packages file
+to store their mappings from packages to hardware.</p>
+
+<p>By adding a XB-Modaliases: header in debian/control, any .deb can
+announce the hardware it support in a way my prototype understand.
+This allow those publishing packages in an APT source outside the
+Debian archive as well as those backporting packages to make sure the
+hardware mapping are included in the package meta information.  I've
+tested such header in the pymissile package, and its modalias mapping
+is working as it should with my prototype.  It even made it to Ubuntu
+Raring.</p>
+
+<p>To test if it was possible to look up supported hardware using only
+the shell tools available in the Debian installer, I wrote a shell
+implementation of the lookup code.  The idea is to create files for
+each modalias and let the shell do the matching.  Please check out and
+try the
+<a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/hw-support-lookup?view=co">hw-support-lookup</a>
+shell script.  It run without any extra dependencies and fetch the
+hardware mappings from the Debian archive and the subversion
+repository where I currently work on my prototype.</p>
+
+<p>When I use it on a machine with a yubikey inserted, it suggest to
+install yubikey-personalization:</p>
+
+<p><blockquote>
+% ./hw-support-lookup
+<br>yubikey-personalization
+<br>%
+</blockquote></p>
+
+<p>When I run it on my Thinkpad X40 with a PCMCIA/CardBus slot, it
+propose to install the pcmciautils package:</p>
+
+<p><blockquote>
+% ./hw-support-lookup 
+<br>pcmciautils
+<br>%
+</blockquote></p>
+
+<p>If you know of any hardware-package mapping that should be added to
+<a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/modaliases?view=co">my
+database</a>, please tell me about it.</p>
+
+<p>It could be possible to generate several of the mappings between
+packages and hardware.  One source would be to look at packages with
+kernel modules, ie packages with *.ko files in /lib/modules/, and
+extract their modalias information.  Another would be to look at
+packages with udev rules, ie packages with files in
+/lib/udev/rules.d/, and extract their vendor/model information to
+generate a modalias matching rule.  I have not tested any of these to
+see if it work.</p>
+
+<p>If you want to help implementing a system to let us propose what
+packages to install when new hardware is plugged into a Debian
+machine, please send me an email or talk to me on
+<a href="irc://irc.debian.org/%23debian-devel">#debian-devel</a>.</p>
+
+      </div>
+      <div class="tags">
+        
+        
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>.
+        
+        
+      </div>
+    </div>
+    <div class="padding"></div>
+    
+    <div class="entry">
+      <div class="title">
+        <a href="http://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html">Modalias strings - a practical way to map "stuff" to hardware</a>
+      </div>
+      <div class="date">
+        14th January 2013
+      </div>
+      <div class="body">
+        <p>While looking into how to look up Debian packages based on hardware
+information, to find the packages that support a given piece of
+hardware, I refreshed my memory regarding modalias values, and decided
+to document the details.  Here are my findings so far, also available
+in
+<a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/">the
+Debian Edu subversion repository</a>:
+
+<p><strong>Modalias decoded</strong></p>
+
+<p>This document try to explain what the different types of modalias
+values stands for.  It is in part based on information from
+&lt;URL: <a href="https://wiki.archlinux.org/index.php/Modalias">https://wiki.archlinux.org/index.php/Modalias</a> &gt;,
+&lt;URL: <a href="http://unix.stackexchange.com/questions/26132/how-to-assign-usb-driver-to-device">http://unix.stackexchange.com/questions/26132/how-to-assign-usb-driver-to-device</a> &gt;,
+&lt;URL: <a href="http://code.metager.de/source/history/linux/stable/scripts/mod/file2alias.c">http://code.metager.de/source/history/linux/stable/scripts/mod/file2alias.c</a> &gt; and
+&lt;URL: <a href="http://cvs.savannah.gnu.org/viewvc/dmidecode/dmidecode.c?root=dmidecode&view=markup">http://cvs.savannah.gnu.org/viewvc/dmidecode/dmidecode.c?root=dmidecode&view=markup</a> &gt;.
+
+<p>The modalias entries for a given Linux machine can be found using
+this shell script:</p>
+
+<pre>
+find /sys -name modalias -print0 | xargs -0 cat | sort -u
+</pre>
+
+<p>The supported modalias globs for a given kernel module can be found
+using modinfo:</p>
+
+<pre>
+% /sbin/modinfo psmouse | grep alias:
+alias:          serio:ty05pr*id*ex*
+alias:          serio:ty01pr*id*ex*
+%
+</pre>
+
+<p><strong>PCI subtype</strong></p>
+
+<p>A typical PCI entry can look like this.  This is an Intel Host
+Bridge memory controller:</p>
+
+<p><blockquote>
+pci:v00008086d00002770sv00001028sd000001ADbc06sc00i00
+</blockquote></p>
+
+<p>This represent these values:</p>
+
+<pre>
+ v   00008086  (vendor)
+ d   00002770  (device)
+ sv  00001028  (subvendor)
+ sd  000001AD  (subdevice)
+ bc  06        (bus class)
+ sc  00        (bus subclass)
+ i   00        (interface)
+</pre>
+
+<p>The vendor/device values are the same values outputted from 'lspci
+-n' as 8086:2770.  The bus class/subclass is also shown by lspci as
+0600.  The 0600 class is a host bridge.  Other useful bus values are
+0300 (VGA compatible card) and 0200 (Ethernet controller).</p>
+
+<p>Not sure how to figure out the interface value, nor what it
+means.</p>
+
+<p><strong>USB subtype</strong></p>
+
+<p>Some typical USB entries can look like this.  This is an internal
+USB hub in a laptop:</p>
+
+<p><blockquote>
+usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00
+</blockquote></p>
+
+<p>Here is the values included in this alias:</p>
+
+<pre>
+ v    1D6B  (device vendor)
+ p    0001  (device product)
+ d    0206  (bcddevice)
+ dc     09  (device class)
+ dsc    00  (device subclass)
+ dp     00  (device protocol)
+ ic     09  (interface class)
+ isc    00  (interface subclass)
+ ip     00  (interface protocol)
+</pre>
+
+<p>The 0900 device class/subclass means hub.  Some times the relevant
+class is in the interface class section.  For a simple USB web camera,
+these alias entries show up:</p>
+
+<p><blockquote>
+usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc01ip00
+<br>usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc02ip00
+<br>usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc01ip00
+<br>usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc02ip00
+</blockquote></p>
+
+<p>Interface class 0E01 is video control, 0E02 is video streaming (aka
+camera), 0101 is audio control device and 0102 is audio streaming (aka
+microphone).  Thus this is a camera with microphone included.</p>
+
+<p><strong>ACPI subtype</strong></p>
+
+<p>The ACPI type is used for several non-PCI/USB stuff.  This is an IR
+receiver in a Thinkpad X40:</p>
+
+<p><blockquote>
+acpi:IBM0071:PNP0511:
+</blockquote></p>
+
+<p>The values between the colons are IDs.</p>
+
+<p><strong>DMI subtype</strong></p>
+
+<p>The DMI table contain lots of information about the computer case
+and model.  This is an entry for a IBM Thinkpad X40, fetched from
+/sys/devices/virtual/dmi/id/modalias:</p>
+
+<p><blockquote>
+dmi:bvnIBM:bvr1UETB6WW(1.66):bd06/15/2005:svnIBM:pn2371H4G:pvrThinkPadX40:rvnIBM:rn2371H4G:rvrNotAvailable:cvnIBM:ct10:cvrNotAvailable:
+</blockquote></p>
+
+<p>The values present are</p>
+
+<pre>
+ bvn  IBM            (BIOS vendor)
+ bvr  1UETB6WW(1.66) (BIOS version)
+ bd   06/15/2005     (BIOS date)
+ svn  IBM            (system vendor)
+ pn   2371H4G        (product name)
+ pvr  ThinkPadX40    (product version)
+ rvn  IBM            (board vendor)
+ rn   2371H4G        (board name)
+ rvr  NotAvailable   (board version)
+ cvn  IBM            (chassis vendor)
+ ct   10             (chassis type)
+ cvr  NotAvailable   (chassis version)
+</pre>
+
+<p>The chassis type 10 is Notebook.  Other interesting values can be
+found in the dmidecode source:</p>
+
+<pre>
+  3 Desktop
+  4 Low Profile Desktop
+  5 Pizza Box
+  6 Mini Tower
+  7 Tower
+  8 Portable
+  9 Laptop
+ 10 Notebook
+ 11 Hand Held
+ 12 Docking Station
+ 13 All In One
+ 14 Sub Notebook
+ 15 Space-saving
+ 16 Lunch Box
+ 17 Main Server Chassis
+ 18 Expansion Chassis
+ 19 Sub Chassis
+ 20 Bus Expansion Chassis
+ 21 Peripheral Chassis
+ 22 RAID Chassis
+ 23 Rack Mount Chassis
+ 24 Sealed-case PC
+ 25 Multi-system
+ 26 CompactPCI
+ 27 AdvancedTCA
+ 28 Blade
+ 29 Blade Enclosing
+</pre>
+
+<p>The chassis type values are not always accurately set in the DMI
+table.  For example my home server is a tower, but the DMI modalias
+claim it is a desktop.</p>
+
+<p><strong>SerIO subtype</strong></p>
+
+<p>This type is used for PS/2 mouse plugs.  One example is from my
+test machine:</p>
+
+<p><blockquote>
+serio:ty01pr00id00ex00
+</blockquote></p>
+
+<p>The values present are</p>
+
+<pre>
+  ty  01  (type)
+  pr  00  (prototype)
+  id  00  (id)
+  ex  00  (extra)
+</pre>
+
+<p>This type is supported by the psmouse driver.  I am not sure what
+the valid values are.</p>
+
+<p><strong>Other subtypes</strong></p>
+
+<p>There are heaps of other modalias subtypes according to
+file2alias.c.  There is the rest of the list from that source: amba,
+ap, bcma, ccw, css, eisa, hid, i2c, ieee1394, input, ipack, isapnp,
+mdio, of, parisc, pcmcia, platform, scsi, sdio, spi, ssb, vio, virtio,
+vmbus, x86cpu and zorro.  I did not spend time documenting all of
+these, as they do not seem relevant for my intended use with mapping
+hardware to packages when new stuff is inserted during run time.</p>
+
+<p><strong>Looking up kernel modules using modalias values</strong></p>
+
+<p>To check which kernel modules provide support for a given modalias,
+one can use the following shell script:</p>
+
+<pre>
+  for id in $(find /sys -name modalias -print0 | xargs -0 cat | sort -u); do \
+    echo "$id" ; \
+    /sbin/modprobe --show-depends "$id"|sed 's/^/  /' ; \
+  done
+</pre>
+
+<p>The output can look like this (only the first few entries as the
+list is very long on my test machine):</p>
+
+<pre>
+  acpi:ACPI0003:
+    insmod /lib/modules/2.6.32-5-686/kernel/drivers/acpi/ac.ko 
+  acpi:device:
+  FATAL: Module acpi:device: not found.
+  acpi:IBM0068:
+    insmod /lib/modules/2.6.32-5-686/kernel/drivers/char/nvram.ko 
+    insmod /lib/modules/2.6.32-5-686/kernel/drivers/leds/led-class.ko 
+    insmod /lib/modules/2.6.32-5-686/kernel/net/rfkill/rfkill.ko 
+    insmod /lib/modules/2.6.32-5-686/kernel/drivers/platform/x86/thinkpad_acpi.ko 
+  acpi:IBM0071:PNP0511:
+    insmod /lib/modules/2.6.32-5-686/kernel/lib/crc-ccitt.ko 
+    insmod /lib/modules/2.6.32-5-686/kernel/net/irda/irda.ko 
+    insmod /lib/modules/2.6.32-5-686/kernel/drivers/net/irda/nsc-ircc.ko 
+  [...]
+</pre>
+
+<p>If you want to help implementing a system to let us propose what
+packages to install when new hardware is plugged into a Debian
+machine, please send me an email or talk to me on
+<a href="irc://irc.debian.org/%23debian-devel">#debian-devel</a>.</p>
+
+<p><strong>Update 2013-01-15:</strong> Rewrite "cat $(find ...)" to
+"find ... -print0 | xargs -0 cat" to make sure it handle directories
+in /sys/ with space in them.</p>
+
+      </div>
+      <div class="tags">
+        
+        
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>.
+        
+        
+      </div>
+    </div>
+    <div class="padding"></div>
+    
     <div class="entry">
       <div class="title">
         <a href="http://people.skolelinux.org/pere/blog/Moved_the_pymissile_Debian_packaging_to_collab_maint.html">Moved the pymissile Debian packaging to collab-maint</a>
@@ -157,7 +975,7 @@ please send me an email. :)</p>
       <div class="tags">
         
         
-        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>.
         
         
       </div>
@@ -320,7 +1138,9 @@ siste måneden.</p>
 <li>2013
 <ul>
 
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (4)</a></li>
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2013/02/">February (2)</a></li>
 
 </ul></li>
 
@@ -464,13 +1284,13 @@ siste måneden.</p>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (5)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (6)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (12)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (62)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (70)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (118)</a></li>
 
@@ -480,7 +1300,7 @@ siste måneden.</p>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (168)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (176)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (21)</a></li>
 
@@ -492,6 +1312,8 @@ siste måneden.</p>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (32)</a></li>
 
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (5)</a></li>
+
  <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (17)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (8)</a></li>
@@ -502,7 +1324,7 @@ siste måneden.</p>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (25)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (219)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (220)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (148)</a></li>
 
@@ -512,7 +1334,7 @@ siste måneden.</p>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (41)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (61)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (62)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (1)</a></li>
 
@@ -540,7 +1362,7 @@ siste måneden.</p>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (5)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (12)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (13)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (1)</a></li>
 
@@ -557,7 +1379,7 @@ siste måneden.</p>
 
     </div>
     <p style="text-align: right">
- Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.4</a>
+ Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
 </p>
 
   </body>