BeagleBoard-xM - USB-Modem in Betrieb nehmen

warning: fread(): Length parameter must be greater than 0 in /var/www/elchs-kramkiste.de/lapurd/includes/common.inc(1695) : eval()'d code on line 19.

Für den gewünschten Einsatzzweck (Fax-Funktionalität) meines BeagleBoard-xM (BBxM) brauchte ich ein Modem. Es gibt Modems, die per serieller Schnittstelle (über die das BBxM ja verfügt) oder USB angeschlossen werden können. Die seriellen brauchen ein eigenes Netzteil und erhöhen den Verkabelungsaufwand, USB-Modems sind teilweise nicht für Linux geeignet, wenn ein Treiber, sprich der PC die Rechenarbeit erledigt (Win-Modem, ähnlich der Win-GDI-Drucker). Nach einer Internet-Recherche fiel meine Wahl auf ein USB-Modem "Trendnet TFM-561U", weil dieses ausweislich einiger Kaufrezensionen problemlos unter halbwegs aktuellen Linux-Versionen funktionieren soll. Zudem bewirbt der Hersteller (siehe o.a. Link) ebenfalls die Linux-Funktionalität.

Also bestellt, gewartet und geliefert ...

Unter Kubuntu 10.04 (uname -a => ... 2.6.32-36-generic #79-Ubuntu SMP Tue Nov 8 22:29:53 UTC 2011 x86_64 GNU/Linux) wird das Trendnet TFM-561U USB-Modem erkannt / eingebunden als:

Konsolen-Befehl:

# tail -f /var/log/messages


Ausgabe:

usb 2-5: new full speed USB device using ohci_hcd and address 5
usb 2-5: configuration #1 chosen from 2 choices
cdc_acm 2-5:1.0: ttyACM0: USB ACM device
usbcore: registered new interface driver cdc_acm
cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters

Das Modem wurde also erkannt. Als nächstes die Funktionalität geprüft:


# minicom /dev/ttyACM0


funktioniert:

Willkommen zu minicom 2.4

Optionen: I18n
Übersetzt am Jan 25 2010, 07:02:36.
Port /dev/ttyACM0

Drücken Sie CTRL-A  Z für Hilfe zu speziellen Tasten
AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0
OK

Nachdem ich in gtkterm die Parameter auf "115200, 8N1, XON/XOFF" gestellt hatte, konnte ich auch damit das Modem ansprechen.

Die Ausgabe von


# lsusb


unter kubuntu 10.04 lautete:

Bus 002 Device 006: ID 0572:1329 Conexant Systems (Rockwell), Inc.



Und nun unter Angstrom auf dem BBxM:

Da Angstrom nicht wie für mich sonst auf OpenSuse / Debian / (K)ubuntu eine Datei "/var/log/messages" mit den Systemlogs schreibt, musste ich hier anders an die Infos kommen (erst später kam ich darauf, dass man statt


# tail -f /var/log/messages


unter Angstrom den Befehl


# tail -f /var/log/debug


benutzen kann, um an die gleichen Infos zu kommen).

Hier aber zunächst mal per:


# dmesg


usb 2-2.2: new full speed USB device using ehci-omap and address 4
Restoring csi2 context
Saving csi2 context
usb 2-2.2: New USB device found, idVendor=0572, idProduct=1329
usb 2-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 2-2.2: Product: USB Modem
usb 2-2.2: Manufacturer: Conexant
usb 2-2.2: SerialNumber: 24680246

Es wird in Angstrom-Linux anscheinend weder eine Schnittstelle zugewiesen noch ein Treiber geladen.

Also weiter (wieder an dem Kubuntu 10.04 PC) per:


# lsmod > lsmod_vor_usbmodem.txt


die Ausgabe der _vor_ anstecken des USB-Modems geladenen Module in eine Textdatei gepipet, das USB-Modem angeschlossen, ein paar Sekunden gewartet und


# lsmod > lsmod_nach_usbmodem.txt


abgesetzt. Nun per


# diff lsmod_nach_usbmodem.txt lsmod_vor_usbmodem.txt


die beiden Textdateien verglichen:

2d1
< cdc_acm                18082  0

Es wurde also das Treiber-Modul "cdc_acm" eingebunden (unter kunbuntu 10.04. Ja ich weiß, dass steht schon weiter oben in den Systemmeldungen, aber ich hatte es anfangs übersehen).

Zusätzlich wurde in /dev/serial/by-id eine Gerätedatei namens "@usb-Conexant_USB_Modem_24680246-if00" als Link von /dev/ttyACM0 sowie in /dev/serial/by-path die Datei "@pci-0000:00:02.0-usb-0:6:1.0" (auch als Link von /dev/ttyACM0) angelegt.

Auf dem BBxM brachte


# lsmod


vor und nach dem Anstecken des USB-Modems keine Veränderung. Das Modul "cdc_acm" konnte auch nicht per


# modprobe cdc_acm


geladen werden (nicht vorhanden / gefunden).

Nach kurzer Internet Recherche eingetippt


# opkg install kernel-module-cdc-acm
# modprobe cdc_acm


und es gab auch auf dem BBxM ein Gerät bzw. Device namens /dev/ttyACM0. Schön, dass ich (noch) nicht den Kernel bzw. seine Module umkonfigurieren bzw. kompilieren musste.

Als nächstes dann ein


# minicom /dev/ttyACM0


in einem Terminal abgesetzt und nachdem ich die Parameter wie unter kubuntu 10.04 (siehe oben: 115200, 8N1, XON/XOFF) gesetzt hatte, gab es auch unter Angstrom ein funktionierendes USB-Modem.

Nun habe ich in minicom (am BBxM) mittels


~ ATX3


die Amtserkennung abgeschaltet (ich arbeite an einer ISDN-Nebenstellenanlage mit internem S0-Bus ohne amtliches Freizeichen und für Amtsgespräche muss keine Vorziffer gewählt werden) und per


~ ATW0


diese Einstellung dauerhaft im Modem gespeichert. Anschließend per


~ ATDT<MeineHandynummer>


mein Handy antelefoniert und das funktionierte auch (Handy klingelte), minicom antwortet aber bereits nach 3-maligem klingeln mit "NO CARRIER".

Mittels


~ ATDT<EineBekannteFaxNummer>


angewählt, und nach ein paar Sekunden kam die Meldung "BUSY" in minicom.

In minicom selbst habe ich nun noch nach Einstellen aller Parameter per CTRL-A + Z + o in dem Optionen-Menü die Einstellungen als default abgespeichert ("Save setup as dfl"), so dass minicom zukünftig ohne Parameter gestartet werden kann.

Damit das Modul "cdc_acm" bei jedem Systemstart automatisch geladen wird, habe ich in "/etc/modutils" eine neue Datei namens cdc_acm erzeugt, in diese den Text 'cdc_acm' eingetragen. Nach diesem Eintrag noch einen Zeilenvorschub erzeugt, also gedrückt, da manchmal durch das fehlende die Konfigurationsdateien nicht richtig gelesen werden können (bezogen auf die letzte Zeile).

Das BBxM neu gestartet => Modul wird geladen. Gerätedatei "/dev/ttyACM0" ist vorhanden, "minicom /dev/ttyACM0" aufgerufen => Modem kann initialisiert werden. Also alles klar.

Der Vollständigkeit halber: In der Datei "/etc/modules" steht der Hinweis, dass man Module, die wie oben konfiguriert wurden, per


# update-modules


in die Datei "/etc/modules" einbinden sollte. Ich habe es, obwohl es bereits lief, dann auch noch so durchgeführt und in der Datei war danach ein entsprechender Verweis auf "cdc_acm" vorhanden.

Jetzt hatte ich nur ein Problem: In den Paket-Repositories von Angstrom gab es keine Installations-Pakete von mgetty bzw. mgetty-fax (und wie sich später heraus stellte auch nicht von HylaFAX bzw. HylaFAX+). Und genau für letztere Funktionalität, also Fax, brauchte / wollte ich das USB-Modem einsetzen. Da werde ich mir wohl (doch) eine Cross-Compiling-Umgebung auf meinem kubuntu 10.04 erstellen müssen um diese Programme für Angstrom erzeugen zu können...

Mal sehen.