ttyUSB0 + ttyUSB1 statt ttyACM0 [cdc_acm statt ftdi_sio laden]?

  • Habe grade das System für meine Heizugssteuerung von Debian 6 nach Ubuntu 12.04 (amd64; desktopfrei) umgestellt, da sich das alte System hin und wieder beim Booten unnachvollziehbar verabschiedete. An dem Teil hängt eine spezielle IO-Karte, die bislang immer als /dev/ttyACMx erschien. Nun werden dafür zwei Devices, ttyUSB0 und ttyUSB1 angelegt. Über ttyUSB1 kann ich die Karte zwar noch steuern, aber nicht mehr (wie über ttyACM0) auslesen.


    dmesg sagt


    So wie in den ersten zwei Zeilen müsste das eigentlich aussehen (ist eine andere Karte). Den restlichen Zenoba löst meine o.g. IO-Karte aus.


    Statt cdc_acm (wie gewünscht) schlägt da ftdi_sio zu. Warum? Und vor allem, wie ändere ich das?

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

    Einmal editiert, zuletzt von habichthugo ()

  • Mal anders gefragt: Wie stelle ich es an, dass statt ftdi_sio das Modul cdc_acm für das USB-Device geladen wird?

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

  • Zitat von »habichthugo« Mal anders gefragt: Wie stelle ich es an, dass statt ftdi_sio das Modul cdc_acm für das USB-Device geladen wird?
    In /lib/modules/{kernel-version}/modules.alias steht drin, welches Modul für welche PCI/USB-Id geladen werden soll.


    Hm, aber wie finde ich das richtige heraus?


    btw.: Von diesen Boards (auf 8051-Basis) gibt es doch Unmengen no names und Eigenentwicklungen. Wer masst sich den da eine Zuordnung an? Und in diesem Fall dann noch nachträglich falsch?


    Ok, nach einem rmmod ftdi_sio + reboot ist ttyACM1 da und funzt. Das rmmod persistent wirkt ist mir allerdings neu, und falls ich doch mal ftdi_sio brauchen sollte...
    Wobei, so ganz weg ist ftdi_sio dann auch nicht? Auszug dmesg:

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

  • Zitat von »habichthugo« Mal anders gefragt: Wie stelle ich es an, dass statt ftdi_sio das Modul cdc_acm für das USB-Device geladen wird?
    In /lib/modules/{kernel-version}/modules.alias steht drin, welches Modul für welche PCI/USB-Id geladen werden soll.


    Noch mal anders gefragt: Wie genau kiege ich den spezifischen Bandwurm (PCI/USB-Id) heraus, der da (hoffentlich) in der modules.alias für meine Karte steht?


    rmmod wirkt auf ftdi_sio doch nicht so nachhaltig. Offenbar muss ich das Spiel spätestens Wiederholen, wenn sich was an der Konstellation der USB-Devices getan hat. Gestern hatte ich noch 'nen zusätzlichen USB-Sick zum Backup/Klonen des Systems dran und schwups, ftdi_sio war bezgl. meiner Karte (bis zum rmmod) wieder aktiv. Ich verstehe nach wie vor nicht, warum ein rmmod überhaupt einen reboot 'überlebt'?!

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

  • Immer dieser Bloat. Wenn du ftdi_sio nicht brauchst, warum baust du dann das Modul?


    Ich würde immer ein eigenes Kernel für jeden Rechner bauen und ohne Module.
    Das spart Speicher. bringt Geschwindigkeit, verkürzt Bootzeit usw.


    Und hier wichtig, spart Ärger.


    Vorerst lösch doch einfach das Modul was nicht brauchst und fertig.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Immer dieser Bloat. Wenn du ftdi_sio nicht brauchst, warum baust du dann das Modul?


    Das Modul ist halt einfach bei ubuntu 12.04 dabei? Da war nix zu bauen.

    Ich würde immer ein eigenes Kernel für jeden Rechner bauen und ohne Module.
    Das spart Speicher. bringt Geschwindigkeit, verkürzt Bootzeit usw
    Und hier wichtig, spart Ärger.


    Ich gehör halt zu den Dummen, die 'ne fertige Dispri. nehmen müssen, weil sie (ich) für erweiterten Zenoba weder Zeit noch Hirn haben. Das System ist (von Platte) übrigens in 6..7 Sekunden da. Was gibt's da noch zu optimieren? Und ich bin heil froh, dass Hardware i.A. automatisch erkannt und die entsprechenden Module einfach geladen werden. Hätte da keinen Bock, für jedes Device die passenden Module von Hand herauszusuchen und manuell zu bauen...

    Vorerst lösch doch einfach das Modul was nicht brauchst und fertig.


    Ja, kann man vorerst so machen (wie genau löscht man ein fest im Kernel verbautes Modul)? Wenn ich die nächte Karte dran stecke, brauch ich's aber vielleicht demnächst wieder. Daher wäre es schon sinnvoll zu wissen, wie man das via modules.alias (oder sonst wie) dauerhaft richtig zuordnen kann.


    Und manchmal ist es auch ganz nett, wenn man kappiert, was da so abläuft. Das Verhalten von rmmod ist mir schleierhaft und deckt sich nicht mit dessen Beschreibung. Eigentlich dürfte es danach nur bis zum nächsten reboot wirken...

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

  • löschen bringt's nicht, weil beim nächsten Kernel Sicherheitsupdate wird es Dir erneut installiert -> das Modul am laden hindern (=blacklisten) ist der richtige Weg:


    sudo apt-get install nano
    sudo nano /etc/modprobe.d/blacklist.conf


    Code
    #habichthugo: Start von Modul ftdi_sio verhindern:
    blacklist ftdi_sio


    ctr+o zum speichern
    ctr+x für exit aus nano
    neu booten, jetzt sollte ftdi_sio nicht mehr geladen werden.
    Kontrolle, ob Dein Cam Device immer noch da ist - ich vermute eher Du braucht ftdi_sio, ich kenne das Serial-Cam von Dir aber nicht -> ausprobieren, Zeile wieder raus nehmen wenn es nicht geholfen hat.

    MSI P6NGM-FD | ASROCK A785GXH | Grafik: GeForce 9400GT| DVB-S2 Karten: Twinhan VP 1041 & Skystar HD

    2 Mal editiert, zuletzt von Lou ()

  • sudo apt-get install nano
    sudo nano /etc/modprobe.d/blacklist.conf


    blacklist.conf ist ein guter Tipp. 'nen Editor zu verwenden hätt' ich aber graden noch so alleine hin gekriegt ;.)

    neu booten, jetzt sollte ftdi_sio nicht mehr geladen werden.
    Kontrolle, ob Dein Cam Device immer noch da ist - ich vermute eher Du braucht ftdi_sio, ich kenne das Serial-Cam von Dir aber nicht -> ausprobieren, Zeile wieder raus nehmen wenn es nicht geholfen hat.


    Witziger Weise wird es nach einem rmmod + reboot erst mal nicht mehr verwendet, obwohl es noch geladen wird (siehe hier). Dieses Verhalten würde ich ja zu gerne noch verstehen. Und die dezidierte Zuordnung via modules.alias (oder sonst wie)...

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

  • Wenn ich den dmesg Auszug richtig verstehe ist das ein usb cable device? Wenn ja, kannst Du den Ladevorgang auch genauer überwachen, indem Du das Ding erst beim aufgestarteten System einsteckst. Dadurch erkennst du vielleicht genauer, wie zuverlässig das Device richtig eingebucht wird?


    Um dein Device korrekt zu entladen würde ich "modprobe -rv cdc_acm" verwenden, was dann wiederum rmmod <Modulename(n)> in der richtigen Reihenfolge aufruft. Hier wirst Du zB eine "Device busy" Fehlermeldung kriegen, wenn die Tv Karte/der vdr das Gerät schon verwendet. Dann kann ein rmmod nicht funktionieren, der vdr muss zuerst gestoppt werden.

    MSI P6NGM-FD | ASROCK A785GXH | Grafik: GeForce 9400GT| DVB-S2 Karten: Twinhan VP 1041 & Skystar HD

  • Wenn ich den dmesg Auszug richtig verstehe ist das ein usb cable device? Wenn ja, kannst Du den Ladevorgang auch genauer überwachen, indem Du das Ding erst beim aufgestarteten System einsteckst. Dadurch erkennst du vielleicht genauer, wie zuverlässig das Device richtig eingebucht wird?


    Um dein Device korrekt zu entladen würde ich "modprobe -rv cdc_acm" verwenden, was dann wiederum rmmod <Modulename(n)> in der richtigen Reihenfolge aufruft. Hier wirst Du zB eine "Device busy" Fehlermeldung kriegen, wenn die Tv Karte/der vdr das Gerät schon verwendet. Dann kann ein rmmod nicht funktionieren, der vdr muss zuerst gestoppt werden.


    Äh, hier geht es nicht um einen VDR (und schon gar keine TV-Karte(n)). Wie anfangs gesagt: Heizungssteuerung und spezielle USB-(IO-)Boards (auf 8051-Basis)...

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

  • Und am besten über /dev/serial/by-id/ öffnen z.b.
    "/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_XXXXXXX-if00-port0".


    Dann bist nicht von ACM0 oder ACM1 abhängig.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • [

    Und am besten über /dev/serial/by-id/ öffnen z.b.
    "/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_XXXXXXX-if00-port0".


    Dann bist nicht von ACM0 oder ACM1 abhängig.


    Interessanter Tipp! Danke!

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

  • Hallo,
    sind dIe FTDI Chips den neuerdings CDC-ACM basiert?
    Zumindest die älteren waren das definitiv nicht (hatte mal eine Firmware-Emulation der zweiten Generation geschrieben - mit dem Segen von FTDI).
    Oder nimmt der Treiber einfach dem Namen ACMx?

    Grüße, Dieter :)

  • Hallo,
    sind dIe FTDI Chips den neuerdings CDC-ACM basiert?
    Zumindest die älteren waren das definitiv nicht (hatte mal eine Firmware-Emulation der zweiten Generation geschrieben - mit dem Segen von FTDI).
    Oder nimmt der Treiber einfach dem Namen ACMx?


    Wer sagt den, dass das Board was mit FTDI zu tun hat? Hab' jetzt mal genau geguckt: Da sitzt ein PIC18F24J50 drauf, sonst nix controleriges. Der wird am USB halt CDC ACM emulieren (wie z.B. hier).
    Warum da unter ubuntu 12.04 ftdi_sio statt cdc_acm zu schlägt weiss ich nicht. Sowohl unter Windows (Vista/7) als auch an meinen ganzen anderen Linux-Kisten (u.a yaVDR 0.4) wird das Teil automatisch CDC-ACM getrieben...


    Wie kriege ich denn nun die Infos (USB-ID) raus, um das via modules.alias spezifisch zu korrigieren?

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

  • Wie kriege ich denn nun die Infos (USB-ID) raus, um das via modules.alias spezifisch zu korrigieren?


    Code
    lsusb


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Code
    lsusb


    Hm, in der modules.alias steht aber derlei cryptographisches:

    Code
    alias char-major-166-* cdc_acm
    alias usb:v*p*d*dc*dsc*dp*ic02isc02ip06* cdc_acm


    Wie korrespondiert solcherlei mit lsusb-ausgäblichem?:

    Code
    Bus 005 Device 003: ID 03eb:204b Atmel Corp. LUFA USB to Serial Adapter Project
    Bus 005 Device 004: ID 04d8:000a Microchip Technology, Inc. CDC RS-232 Emulation Demo

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

  • Du wolltest die USB-ID.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Wie korrespondiert solcherlei mit lsusb-ausgäblichem?:


    Schau dir die Regeln mal genau an - da sind auf jeden Fall VendorID und ProductID drin, die übrigen Werte scheinen nicht groß zur Unterscheidung beizutragen, denn da sind Sternchen...

    Bus 005 Device 004: ID 04d8:000a Microchip Technology, Inc. CDC RS-232 Emulation Demo


    alias usb:v04D8p000Ad*dc*dsc*dp*ic*isc*ip* ftdi_sio

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!