Im Juni 2007 habe ich mir mein aktuelles Notebook zugelegt. Das vorinstallierte Vista Ultimate war schnell getilgt und durch Linux ersetzt. Fast alles funktionierte sofort, mit Ausnahme der Webcam und der Lautsprecher. Allerdings war ich zuversichtlich, die Probleme schnell lösen zu können.
Im Falle der Webcam war das auch so; Sie wurde von Linux prinzipiell unterstützt aber nicht erkannt. Das Problem hatte ich schnell behoben.
Anders sah die Sache leider bei der Soundkarte aus. Zwar ließ sich das Problem einfach diagnostizieren, aber schwer lösen. Die verbaute Hardware und der ALSA snd-hda-intel Treiber haben ein Feature, welches sich “jack sense” nennt. Wenn ein Kopfhörer eingesteckt wird, werden die Lautsprecher softwaremäßig abgeschaltet. Leider hat Dell nicht das Referenzlayout der Soundkarte übernommen, sondern die Kontakte modifiziert und vertauscht. Der Treiber meinte also nun permanent, dass ein Kopfhörer eingesteckt sei und schaltete die Boxen stumm (was in keinem Mixer angezeigt wurde).
Die richtige Pin-Belegung hatte ein Leidensgenosse im Windows-Treiber entdeckt veröffentlicht. Einige Versuche, den ALSA Treiber zu patchen schlugen kläglich fehl; Mehrere tausend Zeilen Code waren für meine halbherzigen Anläufe einfach zu komplex.
Gestern nun habe ich die Soundkarte endlich zum fliegen bekommen! Dank hda-verb konnte ich die Pin-Belegung des geladenen Treibers zur Laufzeit ändern! Ich kompilerte das Tool und führte folgende Aufrufe durch:
./hda-verb /dev/snd/hwC0D0 0×1 set_gpio_data 5
./hda-verb /dev/snd/hwC0D0 0×1 set_gpio_dir 5
./hda-verb /dev/snd/hwC0D0 0×1 set_gpio_mask 5
Ein kurzes, leises Knacken und die Boxen erwachten zum Leben! Überraschend satter Klang dank verbautem Subwoofer ließ mein Herz höher schlagen. Meinen Quick-Hack permanent beim Bootvorgang einzubauen ist nun nur noch eine Fingerübung und stellt keine große Herausforderung dar.
Es ist ein unbeschreibliches Gefühl, das letzte unter Linux bestehende Manko des ansonsten genialen Dell XPS M2010 ausgeräumt zu haben! Damit wird nun jedes kleine Detail der aber auch wirklich exotischen Hardware von Linux unterstützt. Linux for the win!