Alle Jahre wieder kommt man in die Verlegenheit schlecht unterstützte Hardware unter Linux zum laufen zu bewegen. Ein solcher Fall sind die verschiedenen ISDN-Karten und Terminal Adapter der Fritz Serie von AVM. AVM hat irgendwann 2007 die Linux-Unterstützung aufgegeben und keine Treiber-Updates für neue Kernel released, leider sind die Treiber Closed-Source bzw. AVM wollte wohl auch nicht die weitere Entwicklung in Community Hände geben.
Im Netz findet man dazu jede Menge hilfereicher Tips und Tricks sowie Patches dazu. Doch mit jeder neuen Kernel-Gerneration kommen auch wieder neue Probleme hinzu und die alten Tricks helfen nicht mehr weiter. Und wenn man aus bestimmten Gründen nicht gleich einen kompletten Kernel samt der Fritz-Module compilieren will, dann wird es noch komplizierter. Das aktuellste was ich an gepatchen Sourcen gefunden habe, war ein Archiv für Kernel 2.6.24 und die Kanotix Distribution.
Das Problem mit der MODULE_LICENSE
Doch der erste Compilations-Versuch fand ein schnelles Ende ..
[sourcecode]
#> make
make -C /lib/modules/2.6.26-2-686/build SUBDIRS=/fritz/src modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.26-2-686'
CC [M] /driver/fritz/src/main.o
CC [M] /driver/fritz/src/driver.o
CC [M] /driver/fritz/src/tools.o
CC [M] /driver/fritz/src/tables.o
CC [M] /driver/fritz/src/queue.o
CC [M] /driver/fritz/src/lib.o
LD [M] /driver/fritz/src/fcusb2.o
Building modules, stage 2.
MODPOST 1 modules
FATAL: modpost: GPL-incompatible module fcusb2.ko uses GPL-only symbol 'usb_kill_urb'
make[2]: *** [__modpost] Fehler 1
make[1]: *** [modules] Fehler 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-2-686'
make: *** [fcusb2.o] Fehler 2
[/sourcecode]
Ab Kernel 2.6.25 wurde einige Kernel-Funktionen für die Nutzung durch Treiber die unter keiner GPL-ähnlichen Lizenz stehen gesperrt. Man stünde also in diesem Fall im Regen, da es weder von AVM noch von den Kernel-Entwicklern Unterstützung oder Abhilfe für dieses Problem gibt. Allerdings gibt eine einfache Lösung für dieses Problem, so kann natürlich jeder eigenhängig in dem Modul-Sourcecode den String MODULE_LICENSE ("Proprietary") durch MODULE_LICENSE ("GPL") ersetzen,
Anschliessend können die Module ohne Abbruch compiliert werden. Wenn man nun noch die von einigen Modulen benötigten Firmware-Dateien nach /usr/share/isdn kopiert, lassen sich Module wie fcpci.ko oder fcusb2.ko ohne Probleme in den Kernel laden. Für eine korrekte Funktion der CAPI muss noch der entsprechende Treiber aktiviert werden. Als Beispiel aktiviere ich hier mal das Modul für eine AVM FritzCard USB v2.1 indem folgende Zeile der Datei /etc/isdn/capi.conf hinzugefügt wird.
"fcusb2 fus3base.frm DSS1 - - - -"
Hinweis: Bei einer FritzCard USB v2.0 muss bei der Aktivierung eine andere Firmwaredatei geladen werden.
"fcusb2 fus2base.frm DSS1 - - - -"
Der BChannels: 0 Fehler
Allerdings zeigt sich bei einem ersten Test mittles capiinit und einem anschliessenden capiinfo das ein Bug der korrekten Funktion im Wege steht.
[sourcecode]
Number of Controllers : 1
Controller 1:
Manufacturer:
CAPI Version: 2.0
Manufacturer Version: 49.23
Serial Number: 1000001
BChannels: 0
Global Options: 0x00000000
B1 protocols support: 0x00000000
B2 protocols support: 0x00000000
B3 protocols support: 0x00000000
0100
0000
00000000
00000000
00000000
00000000
00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000
Supplementary services support: 0x000003ff
Hold / Retrieve
Terminal Portability
ECT
3PTY
Call Forwarding
Call Deflection
MCID
CCBS
[/sourcecode]
Wenn capiinfo zwar den Controller anzeigt aber keine BChannels und darauf unterstützten Protokole erkennt, dann bedarf es weiterer Korrekturen. Nach etwas weiterer Recherche zeigt sich, das an einer Stelle die falsche Funktion benutzt wurde. Tauscht man daher den String strncpy (ctrl->manu, gegen lib_strncpy (ctrl->manu, und compliiert die Module erneut, dann ist auch dieses Problem umgangen.
Wem das jetzt zuviel Infos aufeinmal waren oder wer noch nicht so firm ist mit dem Patchen & Compilieren des Quellcodes. Der kann sich hier folgendes Bash-Script nach /usr/src herunterladen, mit "chmod 755 build_fritz_modules.sh" ausführbar machen und schliesslich ausführen.
Downloadlink build_fritz_modules.sh
Unterstütze Hardware
Dank der hervorragenden Vorarbeit von den Kanotix Entwicklern werden auf diese Weise viele der Fritz ISDN-Terminal Adapter wieder unterstützt. Hier eine Liste mit Treibermodulen und der unterstützten Hardware (soweit ich das sehen konnte)
Modul
Hardware
fcdsl.ko
AVM FRITZ!Card DSL
fcdsl2.ko
AVM FRITZ!Card DSL V2.0
fcdslsl.ko
AVM FRITZ!Card DSL SL
fcdslslusb.ko
AVM FRITZ!Card DSL SL USB
fcdslusb.ko
AVM FRITZ!Card DSL USB
fcdslusba.ko
fcpci.ko
AVM FRITZ!Card PCI V2.0
fcpcmcia.ko
AVM FRITZ!Card PCMCIA V2.0
fcusb.ko
AVM Fritz!Card USB V1.x
fcusb2.ko
AVM Fritz!Card USB V2.1 u. V2.0
fwlanusb.ko
AVM Fritz!WLAN USB
fxusb.ko
AVM Fritz!X USB Original
fxusb_cz.ko
AVM Fritz!X USB, Teledat 120
Eine Garantie für die Lauffähigkeit kann ich natürlich nicht geben. Bislang habe ich persönlich lediglich die Fritzcard USB V1 und V2.1 testen können.
Fazit
Angesichts der fortschreitenden Entwicklung am Kernel dürften diese Patches & Tricks aber nicht mehr lange funktionieren. Da die ISDN-Terminal-Adapter von AVM (durch ihren günstigen Preis) immernoch eine hohe Verbreitung haben im deutschen Raum, sollten sich die Kernel-Entwickler Gedanken machen, ob man nicht hier einen CAPI-Treiber auf OSS-Basis entwickeln kann. Allerdings liegt es auch an AVM der Linux-Community entgegen zu kommen. Sie könnten z.B. Schnittstellen weiter offenlegen und / oder propritären Binäre-Code zuverfügung stellen, der von einem OSS-Treiber gemantelt (eng. "wrappen") wird, um auf den jeweils aktuellen Kernel lauffähig zu sein.
Das ist zwar nicht wirklich optimal, aber vielleicht werden auf diese Weise die treuen Anwender von Fritz-Produkten nicht gleich zum Umstieg auf Konkurrenzprodukte gezwungen. Zumal ja auch noch immer aktiv Treiber für die Fritz-Produkte entwickelt werden, wie z.B. für Window7. Vermutlich ist AVM aber eine aktive Linux-Unterstützung mit sehr vielen Kernel-Releases einfach nur zu aufwendig und zu teuer.
Links
http://kanotix.com/files/thorhammer/kanotix/non-free/avm
http://www.it-service-engel.de/index.php?id=63
http://www.panticz.de/compile_ubuntu_avm_fritz_card_usb
http://wiki.ubuntuusers.de/AVM_FRITZ!Card
http://www.heise.de/ct/artikel/Heimserver-im-Eigenbau-289186.html
Alle Jahre wieder kommt man in die Verlegenheit schlecht unterstützte Hardware unter Linux zum laufen zu bewegen. Ein solcher Fall sind die verschiedenen ISDN-Karten und Terminal Adapter der Fritz Serie von AVM. AVM hat irgendwann 2007 die Linux-Unterstützung aufgegeben und keine Treiber-Updates für neue Kernel released, leider sind die Treiber Closed-Source bzw. AVM wollte wohl auch nicht die weitere Entwicklung in Community Hände geben.
Im Netz findet man dazu jede Menge hilfereicher Tips und Tricks sowie Patches dazu. Doch mit jeder neuen Kernel-Gerneration kommen auch wieder neue Probleme hinzu und die alten Tricks helfen nicht mehr weiter. Und wenn man aus bestimmten Gründen nicht gleich einen kompletten Kernel samt der Fritz-Module compilieren will, dann wird es noch komplizierter. Das aktuellste was ich an gepatchen Sourcen gefunden habe, war ein Archiv für Kernel 2.6.24 und die Kanotix Distribution.
Weiterlesen »
Aktuelle Kommentare