Open Source im professionellen Einsatz

Treiberentwicklung unter Linux

Schöpfung wider Willen

Die Entwicklung von Gerätetreibern ist dank der Ignoranz vieler Hersteller nach wie vor eine der Hauptaufgaben der Linux-Community. Dieser Artikel zeigt am Beispiel eines USB-Empfängers für DVB-T und analoges Fernsehen, wie Linux-Treiber mit viel Aufwand und Hilfe der Windows-Treiber entstehen.

Linux-Treiber stehen bei vielen Hardwareherstellern nach wie vor ganz unten auf der Prioritätsliste, nur bei Grafikkarten, Mainboard-Chipsätzen und Raid-Controllern haben die Anbieter den Linux-Trend erkannt. So bleibt die Arbeit der Treiberentwicklung meist an der Linux-Gemeinde hängen. Erschwerend ist dabei, dass die Ansteuerung von Spezialchips oder die Funktionen der Firmware zum Geschäftsgeheimnis erklärt werden, sodass die Linux-Entwickler keinerlei Informationen bekommen, wie die Geräte überhaupt arbeiten.

Vor dieser Situation stand der Autor dieses Artikels, als es darum ging, für den USB-TV-Empfänger Medion MD 95700 einen Linux-Treiber zu entwickeln.

Gezielte Treibersuche

Wer damit beginnt, einen eigenen Treiber zu schreiben, sollte zuvor unbedingt nachsehen, ob nicht bereits jemand an einem Treiber arbeitet. Die üblichen Suchmaschinen sind die ersten Anlaufstellen, weitere Informationen liefern die Kernelquellen und die Kernel-Mailingliste. Bei relativ neuen Geräten lohnt sich auch ein Blick auf die Website der für die Geräteklasse zuständigen Kernel-Maintainer und -Maintainergruppen, die in der Datei »MAINTAINERS« im Kernel-Tree genannt sind. Bringt auch das keinen Erfolg, bleibt als letzte Möglichkeit, noch auf der Mailingliste nachzufragen, ob schon andere an einem Treiber für das Gerät arbeiten.

Ein Problem bei der Suche nach vorhandenen Treibern ist, dass viele Hersteller dem Gerät eine eigene Bezeichnung geben, obwohl unter der Haube ein Referenzdesign steckt, das auch andere Anbieter verwenden, oder dass es sich nur um eine geringfügige Modifikation eines älteren, bereits unterstützten Geräts handelt. Diese Fragen kann nur ein Blick ins Innere des Geräts beantworten.

Wegen der hohen Abstraktion bei der Open-Source-Treiberentwicklung kann es sein, dass der Treiber einen Namen trägt, der vom Chipsatz oder vom Gerätenamen eines anderen Herstellers abgeleitet ist. Handelt es sich nur um den Klon eines anderen Geräts, das bereits unterstützt wird, kann auch bereits ein Treiber existieren, der sich nur aufgrund veränderter Device-IDs nicht für das neue Gerät zuständig fühlt, es aber teilweise oder sogar komplett unterstützt.

In solchen Idealfällen zeigt sich die Stärke von Open-Source-Implementationen: Während unter Windows ein neuer Treiber aus den Quellen des Herstellers übersetzt werden müsste, die nicht öffentlich verfügbar sind, genügt es bei Linux, die neue ID im offenen Treiber einzutragen. Ein gutes Beispiel dafür sind TV-Karten mit Brooktrees BT-8xx- oder Conexant-88xx-Chipsätzen.

Klone und Neuentwicklungen

Bei USB-Geräten ist es nicht immer so einfach: Einige der vom Autor im Vorfeld untersuchten USB-Geräte sind zwar Hardware-seitig nur Klone, durch Veränderungen in der Firmware unterscheidet sich ihre Ansteuerung aber völlig von der bei den bekannten Geräten. Für den Hybrid-Empfänger MD 95700 für analoges und digitales Fernsehen gab es noch keinen Linux-Treiber, sodass der Autor selbst Hand anlegen musste.

Das vorliegende Gerät wurde von einem Linux-Anwender eingesandt, der es bei dem Discounter Aldi gekauft und sich auf der Suche nach Treibern an den Autor gewandt hatte. Dessen Recherche lieferte keine Ergebnisse, die Suchmaschinen fanden lediglich zwei Diskussionen, in denen es um den Windows- und Mac-OS-Treiber ging. Dort waren aber wenigstens die genauen Bezeichnungen der Chips, die das Medion-Gerät enthält, aufgelistet.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook