.titleBar { margin-bottom: 5px!important; }

ARK3116 USB zu Seriell Adapter an FB7150

Dieses Thema im Forum "Freetz" wurde erstellt von Mediaman2000, 21 Okt. 2007.

  1. Mediaman2000

    Mediaman2000 Neuer User

    Registriert seit:
    24 Feb. 2007
    Beiträge:
    79
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Technischer Assistent für Informatik
    Ort:
    NOH
    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:95errorvariable `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:99warningexcess elements in struct initializer
    drivers
    /usb/serial/ark3116.c:99warning: (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:101errorunknown 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:102warningexcess elements in struct initializer
    drivers
    /usb/serial/ark3116.c:102warning: (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:104errorunknown 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:105warningexcess elements in struct initializer
    drivers
    /usb/serial/ark3116.c:105warning: (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:107errorunknown 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:108warningexcess elements in struct initializer
    drivers
    /usb/serial/ark3116.c:108warning: (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.cIn 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.cIn 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.cIn 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/.modulesFehler 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 ;)
     
  2. derheimi

    derheimi Mitglied

    Registriert seit:
    4 Juli 2006
    Beiträge:
    347
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Diplominformatiker
    Ort:
    Leipzig
    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 ;-)
     
  3. Mediaman2000

    Mediaman2000 Neuer User

    Registriert seit:
    24 Feb. 2007
    Beiträge:
    79
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Technischer Assistent für Informatik
    Ort:
    NOH
    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 modulechoose M herethe
              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...
     
  4. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  5. Mediaman2000

    Mediaman2000 Neuer User

    Registriert seit:
    24 Feb. 2007
    Beiträge:
    79
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Technischer Assistent für Informatik
    Ort:
    NOH
    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.
     
  6. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  7. Mediaman2000

    Mediaman2000 Neuer User

    Registriert seit:
    24 Feb. 2007
    Beiträge:
    79
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Technischer Assistent für Informatik
    Ort:
    NOH
    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.