Benutzung der IrDA-Schnittstelle #

Was ist IrDA? #

Die IrDA-Schnittstelle ist eine Infrarot-Schnittstelle, die eigentlich an allen moderneren Laptops vorhanden ist. Sie erlaubt die Kommunikation vom Laptop z.B. zu verschiedenen Organizern, zu Handys oder auch zu anderen Laptops.

Ich selber bin stolzer Besitzer eines Siemens S25-Handys mit serieller Schnittstelle. Ich habe zwei Ziele: Erstens MitDemHandyInsInternet und zweitens Zugriff auf Handy-interne Daten wie z.B. Telefonbuch etc.

Ich selber benutzte die IrDA-Schnittstelle schon laenger unter meinem alten RedHat 5.2-System. Im Vergleich zum damaligen Kampf kann ich nur sagen, dass IrDA inzwischen erwachsen geworden ist. Bis auf einen Interrupt-Konflikt hatte ich keinerlei Probleme.

Grundlagen #

Es gibt zwei verschiedene Verfahren, auf die Schnittstelle zuzugreifen:

  • Die IrDA-Schnittstelle ist immer an einem seriellen Port des Rechners angeschlossen. (An welchen, kann man meist im BIOS einstellen bzw. erfahren). Daher ist die einfachste Moeglichkeit, einen sogenannten SIR-Treiber auf die normale serielle Schnittstelle audzusetzen. Hierbei ist die Uebertragungsgeschwindigkeit auf 115.000 Bit / Sekunde beschraenkt.
  • Wer es schneller braucht, kann einen der FIR-Kerneltreiber benutzen. Dieser muss dann jedoch auf den im Laptop verwendeten IrDA-Chip zugeschnitten sein und erlaubt die volle Geschwindigkeit des Chips. Der Einfachheit halber habe ich jedoch erstmal mit dem SIR-Treiber angefangen.

Es muss prinzipiell erstmal ein Netzwerkdevice irda0 erzeugt werden. Dann koennen verschiedene andere Spezial-Protokolle auf diesem Device arbeiten. Hier gibt es z.B.

  • IrCOMM - Hiermit werden serielle Verbindungen aufgebaut wie mit einem Modem. Dieses Protokoll wird z.B. von vielen Handys benutzt, die somit ein Modem emulieren.
  • IrOBEX - Hiermit werden Datensätze ausgetauscht. Z.B. der Austausch von Visitenkarten zwischen Handys laeuft hierueber.
  • IrNET, IrLAN - Damit kann ein Netzwerk zwischen verschiedenen Computern aufgebaut werden.

Selber ausprobiert habe ich nur IrCOMM, weil das fuer mein Handy reichte. Wer mehr ausprobieren will, kann mich gerne ansprechen, da ich auch ueber die anderen Protokolle schn einiges an Informationen zusammengetragen habe. Uebrigens frage ich mich immer, was passiert, wenn man dem irda0-Device eine IP-Nummer zuordnet. Es koennte sein, dass man auf diese Art schon eine TCP/IP-Vernetzung realisieren kann(?)

Debian-Pakete #

Wie immer gebe ich die benoetigten Debian-Pakete an. Allerdings handelt es sich im Prinzip nur um sehr wenige Programme, die im Zweifelsfall auch ohne Sorge direkt bezogen und installiert werden koennen. Das Debian-Paket enthaelt allerdings ein Startskript, das die Sache etwas angenehmer macht, weil es die IrDA-Schnittstelle beim booten richtig initialisiert.

Früher (Debian Woody) waren die Pakete irda-common und irda-tools zu installieren, in einem neueren Debian-System sind alle IrDA-Funktionen im Paket irda-utils zusammengefasst.

Kernel-Module #

Wie bei allem, was richtig Spass macht, braucht man einige zusaetzliche Kernelmodule, was ggf. auf eine Kernel-Neukompilierung hinauslaeuft. Zu Beginn sollte man erstmal alle Module, die es zum Thema IrDA gibt, einbauen.

Eventuell kann man mit dem Programm findchip den verwendeten IrDA-Chip herausfinden, so dass man sich die anderen FIR-Treiber sparen kann. Von den Protokollen habe ich bisher nur IrCOMM benutzt, aber da man vorher nie weiss, womit man in der Zukunft noch herumspielt, kann man die anderen dazunehmen, wenn man will.

Bei den IrDA-Optionen habe ich Cache Last LSAP eingeschaltet (das stand so im menuconfig-Hilfetext) und das wars dann auch schon.

Debian-Konfiguration #

Wer das Debian-Paket installiert hat, muss bei der Paketinstallation noch ein paar Fragen beantworten. Im Grunde kann man da nichts falsch machen. Interessant zu wissen ist vielleicht, dass ein "Dongle" ein IR-Geraet ist, dass man an eine normale serielle Schnittstelle stecken kann. Hat man eine eingebaute Schnittstelle, braucht man also kein Dongle einzustellen.

Den Discovery Mode habe ich immer eingestellt. Ich bin mir nicht ganz sicher, aber ich glaube, dadurch wird eine Art staendiger Broadcast eingeschaltet wird, uber den der Computer anderen Geraeten seine Anwesenheit mitteilt. Da das natürlich auch Energie benötigt, sollte man, wenn man besonders sparsam sein will, den Broadcast, aber besser noch das gesamte irda, z.B. per Manipulation der Startskripte, abschalten, wenn man es nicht braucht.

Starten #

Im Prinzip wird die Schnittstelle durch Start des Programms irattach eingebunden. Entweder geht das im Startskript oder von Hand:

  irattach /dev/ttyS1 -s

Jetzt kann man durch einfaches starten von irdadump die Funktion testen. Es protokolliert alles mit, was ueber die Schnittstelle laeuft. Laesst man das Programm 10-20 Sekunden laufen, sollten einige Pakete sichbar sein und darunter auch eines, in dem der Name des Computer erscheint. Dies ist der oben erwaehnte Broadcast. Nun ist es an der Zeit, ein anderes IrDA-Geraet in die Naehe des Computers zu bringen. Jetzt sollten nach wenigen Sekunden auch Meldungen des anderen Geraetes auftauchen. Hier ist dann (zumindest bei meinem Handy) auch zu sehen, mit welchen Protokollen das Geraet arbeiten kann.

Beim Siemens S25 muss die IrDA-Schnittstelle uebrigens im Einstellungen-Menue vorher aktiviert werden. Da eine aktive IrDA-Schnittstelle immar auch Energie verbraucht, duerfte das bei allen Akkubetriebenen Geraeten so sein.

IrCOMM - Modembetrieb #

Zum Aufbau einer Verbindung ins Internet arbeitet das S25 mit dem IrCOMM-Protokoll. Um das zu nutzen, muss der entsprechende Kerneltreiber kompiliert sein. Dann muss noch eine entsprechende Geraetedatei in /dev existieren. Wenn diese nicht vorhanden ist (z.B. in älteren Debian Woody Systemen ohne devfs), kann man sie mit

  mknod /dev/ircomm c 161 0

erzeugen. Jetzt kann man auf /dev/ircomm wie auf eine serielle Schnittstelle zugreifen.

Ggf. empfiehlt sich, einen Link von /dev/modem auf /dev/ircomm anzulegen. Dies ist eine Konvention, die von einigen Programmen benutzt wird, um auf ein Modem zuzugreifen. Wenn sich dann irgendwann mal das Device, an dem das Modem angeschlossen ist, ändert (z.B. Anschluss per Kabel), braucht man nur den einen Link zu ändern und nicht alle Programme, die das Modem benutzen.

Jetzt kann man MitDemHandyInsInternet! :-)

Tips am Rande #

Natuerlich muss ppp bei der Kernelerstellung ausgewaehlt worden sein, damit eine Verbindung zum Provider gemacht werden kann. :-)

Ich hatte auf einmal arge Probleme beim Testen, die ich vorher nicht hatte. Nachdem ich lange gesucht hatte, fand ich heraus, dass immer Fehler auftraten, wenn meine PCMCIA-Netzwerkkarte im Rechner steckte. Daraufhin habe ich herausgefunden, dass das Ding einfach den Interrupt der zweiten seriellen Schnittstelle fuer die Netzwerkkarte benutzt hat. Wie unhoeflich! In /etc/pcmcia/config.opts kann man jedoch einstellen, welche Interrupts dabei verschont werden sollen. Jetzt klappt auch beides parallel. (Seufz! Als alter Amiga-Hase werde ich die Probleme, die PCs mit Interrupts haben, nie wirklich verstehen...)

Tja - da ich das ganzte schon zum zweitenmal gemacht habe, habe ich es diesmal ganz ohne externe Dokumentationen gemacht. Ansonsten gibt es aber ein http://tuxmobil.org/howtos.html IR-HOWTO und den http://tuxmobil.org/howtos.html Linux-Mobile-Guide. Wer Links zum Thema kennt, kann die gerne hier eintragen.

-- ThomasBayen

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-2) was last changed on 14-Nov-2006 10:17 by MarkusMonderkamp