Zurück zur Startseite Seiteninhalt: Der Plan - Aktueller Fortschritt - Neue Möglichkeiten

  

Die Version 2.0

Auf dieser Seite stelle ich kurz vor, was die sich gerade in der Entwicklung befindende Version 2.0 von IrCOMM2k an Fortschritt bringen kann. Hier werde ich zudem das Erreichen wichtiger Meilensteine bekanntgeben, sowie zu einem möglichen Alpha- und Beta-Test einladen. Ferner spinne ich ein paar Ideen weiter, die mir zu den Möglichkeiten der neuen Architektur von IrCOMM2k gekommen sind.

Der Plan

Mit einem Gespann aus zwei neuen Systemtreibern konnte ich mich bereits in den Datenstrom zwischen meinem IR-Adapter-Treiber und Microsofts IrDA-Protokolltreiber einschalten. Damit habe ich vollen Zugriff auf die IrDA-Rohdaten, die vom Adapter empfangen werden oder vom ihm gesendet werden sollen. Wenn ich nun den IrDA-Verkehr ständig beobachte, sollte es möglich sein, ankommende Anfragen an den virtuellen COM-Port bereits im Kernel an diesen weiterzuleiten. Ferner kann ich bei Bedarf auch selbst eine Verbindung initiieren, indem ich entsprechende Roh-Daten für den IR-Adapter erzeuge und direkt an ihn sende. Damit sind folgende Verbesserungen möglich:

  • volle Unterstützung aller IrCOMM Funktionen, d.h. die Übermittlung aller (virtuellen) Statusleitungen zwischen den Teilnehmern

  • Besonderheiten bestimmter Gegenstellen oder auch Anwendungsprogramme können berücksichtigt werden, so daß auch diese nun mit IrCOMM2k laufen (z.B. Psion-Handhelds)

  • Verbesserung der Latenzzeit durch direktere Verbindung von IR-Adapter und virtuellem COM-Port. Das kann sich je nach Art des Datenverkehrs auch positiv auf den mittleren Durchsatz auswirken

  • IR-Debug-Schnittstelle zum Mitzeichnen des Datenverkehr wird bessere Analyse von Problemen erlauben

Leider ist der Aufwand bis zu einer ersten voll funktionstüchtigen Version noch recht groß. Im Prinzip ist eine minimale Implementierung des IrDA-Protokolls erforderlich - und dieses Protokoll ist auch dann noch recht umfangreich...

Oder man nehme einen fertigen, sehr robusten und auch noch frei verfügbaren IrDA-Stack und baue ihn einfach in Windows ein. Aber woher bekommt man so etwas? Natürlich aus dem Linux-Kernel! Genau diesen Weg verfolge ich nun. Zunächst soll eine Konsolenanwendung entstehen, die einen seriellen IR-Adapter ansteuert. Wenn das funktioniert, erfolgt die Migration in den Windows-Treiber - womit Linux womöglich zum ersten Mal Einzug in das Heiligste von Windows hält: den System-Kernel!

Aktueller Fortschritt

04.01.2003:

  • Der Treiberkern kommt nun dem angestrebten Funktionsumfang der Release schon sehr nahe:
  • Microsofts IrDA und IrCOMM2k können jetzt parallel betrieben werden! Ein Forward-Treiber, der als Infrarotadapter installiert werden muss (einer für jeden physikalisch vorhandenen Adapter), leitet den Verkehr weiter, solange der virtuelle COM-Port geschlossen ist. Wird er geöffnet, übernimmt IrCOMM2k die Kommunikation wie bisher.
  • Fehler beseitigt, der die Kommunikation mit bestimmten IR-Geräten gestört haben könnte (es gab Berichte über hängen gebliebene PSIONs).
  • Weitere Speicherlecks in Linux-IrDA gesucht und gefunden (nobody is perfect).
  • Das sollte nun die letzte Alpha-Version gewesen sein. Der nächte Milestone ist die Aktualisierung des Setup-Programms. Eventuell werde ich auch schon ein kleines Tool schreiben, um IR-Verbindungen zu visualisieren, die IrCOMM2k aufbaut. Das Ganze wird dann Beta1 heißen und die Phase einleiten, in der nur noch restliche Fehler behoben werden.

27.12.2002:

  • Ein verspätetes Weihnachtsgeschenk: die Alpha3 ist da mit ein paar Fehlern weniger:
  • Ursache der Abstürze mit "MULTIPLE_IRP_COMPLETE_REQUESTS"-Meldung behoben.
  • Workaround für Probleme mit Hummingbird Exceed (betraf schon die 1.x-Versionen!). Programme, die ohne Timeout und ohne Flusskontrolle auf den COM-Port schreiben, wurden bislang dauerhaft blockiert, wenn keine IR-Verbindung aufgebaut wurde.
  • Linux-Kern aktualisiert (2.4.20) und teilweise auf Speicherlecks untersucht (Patch für Linux selbst ist in Vorbereitung).
  • IrDA-Protokoll meldet sich nun anderen Geräten gegenüber mit dem Systemnamen und nicht mehr nur mit "Linux-IrDA".
  • Im nächsten Schritt (Alpha4) werde ich mich der Anbindung des Microsoft-IrDA-Stacks widmen, damit auch dessen Funktionen bei Bedarf wieder genutzt werden können. Mir kommt der Satz irgendwie bekannt vor?

15.12.2002:

  • Mit der heute freigegebenen Alpha2 (siehe Download-Seite) sollten wieder ein paar Psion/Communicator-Nutzer mehr per Infrarot synchronisieren können! Vorabtests deuten jedenfalls daraufhin. Änderungen in dieser Version:
  • Statusleitungen werden nun in beide Richtungen unterstützt. Bis zum Aufbau der IR-Verbindung gelten Eingangsleitungen als gesetzt (löst Psion-Problem).
  • Vervollständigung der IOCTL-Funktionen des virtuellen COM-Ports.
  • Fehler unter XP behoben, der bei manchen IR-Adaptern zum sofortigen Absturz führte.
  • Fehler beseitigt, der zu Abbrüchen bei der Übertragung großer Datenmengen führte.
  • Im nächsten Schritt (Alpha3) werde ich mich der Anbindung des Microsoft-IrDA-Stacks widmen, damit auch dessen Funktionen bei Bedarf wieder genutzt werden können.

01.12.2002:

  • Hier ist sie nun, die lang versprochene Alpha-Version! Auf der Download-Seite finden sich die ausführbaren Dateien und natürlich auch die zugehörigen Quellcodes. Zur Installation bitte unbedingt die Hinweise in der zugehörigen Readme.txt lesen!
  • Was bereits klappt (bei mir): Hotsync mit einem PalmOS-4.0-Gerät (schneller als mit eingebauter Infrarot-Unterstützung von Hotsync!), voller Zugriff auf ein S35i mit S25@once, ViSie, PEP2000 und Sx35CZ, insbesondere der Logo-Upload läuft im Gegensatz zu früher absolut problemlos.
  • Was noch nicht klappt (laut einem Vorabtester): Synchronisation mit Psions. Ich bin aber sehr optimistisch, dank der umfangreichen eingebauten Diagnosemittel dieses Problem auch "aus der Ferne" früher oder später zu lösen.
  • Was noch fehlt: einige IOCTL-Steuerbefehle des virtuellen COM-Ports (u.a. zum Setzen von Statusleitungen auf der Gegenseite), (Teil-)Parallelbetrieb des Microsoft-IrDA-Stacks zur Nutzung anderer IrDA-Dienste als IrCOMM, Setup-Programm, GUI zur Konfiguration und Diagnose uvm.
  • Stichwort Rückmeldungen: Fehlerberichte bitte per Mail an mich. Entweder brauche ich eine genaue Beschreibung, wie ich den Fehler nachstellen kann, oder die zugehörige Ausgaben von irda2kdump.exe und Portmon. Was hingegen funktioniert (und früher vielleicht nicht ging), bitte ins Forum posten.
  • Kleine Anekdote am Rande: Während der intensiven Arbeit mit dem verwendeten Linux-IrDA-Stack aus Kernel 2.4.19 trat ein Speicherleck in dessen Code zu Tage (nobody is perfect...). Prinzipiell war den Linux-Entwicklern das Problem schon bekannt, nicht aber die exakten Zeilen. Eine der Quellen dieses Problems, die für IrCOMM2k sehr kritisch war, konnte aufgedeckt und beseitigt werden. Ein Patch wird auch bald im Linux-2.5er-Kernel enthalten sein. Das ist Open-Source!

04.11.2002:

  • Es ist fast geschafft: Der IrDA-Stack ist als Protokolltreiber implementiert und der virtuelle COM-Port wurde an diesen bereits angebunden. Heute gelang mir nun zum ersten Mal eine Datenübertragung aus einem Terminalprogramm über Infrarot zu meinem Handy - die Rückrichtung ist jedoch noch nicht ganz fertig (aber die Handy-Antwort erschien schon auf der Debug-Konsole!).
  • Der Protokolltreiber nutzt direkt alle von Windows unterstützten IR-Adapter. Er verarbeitet entweder die Daten selbst oder leitet alles transparent zum Windows-IrDA-Treiber weiter. Ferner kann er mehrere Adapter ansteuern (getestet mit einem seriellen ACTiSYS IR220L+ und einem Tekram IRmate 410U, USB).
  • Alles läuft bei mir sehr stabil, so daß ich zuversichtlich bin, bald eine erste Alpha-Version freigeben zu können.
  • Noch zu tun ist folgendes: Datenempfang durch den COM-Port, Statusleitungen setzen und lesen, interne Flußkontrolle des virtuellen Ports. Sagen wir mal, 2 Wochen noch!
  • PS: Der Psion-Test mit irdalnx war übrigens nicht erfolgreich. Danke an alle, die es probiert haben.

22.09.2002:

  • Der Linux-IrDA-Stack läuft! IrCOMM ist integriert und das Programm so erweitert, daß es den virtuellen COM-Port ansteuern kann.
  • Erste Tests mit Handy und Palm sind vielversprechend, allerdings macht sich immer noch die fehlende Verarbeitung der Statusleitungen bemerkbar. Diese wird erst in der endgültigen Version enthalten sein (einige grundlegende Änderung im COM-Port-Treiber sind dafür nötig).
  • Alpha-Tester gesucht: Wer Lust hat, den aktuellen Stand einmal auszuprobieren, kann das Progamm downloaden und den Beschreibungen der Readme.txt folgen. Natürlich ist auch der Quellcode verfügbar. Insbesondere Psion-Besitzer, die zufällig auch über den passenden ACTiSYS-Dongle verfügen, seien aufgefordert!

08.09.2002:

  • Portierung von ersten Teilen des Linux-IrDA-Stacks in eine Win32-Konsolenanwendung war erfolgreich! Ein serieller Dongle (ACTiSYS IR220L+) wird angesteuert, IrLAP, IrLMP und IAS läuft.
  • Nur minimale Änderungen an den Linux-Sourcen waren nötig, das meiste fangen Header-Dateien ab, welche die Linux-Includes ersetzen.
  • Hier ein Snapshot der Kommunikation zwischen der Anwendung und meinem S35i. Das Handy versucht, einen Telefonbucheintrag zu versenden (der entsprechende Dienst fehlt auf der Gegenseite - IAS-Abfrage scheitert).
  • Nächste Schritte: TTP und IrCOMM portieren, IrCOMM dann an den virtuellen COM-Port anbinden. Damit könnte schon eine Unterstützung von PsiWin (PSION Sync-Software) erreicht werden, wenn auch beschränkt auf den ACTiSYS-Dongle.

23.07.2002:

  • Proof of Concept ist gelungen. Datenverkehr zwischen IR-Adapter und IrDA-Protokoll konnte durch eigene Treiber geleitet werden, ohne die Funktion der IR-Schnittstelle einzuschränken.
  • Ein einfacher IrDA-Traffic-Sniffer ist implementiert, der die Rohdaten in einer Konsole ausgibt (in Datei umlenkbar).
  • Fest kodierte Namen für meinen IR-Adapter erlauben leider noch keine Installation auf anderen Systemen => eines der nächsten Ziele
  • Ein paar Schnupperproben der Sniffer-Ausgabe ("<==": gesendet, "==>": empfangen): PEP2000 beim Handy-Logo-Senden (erfolglos), ebenso s25@once per IrCOMM2k (erfolglos) und schließlich s25@once per IR-Dateitransfer (erfolgreich).

Neue Möglichkeiten

Mit dem direkten Zugriff auf den IrDA-Verkehr besteht nun auch unter Windows 2000/XP die Möglichkeit, Analyse- und Monitor-Funktionen zu implementieren, wie man es vielleicht noch vom IR-Monitor unter 98 kennt (dieser stammt übrigens von HP und nicht von Microsoft...). Man könnte die Gegenstellen mit ihren angebotenen Diensten darstellen oder die Übertragungsrate und -qualität visualisieren.

Ferner wurden im Forum schon das eine oder andere Mal die Möglichkeit diskutiert, mehrere virtuelle COM-Port anzubieten, die dann bestimmten IR-Geräten (etwa über deren Namen) zugewiesen werden. Damit könnten mehrere Synchronisationsprogramme für unterschiedliche Handhelds etc. gleichzeitig laufen, ohne sich dabei zu behindern. Gebraucht wird also ein User-Frontend, das diese Zuordnung ermöglicht, die dann wiederum im IrCOMM2k-Kernel-Treiber umgesetzt würde.

Der Phantasie sind kaum Grenzen gesetzt, jedoch existieren sie in meiner Person. Ich kann mich immer noch nicht klonen und bin mit den Arbeiten an den Treibern schon gut beschäftigt. Wenn also jemand Lust hat, eine Windows-Anwendung mit den oben beschriebenen Funktionen zu programmieren - nur zu! Ein paar Vorkenntnisse über IrDA wären natürlich hilfreich, im wesentlichen ist aber Ethusiasmus gefragt. Über die Art der Schnittstelle zwischen den Kernel-Treibern und dem Monitor würden wir uns sicher einigen können.


Letzte Änderung: 04.01.2003
© 2002 Jan Kiszka
Valid CSS!  Valid HTML 4.01!