Hi,
ich versuche gerade die Treiber für eine ISDN-Karte von EICON/DIALOGIC zu installieren. Während der Installation werden auch einige der Kernel-Module neu erzeugt, darunter einiges aus dem Bereich CAPI. Hier stürtzt die Routine mit den folgenden Fehlermeldungen ab:
CC [M] drivers/isdn/capi/kcapi.o
drivers/isdn/capi/kcapi.c: In function ‘recv_handler’:
drivers/isdn/capi/kcapi.c:308: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘struct _cdebbuf *’
drivers/isdn/capi/kcapi.c: In function ‘capi_ctr_handle_message’:
drivers/isdn/capi/kcapi.c:331: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘struct _cdebbuf *’
drivers/isdn/capi/kcapi.c:354: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘struct _cdebbuf *’
drivers/isdn/capi/kcapi.c: In function ‘capi20_put_message’:
drivers/isdn/capi/kcapi.c:671: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘struct _cdebbuf *’
drivers/isdn/capi/kcapi.c:1013:50: error: macro “INIT_WORK” passed 3 arguments, but takes just 2
drivers/isdn/capi/kcapi.c: In function ‘kcapi_init’:
drivers/isdn/capi/kcapi.c:1013: error: ‘INIT_WORK’ undeclared (first use in this function)
drivers/isdn/capi/kcapi.c:1013: error: (Each undeclared identifier is reported only once
drivers/isdn/capi/kcapi.c:1013: error: for each function it appears in.)
drivers/isdn/capi/kcapi.c:1014:47: error: macro “INIT_WORK” passed 3 arguments, but takes just 2
make[2]: *** [drivers/isdn/capi/kcapi.o] Error 1
make[1]: *** [drivers/isdn/capi] Error 2
Ich habe dann auf zwei Ubuntu-Systemen und einem OpenSuSE die Kernel-Kopilierung mit drei unterschiedlichen Kernel (2.6.2x) versucht. In allen drei Fälle kommt es zum Absturz an der gleichen Stelle, so daß der Fehler mit Sicherheit nichts mit dem EICON-Treiber zu tun hat. Mit Google habe ich zu diesem Thema bisher nichts gefunden.
Hat irgendjemand von Euch einen 2.6.2x-Kernel mit aktivierter CAPI-Unterstützung erfolgreich kompiliert und verrät mit entsprechende Version?
Danke & Gruß,
Stefan-Michael Günther
—
********************************************
in-put GbR – Das Linux-Systemhaus
Stefan-Michael Guenther
Geschaeftsfuehrer
Moltkestrasse 49 D-76133 Karlsruhe
Tel./Fax : +49 (0)721 / 83044 – 98/93
http://www.in-put.de
********************************************
Schulungen Installationen
Beratung Support
Voice-over-IP-Loesungen
********************************************
Hallo Stefan,
könntest du den genauen Treiber sowie die Architektur angeben, um das Problem
nachvollziehen zu können.
mfg
Rico
Hallo Stefan! Habe hier mal noch was Interessantes für dich bin direkt Ubuntuuser;)
Der Hintergrund dieser Misere ist, dass die Funktion pci_module_init() veraltet ist und durch pci_register_driver() ersetzt wurde. Scheinbar hat man dies aber bei diversen Kernelmodulen vergessen, so dass diese eben auf die alte nicht funktionierende Funktion zugreifen und somit nicht korrekt arbeiten können.
Abhilfe gibt es auf drei Wegen (Alle erfordern aber einen Internetzugang, so dass man dies auf einem anderen System – ggf. per Feisty Desktop-CD – herunterladen/vorbereiten muss.):
1. Man benutzt den alten Kernel von Ubuntu 7.04 “Feisty Fawn”. Hierzu sollte es reichen, temporär die Feisty-Paketquellen einzutragen und die Pakete linux-restricted-modules-2.6.20-16-generic und linux-image-2.6.20-16-generic zu installieren. Danach sollte in Grub der alte Kernel 2.6.20 auswählbar sein. Achtung: Die Paketendung sollte mit der aktuellen übereinstimmen. Dies kann man mit dem Befehl uname -r in einem Terminal vorher nachlesen.
2. Im Bugreport en gibt es inoffizielle gepatchte Deb-Pakete für i386- und amd64-Architekturen, die man installieren kann. In diesen wurde aber nur das Modul fcpci gepatcht.
3. Wer den Patch selbst einarbeiten will oder ggf. ein anderes Treibermodul patchen muss, geht wie folgt vor (Anleitung von Christian Assig aus Launchpad):
a) Es müssen die die Paketquellen deb-src für den Quellcode in die sources.list eingetragen werden.
b) Danach installiert man die Kernelpakete und den Quellcode:
sudo apt-get build-dep linux-restricted-modules-2.6.22-14-generic
apt-get source linux-restricted-modules-2.6.22-14-generic
c) Dann lädt man den Patch herunter:
wget http://launchpadlibrarian.net/9584032/linux-restricted-modules-2.6.22-2.6.22.4.patch
Achtung: Wer ein anderes Kernelmodul patchen will, öffnet die Datei am besten und passt die zweite und dritte Zeile mit dem Pfad an. Bei 64bit z.B. KERNEL/fritz64/fcpci/src/main.c. Dies wird nur versierten Anwendern empfohlen!
d) Den Patch anwenden:
patch -p1 < linux-restricted-modules-2.6.22-2.6.22.4.patch Sollte das Programm den korrekten Ort nicht finden, gibt man diesen manuell an, z.B. linux-restricted-modules-2.6.22-2.6.22.4/fritz/fcpci/src/main.c e) Danach muss man die Kernelmodule neu erstellen: cd linux-restricted-modules-2.6.22-2.6.22.4/ debchange -i dpkg-buildpackage -rfakeroot -b f) Zum Schluss, wenn hoffentlich alles gut ging, kann man das Paket linux-restricted-modules-2.6.22-14-generic.deb ein Verzeichnis darüber installieren. [1] http://ubuntuusers.de/ikhaya/760/
Hallo Rico,
primär möchte ich den Kernel auf einem Ubuntu 7.10 übersetzen. Im Quellcode liegt Kernel 2.6.22 vor.
Das Modul kcapi.c ist die Version 1.1.2.4 vom 10.02.2004
Bei OpenSuSE scheitert der gleiche Versuch mit Kernel 2.6.22.5-31 und der gleichen Modul-Version.
Da das Modul schon etwas betagter ist, frage ich mich, ob es nicht ggf. Inkompatibilitäten zu irgendwelchen Bibliotheken gibt, die das Modul einbinden soll.
Wenn die Kompilierung dieses Moduls durchläuft, wird sich mit Sicherheit auch der EICON-Treiber installieren lassen.
Gruß,
Stefan
Hallo Stefan,
Im Kernel 2.6.22 und höher liegt bei mir kcapi.c in Version 1.1.2.8 vor und
wird problemlos übersetzt. Es sieht so aus, als ob der Treiber die
Kernelquellen manipuliert.Kannst du mal einen Link zu besagtem EICON-Treiber
angeben, um ihn genauer unter die Lupe zu nehmen.
mfg
Rico
Hallo Rico,
ich habe mir von kernel.org den aktuellen Kernel (2.6.23.1), nach /usr/src entpackt, einen symbolischen Link für “linux” angelegt und aus /boot die Datei config-2.6.22-14-server als .config nach /usr/src/linux kopiert.
In diesem Verzeichnis dann ein “make menuconfig” und im Anschluß ein “make-kpkg –initrd binary”. Das läuft auch sauber durch und erzeugt mir das Kernel-Image inklusive Initrd.
Das System läßt sich damit einwandfrei booten. Damit bin ich schon einmal weiter, als zuvor, Danke schon mal für den Hinweis auf das aktuellere CAPI-Modul.
Den EICON-Treiber findest Du unter [1]. Wenn Du das Paket installiert hast, mußt Du in das Verzeichnis /usr/lib/eicon/divas/src wechseln und dort das Build-Skript aufrufen. Das fliegt mir dann wieder bei kcapi.c um die Ohren.
Danke und viel Erfolg,
Stefan
[1] http://www.dialogic.com/download/p/linux/source/106-34/divas4linux_EICON-106.10-1.deb
Hallo Stefan,
das Build-Script überschreibt die ISDN-Quelldateien des Kernels mit dem Inhalt
der Dateien src/kernel.tgz und kernel_2.tgz.
Nachdem ich die kernelrelevanten Dateien aus den tgz-Archiven entfernt habe,
scheitert das Kompilieren zumindest nicht mehr an kcapi.c, sondern an den
Modulen des Installationspaketes. Diese sind offenbar nicht für neuere Kernel
geeignet.
Man kann das Build-Script auch umgehen, indem man z.B. diva_usb.tgz entpackt
und make module aufruft. Dort hagelt es dann Fehlermeldungen.
So wird z.B. nach der Headerdatei linux/config.h verlangt. Meines Wissens nach
existiert diese Datei schon seit langem nicht mehr.
Ich denke, der Treiber stammt aus den Anfangstagen von Kernel 2.6.
Ohne Patchorgien wirst du ihn schwerlich zum laufen bekommen.
mfg
Rico
Hallo Rico,
ich habe mir gerade ein SuSE 10.0 installiert. EICON bietet dafür ja extra ein RPM an.
Mal sehen, ob es sich installieren und konfigurieren läßt. Bei SuSE 10.0 ist übrigens (ohne Updates) der Kernel in der Version 2.6.13.5 dabei.
Danke für Deine Bemühungen, jetzt weiß ich wenigstens, daß ich mir offensichtlich bei EICON-Karten die Verwendung einer aktuellen Distribution sparen kann.
Einen schönen Abend und ein schönes Wochenende,
Stefan
Hallo Rico (und alle anderen, die EICON-Karten verwenden wollen),
wie in meinem vorherigen Beitrag angekündigt, habe ich die Installation noch einmal mit einem nicht aktualisierten SuSE 10.0 getestet. Wie erwartet läßt sich der Treiber (RPM-Paket) problemlos installieren und die Karte dann auch konfigurieren.
Ich kenne EICON/DIALOGIC nun seit mehreren Jahren und hatte in der Vergangenheit auch einen sehr guten Kontakt zu den Entwicklern und dem Support und war begeistert darüber, wei schnell Treiber für die aktuellen Distributionen bereitgestellt wurden.
Offensichtlich spielt Linux dort seit einiger Zeit keine große Rolle mehr, wenn man sich das Alter der Treiber anschaut. Zudem hat der Support früher in 1-2 Tagen geantwortet, heute dauert es 5-7 Werktage. Schade!
Gruß,
Stefan
Hallo,
es gibt inzwischen die Version 8.3 des Treiber-Pakets von EICON.
Dabei handelt es sich um eine .bin-Datei, die für alle Distributionen gilt.
Damit ist mir eine erfolgreiche Installation und Konfiguration auf Ubuntu 7.10 mit den Kernel-Versionen 2.6.22 und 2.6.23.1 gelungen.
Es besteht also doch noch Hoffnung ;-)
Gruß,
Stefan