cdc-acm.ko auf TS-231 P2

  • Also, da ich immernoch nicht dazu gekommen bin die Anleitung dafür fertig zu schreiben hier die Kurzfassung:


    1. auf der Sourceforge Seite von QNAP die Kernelquellen downloaden (direkt auf dem NAS)
    2. Archiv entpacken und in das Verzeichnis mit dem "richtigen" Kernel wechseln (vermutlich 4.2)
    3. die Qnap Konfiguration entsprechend deines Modells aus dem Archiv in den Kernelordner packen (diese ist unter kernel_cfg zu finden)
    4. danach im Kernel Ordner den Befehl make menuconfig aufrufen
    5. dann sollte sich ein Menü wie in dem angehangenen Bild öffnen.
    6. dann zu folgendem Pfad navigieren: Device Drivers -> USB support. Dann sollte etwas weiter unten folgendes da stehen: *** USB Device Class drivers ***  und darunter <M>     USB Modem (CDC ACM) support wenn das Element markiert ist, dann die Leertaste drücken, bis vorn ein "M" wie Modul ausgewählt ist.
    7. Danach den Dialog durch "Exit" verlassen und "Save config" wählen, wenn man danach gefragt wird.
    8. zu guter letzt, wenn man wieder auf der "normalen" Shell ist, den Befehl make aufrufen und Ewig und Drei Tage warten ^^


    Nun sollte der komplette Kernel, inklusive des Moduls, kompiliert werden. Wenn der Prozess fertig ist, kann man mit find . -name "cdc-acm.ko" nach dem Modul suchen und es dann mit insmod cdc-acm.ko laden.


    Es ist, glaube ich, auch möglich ausschließlich die Module zu kompilieren, allerdings hat das bei meinem Versuch das Wireguard Modul zu kompilieren nicht funktioniert.


    Lass mich wissen, falls es Probleme gibt.

    pasted-from-clipboard.png

  • Achso, falls das in dem erstem Post nicht ganz klar geworden ist: die ganzen Sachen müssen auf dem NAS selbst durchgeführt werden. Ich glaube nicht, dass Crosscompiling hier funktioniert.

  • Freut mich, dass es bei dir geklappt hat!
    Ich selbst hab ziemlich viel Zeit damit zugebracht das oben genannte Verfahren zu recherchieren um mir das Wireguard Kernelmodul zu kompilieren, wenn du noch was davon hattest war die Arbeit nicht umsonst :)

  • Hallo,


    ich habe zwar nicht das gleiche NAS, aber das Problem wird meiner Ansicht nach das gleiche sein. Daher schließe ich mich einfach mal hier an:


    Und zwar habe ich eine TS-253 Pro auf der mittels Dock ein IOBroker und Home Assistant läuft. Ich wollte mich jetzt mit dem Thema Smarthome auf der QNAP auseinandersetzen und habe mir daher den gleichen Zwave Stick zugelegt.


    Mein Problem ist, dass dieser nicht in der QNAP erkannt wird. Schon bereits beim Aufruf von lsusb bekomme ich folgende Ausgabe:

    Code
    Bus 002 Device 002: ID 1c05:3074
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 001 Device 003: ID 125f:601a A-DATA Technology Co., Ltd.
    Bus 001 Device 002: ID 1c05:2074
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    [~] #

    Das ändert sich auch nicht, egal ob der Stick eingesteckt ist oder nicht. Andere USB Sticks werden problemlos erkannt. Der Z-wave Stick selbst wird an meinem Noteook mit Ubuntu ebenfalls direkt erkannt und kann unter /dev/ttyACM0 verwendet werden, nachdem ich insmod /usr/local/modules/cdc-acm.ko aufgerufen habe.

    Ich habe schon einige Zeit in diversen Foren verbracht. in denen das Thema behandelt worden ist, wie zu guter Letzt hier. Ich wollte der Anleitung von Tuxflo folgen, doch scheitere ich schon an der Tatsache, dass es auf der Sourceforge Seite keine Kernelquellen für meine QTS Version gibt. Dort sehe ich nur 4.3.5 oder 4.4.0.


    Ich habe allerdings 4.3.6.0805 und bekomme im QTS auch keine Information, dass ein Update zu Verfügung steht. Neben der Frage, wieso es für meine Version nichts gibt (zumindest finde ich nichts), möchte ich ungern ein Downgrade machen. Ich habe auch gelesen, dass der Stick nicht in dieser Kernelversion unter den USB 3.0 Ports (und die Pro hat nur 3.0 Ports) erkannt wird. könnt ihr das bestätigen?


    Über Unterstützung würde ich mich sehr freuen.


    Gruß

    Martin


    edit: Ich habe mir gerade in so einem Archiv von Sourceforge rein geschaut. Im Ordner kernel_cfg sehe ich keinen Ordner zu meinem NAS Modell. Habt ihr vielleicht eine Quelle für mein System?


    Linux QNap 4.2.8

  • Hallo Martin!

    Also zum Thema Version: die ist zunächst mal unabhängig von QTS, du musst bei der Bezeichnung danach gehen, welche Kernelversion in dem jeweiligen QTS verwendet wird. Ich gehe mal davon aus, dass das auch bei dir die Kernelversion 4.2.8 sein wird. Herausfinden kannst du das, indem du dich per SSH auf dein NAS einloggst und den Befehl uname -a ausführst. Dort kommt dann z.B. sowas

    Code
    [~] # uname -a
    Linux NAS 4.2.8 #1 SMP Wed Nov 14 00:59:34 CST 2018 x86_64 GNU/Linux
    [~] # 

    In meinem Fall muss ich also in den Kernelquellen in den Ordner "src/linux-4.2" wechseln.

    Zumindest auf meiner TS 251+ war es aber gar nicht notwending das cdc Modul überhaupt zu kompilieren, da es zwar standardmäßig auf dem NAS enthalten aber nicht gelanden war. Darum würde ich dir zunächst mal folgendes empfehlen suche in dem Orner /lib mal, ob dort die gewünschte Datei vorhanden ist. Von der Kommandozeile kannst du das mit dem Befehl:

    find /lib -name "cdc-acm.ko" machen.

  • Hallo Tuxflo,


    danke für deine Antwort. Ich hatte zwischendurch meinen Beitrag um den Eintrag der Kernelversion ergänzt, ohne deine Antwort gelesen zu haben. Deine Annahme, dass bei mir 4.2.8 vorhanden ist, stimmt.


    Ich habe nach der Datei gesucht und konnte sie unter /lib/modules/4.2.8/ ausfindig machen. Also soweit kann ich mir das Kompilieren sparen oder? Selbst wenn ich das Modul lade, sehe ich den Stick nicht unter /dev/tty* (wie auch immer der Eintrag heißen wird). Ich denke, es liegt schon daran, dass es unter der Auflistung der eingesteckten USB- Geräte scheitert. Ich dachte, die Kompilierung hätte mit einem Treiber zu tun und habe daher aus Verzweiflung zu diesem Strohhalm gegriffen :)

    Hast du eine andere Idee, was das sein könnte?


    Gruß
    Martin

    Einmal editiert, zuletzt von Impestrator ()

  • Zum Thema "mein Modell ist nicht aufgeführt": ich bin zwar kein embedded Linux Spezialist, aber normalerweise sollte es egal sein was genau das für ein Modell ist, da die zum einen auf die gleiche Kernelversion setzen und zum anderen die gleiche Architektur haben. Vermutlich könntest du sogar ein "fertiges" Kernelmodul von einem anderen 64Bit NAS nehmen, einfach auf das NAS kopieren und laden. (das wird z.B. bei dem Wireguard Modul aus dem Qnapclub store so gemacht...)



    EDIT: da hast du wohl deinen Beitrag geändert, während ich schon am antworten war. Bist du dir denn sicher, dass das Gerät das gleiche ist? Denn wenn es bei einem mit cdc-acm klappt, sollte es eigentlich bei dir auch gehen.
    Was du noch machen könntest, wäre zu schauen was das System dir mitteilt, wenn du das Teil ansteckst. Daür mal den Stick abziehen dann den Befehl dmesg -T | grep tty ausführen und dann den Stick anstecken. Vielleicht dekläriert er das Gerät ja als "ttyAMA0" oder ähnliches.

    Einmal editiert, zuletzt von tuxflo ()

  • Es handelt sich um den Aeotec AEOEZW090-C Aeon. Ich meine, das war auch das Gerät, welches der Autor ebenfalls verwendet. Deinen Tipp mit

    dmesg -T | grep tty werde ich auf jeden Fall später nach gehen. Leider habe ich jetzt keine Möglichkeit, den Stick abzuziehen. Ich habe den Befehl mit eingesteckten Stick abgeschickt. Da scheint das System ein Problem mit dem Parameter -T zu haben. Habe den Parameter mal weg gelassen und bekomme folgende Ausgabe:


    Code
    [    0.000000] Kernel command line: consoleblank=0 console=ttyS0,115200n8 memmap=2M$0x8000000 ramoops.mem_address=0x8000000 ramoops.mem_size=0x200000 ramoops.console_size=0x100000 video=HDMI-A-1:800x600@60 video=HDMI-A-2:800x600@60 i915.disable_power_well=0 zswap.enabled=0 zswap.compressor=lz4 BOOT_IMAGE=/boot/bzImage root=/dev/ram0 rw
    [    0.000000] console [ttyS0] enabled
    [    7.565866] 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
    [    7.594026] 00:04: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A


    Ich hatte die letzten zwei Tage in meiner Recherche öfter nach den Geräten unter /dev geschaut und unter tty* sehe nur tty0 - tty63 und ttyS0 - ttyts3. Nach "ttyAMA0" hatte ich auch schon Ausschau gehalten.


    Ich muss noch mal zum Kompilieren nachhaken: Dies wurde hier doch nur thematisiert, weil das Modul nicht auf dem System vorhanden ist oder?

  • Also kompilieren ist nur relevant, wenn das Modul nicht vorhanden ist, da du das Modul aber landen kannst sollte das für dich nicht relevant sein. Hast du den Stick nach dem Laden des Moduls nochmal angesteckt? Es kann sein das er das Modul erst erkennt wenn du ihn neu ansteckst. Also mit geladenen cdc-acm.ko nochmal neu anstecken und schauen ob er dann was erkennt. Mit etwas Glück taucht das Gerät dann auch in der Ausgabe von lsusb auf und alle sind glücklich ;)

  • Nein, das habe ich noch nicht gemacht.


    Ich bin einer Anleitung im Internet am Wochenende durch gegangen in der das Modul mittels insmod /usr/local/modules/cdc-acm.ko geladen wurde. Danach hatte ich den Stick raus- und wieder angesteckt was zu keinem Erfolg geführt hat. Wenn du mir natürlich aus deiner letzten Antwort beschreibst, dass das Modul lib/modules/4.2.8/ vorhanden ist und da geladen werden muss, ist das auch nicht weiter verwunderlich :-).


    Ich werde das später mal testen. wenn ich wieder Zuhause bin. Ich bin bisher immer nur davon ausgegangen, dass der Stick erst mal generell mittels lsusb angezeigt werden muss, sobald man ihn einsteckt und den Treiber evtl. danach erst laden muss, damit das Gerät korrekt unter /dev angezeigt wird. Ich melde mich dann auf jeden Fall heute Abend noch mal. Vielen Dank schon mal für deine Hilfe.


    Gruß

    Martin

  • Hmmm also wann da genau was geladen wird weiß ich auch nicht genau aber ich meine, dass eine Anzeige in lsusb erst stattfinden kann, wenn er das entsprechende Modul geladen hat. Allerdings kann es auch sein, dass das Modul auf deinem System z.B. per Symlink auch unter /usr... zu finden ist. War denn der insmod Befehl erfolgreich? Denn auf meinem System liegen unter /usr gar keine .ko Dateien... Zum Überprüfen, ob das Kernelmodul auch wirklich gelanden ist kannst du den Befehl lsmod (list modules) anweden und direkt nach cdc greppen:

    Bei mir sieht das dann wie folgt aus:

    Code
    ~] # find /lib -name "cdc-acm.ko" 
    /lib/modules/4.2.8/cdc-acm.ko
    [~] # lsmod | grep cdc
    [~] # insmod /lib/modules/4.2.8/cdc-acm.ko
    [~] # lsmod | grep cdc                    
    cdc_acm 22204 0 - Live 0xffffffffa0051000
    [~] # 

    Wie du an dem ersten lsmod siehst, war hier das Kernelmodul noch nicht geladen.

  • So, ich bin jetzt Zuhause und habe nach dem Laden des Moduls den Stick raus- und wieder angesteckt. Trotzdem sehe ich unter lsusb kein neues Gerät.


    insmod /usr/local/modules/cdc-acm.ko schien zu funktionieren. Alerdings habe auch dort das Gerät nicht gesehen. Ich hatte nach rein- und wieder anstecken den Befehl noch mal ausgeführt, da bekam ich auch die Meldung, dass die Datei bereits existiert.


    Weil ich jetzt doch einiges probiert habe, habe ich das NAS neu gestartet und wollte deiner letzten Antwort nachgehen: Doch schon bei /lib/modules/4.2.8/cdc-acm.ko bekomme ich ein permission denied, obwohl ich Admin bin. Im ersten lsmod sehe ich natürlich auch nichts. Nach dem insmod /lib/modules/4.2.8/cdc-acm.ko


    sehe ich dann nach erneutem

    lsmod | grep cdc nur cdc_acm 22204 0

  • Hmmm dann bin ich leider am Ende mit meinem Latein...
    Wenn das Kernelmodul wie in deinem letzten Post gelanden ist, sollte Treibertechnisch eigentlich alles geklärt sein.
    Ich selbst habe mit Z-Wave bisher nichts am Hut aber ich würde, falls möglich, nochmal einen anderen Stick versuchen (keine Ahnung was sowas kostet und ob du dein Exemplar ggf. noch umtauschen kannst).

  • Echt schade. Was ich halt interessant finde: Der Stick funktioniert mit meiner Ubuntu- Mühle problemlos und wird direkt erkannt. Da musste ich nichts machen...Und wenn man so diverse Blogs und Forenbeträge verfolgt, funktioniert der gleiche Stick auch bei anderen Leuten mit einem Qnap NAS, sogar das gleiche Modell. Ja gut, bei manchen funktioniert es auch nicht, aber dann geht der Thread leider nicht mehr weiter. Ich habe schon überlegt, mich an den Qnap Support zu wenden, aber ich rechne mir da keine hohen Chancen aus.


    Ich könnte auch meinen verstauten Rasberry rauskramen und damit testen, auch wenn ich mich das nicht weiter bringt. Dann werde ich den Stick einfach umtauschen und einen anderen Z-Wave Stick versuchen

  • Kannst du auf dem Ubuntu Rechner sicherstellen, dass auch wirklich das cdc-acm Modul für den Stick zuständig ist? Vielleicht gibt es ja auch noch weitere Module die auf deinem Ubuntu Rechner vorhanden sind und auf dem QNAP nicht. Diese könnte man dann ggf. durch kompilieren nachbauen.