X-Git-Url: https://pere.pagekite.me/gitweb/homepage.git/blobdiff_plain/ba2f1a26386a19a06d5c0379b3181332d498b104..bcd0bac910f20521ddebe3ff22337dec2aa23967:/blog/index.rss diff --git a/blog/index.rss b/blog/index.rss index 13cebea5c8..df56b115cf 100644 --- a/blog/index.rss +++ b/blog/index.rss @@ -6,6 +6,257 @@ http://people.skolelinux.org/pere/blog/ + + Modalias strings - a practical way to map "stuff" to hardware + http://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html + http://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html + Mon, 14 Jan 2013 11:10:00 +0100 + <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> +cat $(find /sys -name modalias) | 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 $(cat $(find /sys -name modalias)|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> + + + Moved the pymissile Debian packaging to collab-maint http://people.skolelinux.org/pere/blog/Moved_the_pymissile_Debian_packaging_to_collab_maint.html @@ -535,38 +786,5 @@ for the organisations I am involved in.</p> - - 61 kommuner lenker nå til FiksGataMi fra sine nettsider - http://people.skolelinux.org/pere/blog/61_kommuner_lenker_n__til_FiksGataMi_fra_sine_nettsider.html - http://people.skolelinux.org/pere/blog/61_kommuner_lenker_n__til_FiksGataMi_fra_sine_nettsider.html - Tue, 11 Dec 2012 23:55:00 +0100 - <p>For noen dager siden omfavnet nok en kommune NUUGs -<a href="http://www.fiksgatami.no/">FiksGataMi</a>. Med 61 kommuner -som lenker til FiksGataMi fra sine hjemmesider er «markedsandelen» 14% -(av 429 kommuner). Siden -<a href="http://people.skolelinux.org/pere/blog/59_kommuner_omfavner_n__FiksGataMi.html">siste -oppdatering i november</a> har kommunene Re og Vågsøy kommet til og -slår følge med kommunene Askim, Askøy, Audnedal, Aure, Balestrand, -Bærum, Eide, Farsund, Flekkefjord, Folldal, Gran, Grue, Hadsel, -Halden, Halsa, Hamar, Hobøl, Holtålen, Hægebostad, Høyanger, -Kongsberg, Kristiansund, Kvinesdal, Kviteseid, Levanger, Lindesnes, -Luster, Lyngdal, Løten, Mandal, Marnardal, Moss, Namsos, Nissedal, -Nordreisa, Randaberg, Rindal, Sel, Sirdal, Skiptvet, Sortland, -Spydeberg, Stange, Stjørdal, Stord, Søgne, Sør-Odal, Tolga, Trysil, -Tynset, Tysvær, Ullensvang Herad, Utsira, Vennesla, Verdal, Vågan, -Vågå, Våler og Åseral. Oppdatert liste er tilgjengelig fra -<a href="http://wiki.nuug.no/grupper/fiksgatami/positivemottakere">NUUGs -wiki</a>. Kartet er dog ikke oppdatert med de siste kommunene.</p> - -<p>Kanskje du bør høre med din kommune om de vil bli mer aktive -brukere av FiksGataMi? Se -<a href="http://people.skolelinux.org/pere/blog/40_kommuner_lenker_n__til_FiksGataMi_fra_sine_nettsider___gj_r_din_.html">en -tidligere bloggpost</a> med tips om hvordan det kan gjøres.</p> - -<p>I snitt rapporteres det nå via FiksGataMi ca. 60 meldinger fra -innbyggerne i uka om feil på offentlig infrastruktur.</p> - - -