ARK3116 USB zu Seriell Adapter an FB7150

Mediaman2000

Neuer User
Mitglied seit
24 Feb 2007
Beiträge
79
Punkte für Reaktionen
0
Punkte
0
Halli Hallo,

ich habe es heute gewagt und endlich den aktuellen DS-MOD auf meinem FBFon 7150 am laufen. Nun habe ich folgendes Problem, hinter das ich auch nach langem Suchen im Forum nicht gekommen bin. Ich habe hier ein USB zu RS232 Adapterkabel mit einem ARK3116 Chip liegen - nicht kompatibel zu irgendeinem vorhandenen Treiber in der kernelkonfig...
Hier habe ich den Treiber unkompiliert geladen. Wie muss ich jetzt im genauen vorgehen um diesen Treiber nutzen zu können? Ich habe versuche gestartet die .c Datei manuell in das Source Verzeichnis (ds26-15.2/source/ref-8mb_26-04.33/kernel/kernel_8mb_26_build/kernel/linux-2.6.13.1/drivers/usb/serial) zu kopieren und es auch so im Menu der Kernelkonfiguration eingebunden. Hab einfach mal unbekümmert "make kernel-precompiled" eingeben und gewartet - natürlich hat er bei meiner "Eintragung" abgebrochen und mir folgdenes angezeigt:
PHP:
...
 CC [M]  drivers/usb/serial/ark3116.o
drivers/usb/serial/ark3116.c:95: error: variable `ark3116_device' has initializer but incomplete type
drivers/usb/serial/ark3116.c:96: error: unknown field `driver' specified in initializer
drivers/usb/serial/ark3116.c:96: error: extra brace group at end of initializer
drivers/usb/serial/ark3116.c:96: error: (near initialization for `ark3116_device')
drivers/usb/serial/ark3116.c:99: warning: excess elements in struct initializer
drivers/usb/serial/ark3116.c:99: warning: (near initialization for `ark3116_device')
drivers/usb/serial/ark3116.c:100: error: unknown field `id_table' specified in initializer
drivers/usb/serial/ark3116.c:100: warning: excess elements in struct initializer
drivers/usb/serial/ark3116.c:100: warning: (near initialization for `ark3116_device')
drivers/usb/serial/ark3116.c:101: error: unknown field `num_interrupt_in' specified in initializer
drivers/usb/serial/ark3116.c:101: warning: excess elements in struct initializer
drivers/usb/serial/ark3116.c:101: warning: (near initialization for `ark3116_device')
drivers/usb/serial/ark3116.c:102: error: unknown field `num_bulk_in' specified in initializer
drivers/usb/serial/ark3116.c:102: warning: excess elements in struct initializer
drivers/usb/serial/ark3116.c:102: warning: (near initialization for `ark3116_device')
drivers/usb/serial/ark3116.c:103: error: unknown field `num_bulk_out' specified in initializer
drivers/usb/serial/ark3116.c:103: warning: excess elements in struct initializer
drivers/usb/serial/ark3116.c:103: warning: (near initialization for `ark3116_device')
drivers/usb/serial/ark3116.c:104: error: unknown field `num_ports' specified in initializer
drivers/usb/serial/ark3116.c:104: warning: excess elements in struct initializer
drivers/usb/serial/ark3116.c:104: warning: (near initialization for `ark3116_device')
drivers/usb/serial/ark3116.c:105: error: unknown field `attach' specified in initializer
drivers/usb/serial/ark3116.c:105: warning: excess elements in struct initializer
drivers/usb/serial/ark3116.c:105: warning: (near initialization for `ark3116_device')
drivers/usb/serial/ark3116.c:106: error: unknown field `set_termios' specified in initializer
drivers/usb/serial/ark3116.c:106: warning: excess elements in struct initializer
drivers/usb/serial/ark3116.c:106: warning: (near initialization for `ark3116_device')
drivers/usb/serial/ark3116.c:107: error: unknown field `ioctl' specified in initializer
drivers/usb/serial/ark3116.c:107: warning: excess elements in struct initializer
drivers/usb/serial/ark3116.c:107: warning: (near initialization for `ark3116_device')
drivers/usb/serial/ark3116.c:108: error: unknown field `tiocmget' specified in initializer
drivers/usb/serial/ark3116.c:108: warning: excess elements in struct initializer
drivers/usb/serial/ark3116.c:108: warning: (near initialization for `ark3116_device')
drivers/usb/serial/ark3116.c:109: error: unknown field `open' specified in initializer
drivers/usb/serial/ark3116.c:109: warning: excess elements in struct initializer
drivers/usb/serial/ark3116.c:109: warning: (near initialization for `ark3116_device')
drivers/usb/serial/ark3116.c: In function `ark3116_read_bulk_callback':
drivers/usb/serial/ark3116.c:448: warning: implicit declaration of function `tty_buffer_request_room'
drivers/usb/serial/ark3116.c:449: warning: implicit declaration of function `tty_insert_flip_string'
drivers/usb/serial/ark3116.c: In function `ark3116_init':
drivers/usb/serial/ark3116.c:493: warning: passing arg 1 of `usb_serial_register' from incompatible pointer type
drivers/usb/serial/ark3116.c:498: warning: passing arg 1 of `usb_serial_deregister' from incompatible pointer type
drivers/usb/serial/ark3116.c: In function `ark3116_exit':
drivers/usb/serial/ark3116.c:504: warning: passing arg 1 of `usb_serial_deregister' from incompatible pointer type
drivers/usb/serial/ark3116.c: At top level:
drivers/usb/serial/ark3116.c:95: error: storage size of `ark3116_device' isn't known
make[4]: *** [drivers/usb/serial/ark3116.o] Fehler 1
make[3]: *** [drivers/usb/serial] Fehler 2
make[2]: *** [drivers/usb] Fehler 2
make[1]: *** [drivers] Fehler 2
make[1]: Leaving directory `/home/slightly/toolchain_ds26-15.2/source/ref-8mb_26-04.33/kernel/kernel_8mb_26_build/kernel/linux-2.6.13.1'
make: *** [source/ref-8mb_26-04.33/kernel/.modules] Fehler 2
Was kann das nun sein? Ein lächerlich naiver Versuch eines Linuxnoobs (ich bin gemeint :p), der einfach nicht den Plan hat wie man einen Treiber korrekt compiliert oder wirklich Fehler in der c Datei, die den Abbruch verursachen?

Ich bin gespannt ;)
 
Das sind einfach noch zu wenige Infos: Erklär doch bitte Step-by-Step, wie Du vorgegangen bist und/oder versuch einen Patch zu einem originalen (jungfräulichen) DSmod-Verzeichnis zu machen. Momentan siehts so aus, als findet er irgendwelche Includes nicht, aber ich will hier auch nicht raten ;-)
 
Ja wie ich vorgeganen bin...
Ich habe mich versucht an den anderen im Verzeichnis (ds26-15.2/source/ref-8mb_26-04.33/kernel/linux/drivers/usb/serial) vorhandenen Treiber bzw. C Dateien zu orientieren. Hab also aus dem Originalarchiv die ark3116.c hineinkopiert und dann in die Makefile folgenden Eintrag, wieder abgeguckt von dem was schon drin stand eingetragen:

PHP:
...
obj-$(CONFIG_USB_SERIAL_VISOR)                  += visor.o
obj-$(CONFIG_USB_SERIAL_WHITEHEAT)              += whiteheat.o
obj-$(CONFIG_USB_SERIAL_XIRCOM)                 += keyspan_pda.o
...
obj-$(CONFIG_USB_SERIAL_ARK3116)                        += ark3116.o
In die Kconfig, die ja das Konfigurationsmenu für die make kernel-menuconfig darstellt habe ich dann noch diesen Eintrag geadded:

PHP:
...
config USB_SERIAL_ARK3116
        tristate "USB ARK3116 Single Port Serial Driver"
        depends on USB_SERIAL
        help
          Say Y here if you want to use the ARK3116 USB Serial single port
          adapter from ARK.

          To compile this driver as a module, choose M here: the
          module will be called ark3116.
...
So nun hatte ich meinen Menueintrag, hab diesen dann mit <M> ausgewählt in der kernel-menuconfig und hab dann eben dem Compilervorgang "make kernel-precompiled" gestartet - abgebrochen hat er dann eben bei meinem warscheinlich völlig falsch aufgefasstem Eintrag (siehe oben).
Das war eigentlich alles.

Was soll ich unter dem Patch verstehen? Wiegesagt absolutes Neuland...
 
Hat die Unterscheidung rot/blau im ersten Beitrag eine Bedeutung?

Meine Vermutung ist, daß der Treiber, den Du gefunden hast, nicht zur Linux-Version 2.6.13.1, die von AVM verwendet wird, paßt. Steht dort, wo Du den Treiber her hast, etwas zu der Linux-Version, für die er gedacht ist? Diese könnte sowohl älter als auch neuer als 2.6.13.1 sein.

Ich denke mal, für den Neuling, als den Du Dich bezeichnest, bist Du schon sehr weit gekommen (Struktur der Makefile und der Kconfig verstanden usw.).

Jetzt ist entweder die Gelegenheit, Dich mit den Unterschieden zwischen den beiden Kernel-Versionen (2.6.13.1 und Version von ark3116) zu befassen und die nötigen Änderungen zu machen, oder es doch sein zu lassen.

Vielleicht gibt es aber auch dort, wo der Treiber her ist, noch welche für andere Versionen. Dann schau mal, ob einer dabei ist, der näher an 2.6.13.1 ist.

PS:
Ich habe mal unter http://avr.auctionant.de/ark3116_linux_driver/ nachgeschaut.
Q: the driver does not compile. It cant find usb-serial.h ?!
A: Make sure you have a recent kernel sourcecode in /usr/src/linux (>=2.6.15!)
 
Die rot/blaue Schrift hat nichts zu sagen, das hat die Forensoftware so hervorgehoben.
Ich weiß echt nicht, wie das mit den Unterschieden der Kernelversionen ausschaut - das sind so die Parts von Linux wo ich absolut noch nicht durchgestiegen bin. Bevor ich das sein lasse und mir einen bekannten USB-Seriell Wandler z.b. den Prolific PL2303 suche, könnte ich natürlich mal den Programmierer des Treibers anschreiben und fragen ob er den für mich / die Fritzbox anpassen könnte, wobei ich natürlich nicht weiß welche Infos ich ihm auf den Weg geben sollte.
 
Du bräuchtest einen Treiber, der mit Linux 2.6.13.1 funktioniert. Er schreibt ausdrücklich, daß Linux ab 2.6.15 notwendig ist. Irgend etwas muß sich in der Version an der USB-Unterstützung geändert haben.

Version 2.6.13.1 ist vom 10.09.2005, also über zwei Jahre alt.

Die nötigen Infos sing schnell zusammengefaßt: Du brauchst einen Treiber, der mit Linux 2.6.13.1 funktioniert. Meine Vermutung ist, daß er Dir empfehlen wird, auf eine neuer Linux Version zu wechseln. Das kannst Du aber leider nicht, weil dann die restlichen AVM-Module nicht dazu passen würden.

Wenn es einfach wäre, die ältere Linux-Version mit zu unterstützen, hätte er es wahrscheinlich von Anfang an gemacht. Da USB-Seriell Wandler nicht übermäßig teuer sind, würde ich eher zu einem anderen wechseln, der auch von älteren Linux-Versionen unterstützt wird.
 
Habe soeben über Ebay einen Adapter mit dem unterstützen Prolific 2303 Chip gezoggt. Ist vermutlich das Einfachste, da ich auch keine Lust habe jetzt ewig erst rumzudoktern bis das eines Tages vielleicht mal läuft.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.