- <div class="title"><a href="http://people.skolelinux.org/pere/blog/Ode_til_Frikanalen___.html">Ode til Frikanalen...</a></div>
- <div class="date"> 2nd November 2012</div>
- <div class="body"><p>I 2009 bidro vi i <a href="http://www.nuug.no/">NUUG</a> til at
-<a href="http://www.frikanalen.no/">Frikanalen</a> ble
-<a href="http://people.skolelinux.org/pere/blog/Frikanalen_og_jul_i_studentr_det.html">tilgjengelig
-i et fritt og åpent standardisert videoformat</a>. Bakgrunnen var at
-vi i NUUG likte tanken på «Youtube på TV», der enhver borger kunne få
-mulighet til å kringkaste sin video på TV, og NUUG ble medlem i
-Frikanalen for å støtte dette arbeidet. Frikanalen er borger-TV, der
-alle kan være sin egen redaktør og lage TV uten solid finansielle
-muskler. Siden den gang har vi bistått kanalen på ulikt vis, blant
-annet med å hjelpe til med å utvikle en løsning basert på fri
-programvare for drift av TV-kanalen. Dette utviklingsarbeidet pågår
-fortsatt, men det er god fremgang og godt håp om å få på plass en
-webbasert løsning for styring av TV-kanalen basert på fri programvare.
-Dagens produksjonsløsning er basert på Windows og proprietær
-programvare, et resultat av at kulturdepartementet krevde at
-Frikanalen kom på lufta veldig raskt da departementet overtalte
-Frivillighet Norge til å snappe opp konseptet. Dagens
-produksjonsløsning er dyr i drift, og en fri programvareløsning bør
-kutte kostnadene litt. Men det er fortsatt dyrt å kjøpe tilgang til å
-sende ut på RiksTV og andre TV-distributører, noe som spiser av
-kanalens begrensede midler.</p>
-
-<p>Nytt for 2013 er dessverre at kulturdepartementet kutter all støtte
-til Frikanalen. Mens det i
-<a href="http://www.regjeringen.no/pages/35168579/PDFS/PRP201120120001KUDDDDPDFS.pdf">statsbudsjettet
-for 2012</a> sto følgende (side 55):</p>
-
-<blockquote>
-
-Det foreslås et driftstilskudd på 1 mill. kroner i 2012 til
-Frikanalen. Kulturdepartementet har inngått avtale om investerings- og
-driftsstøtte til Frikanalen som gir et økonomisk grunnlag for kanalen
-i oppstartsårene. En forutsetning for støtten er bl.a. at Frikanalen
-tilstreber å være en reell ytringskanal for samtlige partier og lister
-i forbindelse med valg.
-
-</blockquote>
-
-<p>Så har kulturdepartementet
-<a href="http://www.knif.no/Innkjop/Knif-Samfunn/Informasjonsbrev/Informasjonsbrev-2012/Frikanalen">kuttet
-all støtte for 2013</a>:</p>
-
-<blockquote>
-
-<p>Statsbudsjettet 2013: Frikanalen</p>
-<p>Det er ikke satt av penger i statsbudsjettet for 2013 til Frikanalen.</p>
-
-<p>Frivillighet Norge var fødselshjelper for foreningen Frikanalen i
-2007. Kanalen har fått 1 mill kr i altfor lav bevilgning hvis kanalen
-skulle klare å realisere målet om å være en opplæringsarena for
-frivillige organisasjoner som ville lære å bruke billedspråk.</p>
-
-<p>TV-mediets posisjon som kommunikasjonskanal har endret seg
-betydelig siden Frikanalen ble etablert. Det er supplert og til dels
-erstattet av andre kommunikasjonskanaler, som det også er
-ressurskrevende for organisasjonene å ta i bruk.</p>
-
-</blockquote>
-
-<p>Når en ser bort fra den merkelige begrunnelsen, da Frikanalen så
-vidt jeg vet aldri har tatt mål av seg «å være en opplæringsarena for
-frivillige organisasjoner som ville lære å bruke billedspråk», så er
-det veldig trist at kulturdepartementet kutter støtten.</p>
-
-<p>Fundamentet for Frikanalen ble lagt da Stortinget vedtok
-innføringen av det digitale bakkenettet. En oversikt over
-<a href="http://www.openchannel.no/stortinget.html">det Stortinget
-skrev</a> da finnes på nettsidene til åpen kanal. Der het det blant
-annet om «åpne kanaler»:</p>
-
-<blockquote>
-
-Et annet flertall, alle unntatt medlemmene fra Fremskrittspartiet, vil
-også peke på at man ut fra ønsket om en bredt anlagt offentlig debatt,
-må se på den faktiske tilgjengelighet allmennheten har til
-TV-mediet. I mange land har man ønsket å sikre denne tilgangen gjennom
-egen lovgivning som forplikter allmennkringkastere eller distributører
-å holde av en del av sendekapasiteten til livssynskanaler, ideelle
-organisasjoner og lignende. I Norden betegnes dette gjerne som åpne
-kanaler. Dette flertallet mener dette er et interessant område sett i
-et ytringsfrihetsperspektiv. Dette flertallet mener derfor at staten
-bør legge til rette for dette når man ved innføring av nye
-distribusjonskanaler skal utarbeide regelverk og gi konsesjoner.
-</blockquote>
-
-<p>Veien frem har gått over svært ulendt terreng, noe en kan se litt
-av konturene av i en artikkel hos Vox Publica med tittel
-«<a href="http://voxpublica.no/2007/03/hvor-apen-blir-frikanalen/">Hvor
-åpen blir “Frikanalen”?</a>». Begge tekstene er nyttig lesning for å
-forstå mer om hva Frikanalen er. Jeg anbefaler alle å støtte opp om
-Frikanalen, bli medlem, lage og sende programmer der.</p>
+ <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
+<URL: <a href="https://wiki.archlinux.org/index.php/Modalias">https://wiki.archlinux.org/index.php/Modalias</a> >,
+<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> >,
+<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> > and
+<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> >.
+
+<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>