Login
Newsletter
Werbung

So, 4. September 2005, 00:00

Mobiltelefone und Linux

Das Kommando irattach verbindet das konkrete Gerät, in diesem Fall den an den Mainboard angeschlossenen und im BIOS anstelle des zweiten seriellen Ports gesetzten IrDA-Adapter, mit der IrDA-Schnittstelle im Kernel. Anders gesagt: Jedes Programm, das über Infrarot kommunizieren will, weiß, wo es seine Hardware suchen soll. Die Option -s bewirkt, dass die Suche nach Geräten, die sich im Infrarot-Funkbereich befinden, eingeschaltet wird. Nach deren Ausführung kann man gleich überprüfen, ob es ein Gerät im Funkbereich gefunden wurde. Wir machen dies mit dem Kommando cat /proc/net/irda/discovery, das bei mir z.B. Folgendes zurückgegeben hat:

IrLMP: Discovery log:
nickname: SIEMENS S55, hint: 0xb124, saddr: 0x5937ba8c, daddr: 0x00000083

Die obigen Adressen brauchen wir wohl nicht und im Allgemeinen wissen wir auch, wie unser Telefon heißt. Die einzige Funktion dieser Anweisung ist die Überprüfung, ob die beiden Geräte richtig funktionieren und ob sie sich gegenseitig sehen.

Wenn wir einen anderen IrDA-Adapter haben, als den, der an das Mainboard angeschlossen wird, sieht die ganze Prozedur fast identisch aus. Falls wir einen der immer seltener benutzten Adapter, die über den seriellen Port angeschlossen werden, haben, führen wir das Kommando irattach /dev/ttyS0 -d actisys -s aus. In diesem Fall ist actisys der Typ unseres Gerätes. Stattdessen können wir tekram-sir, esi-sir oder einen anderen Typ angeben, der gleichzeitig der Name eines entsprechenden Kernelmoduls ist. Die Liste aller vorhandenen Module können wir im Verzeichnis /lib/modules/[kernelversion]/kernel/drivers/net/irda finden. Die restlichen Adapter, darunter die populären USB-IrDA, arbeiten im FIR-Standard. Für gewöhnliche USB-IrDA-Adapter, die durch das Modul irda-usb bedient werden, reichen die folgenden Kommandos aus:

modprobe irda-usb
irattach irda0 -s

Im Falle von einigen FIR-Adaptern (wie z.B. tekram oder stir4200 für SigmaTel-Geräte) ist ein Alias in der Konfiguration von Kernelmodulen notwendig. Wenn unser Gerät auf dem Modul irda-usb nicht funktioniert und sich aus dem Resultat der Anweisung lsusb ergibt, dass es durch NSC hergestellt werden konnte, tragen wir in der Datei /etc/modprobe.conf die Zeile alias irda0 nsc-ircc ein. Dann laden wir ein entsprechendes Kernelmodul und führen das Kommando irattach irda0 -s aus. Ähnlich können wir andere Kernelmodule ausprobieren, die im vorher angegebenen Verzeichnis vorhanden sind.

Unabhängig davon, welches Kernelmodul wir verwenden, soll das sich im IrDA-Funkbereich befindliche Gerät mit cat /proc/net/irda/discovery erscheinen, nachdem das Kommando irattach ausgeführt wurde. Wenn wir unser Gerät dort nicht sehen, bleibt uns nur, den Kasten Probleme mit IrDA zu lesen - vielleicht finden wir dort die Lösung unseres Problems.

Automatisches Starten von IrDA

Das Paket irda-utils, das in allen Distributionen enthalten ist, bietet uns auch ein Skript, das die Anweisung irattach beim jeden Systemstart automatisch ausführt. Zusätzliche Parameter unserer Konfiguration (darunter das Gerät ttySx oder den Adaptertyp) können wir in /etc/sysconfig/irda oder /etc/default/irda-utils definieren. Im Endeffekt, nach dem Start des Systems, soll Infrarot sofort funktionieren, wenn wir den IrDA-Adapter und das Handy näher zueinander bringen.

Gerät /dev/ircomm0

Alles, was wir bisher gemacht haben, diente dazu, einen funktionierenden Infrarot-Port zu bekommen, also /dev/ircomm0 - dieses Gerät verwenden wir, um über Infrarot in unser Telefon zu gelangen. Neben dem Namen und dem Übertragungsmedium unterscheidet sich ein solcher Port nicht von einem gewöhnlichen seriellen Port. Jede Applikation, die einen seriellen Port öffnen kann, wie minicom oder pppd, kommt auch mit /dev/ircomm0 zurecht. Wenn wir in unserem System die Datei /dev/ircomm0 immer noch nicht haben, müssen wir die Anweisung modprobe ircomm-tty ausführen. Es ist gut, dafür zu sorgen, dass dieses Modul bei jedem Systemstart geladen wird - wir können z.B. in die Datei /etc/modules (Debian), /etc/modprobe.preload (Mandriva) oder in /etc/modprobe.conf die Zeile alias char-major-161 ircomm-tty eintragen.

Natürlich kann man immer die Anweisung modprobe ircomm-tty zu einer der Startdateien wie z.B. /etc/init.d/rc.local hinzufügen. Ob das Gerät tatsächlich funktioniert, testen wir später mit Hilfe von Gnokii oder anderen Programmen.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung