Auerswald ETS 4308i Reverse Engineering
Last modified: Mon Mar 15 02:37:30 CET 2004 Index

This is the homepage of a project of mine, wich has the aim to reverse engineer the Auerswald ETS 4308i ISDN PBX for making available programming tools for Linux. As this PBX seems only to be sold in Germany, this page will be in german, too. If you are interested in the results of the project, but do not speak german you may ask me questions about it by mzrgfer (at) 0pointer (at) de.

Für die ISDN Telefonanlage ETS 4308i von Auerswald gibt es bis jetzt keine Programmiersoftware für Linux. Da von Auerswald leider keinerlei Unterstützung kommt, um eine solche Software als OpenSource zu entwickeln, habe ich beschlossen, nun auf eigene Faust nach einer Lösung zu suchen.

Vorgehensweise Diese wird so aussehen, daß ich versuchen werde, das Verhalten der Auerswald-Windows-Programme zu analysieren und ähnlich in eigenen (Linux-)Programmen zu implementieren. Dazu fange ich sämtliche Daten ab, die die Programmiersoftware über die serielle (V.24-)Schnittstelle an die Anlage sendet oder von ihr empfängt. Nach einer Analyse dieser Daten sollte es möglich sein, Ersatz für die Windows-Software zu liefern. Für das Sniffen verwende ich momentan zwei Rechner. Auf dem einen läuft Windows und die Auerswald-Software. Der Rechner ist per seriellem Nullmodemkabel an einen zweiten Rechner angeschlossen, auf dem Linux läuft. Dieser Rechner verfügt ausserdem noch über ein serielles Kabel zur Telefonanlage. Auf diesem Rechner läuft nun das Programm etsre.c (Im Software-Kit enthalten), welches allen Daten vom Nullmodem zur Anlage und wieder zurück transportiert und dabei ausführlich dokumentiert. Die Auerswald glaubt, sie würde direkt mit der Anlage kommunizieren, dabei sitzt jedoch mein Spitzel in der Mitte.

Eine weitere Informationsquelle zur V.24-Schnittstelle ist das (leider zu diesem Thema etwas dürftige) Handbuch.

Beschreibung der V.24-Schnittstelle. Man kann die serielle Schnittstelle der Anlage in 7 verschiedenen Modi verwenden. Von jedem dieser Modi aus können die Konfigurationsdaten der Anlage manipuliert werden. Die Modi schalten dazu zusätzlich noch einige Features hinzu, wobei jedoch nicht mehrere kombiniert werden können:

(Zu diesem Thema sollte man am besten Seite P-61 aus dem Programmierhandbuch lesen. Gibt es auch als PDF auf der Homepage von Auerswald.)

Besonders interessant sind die drei Modi #2, #3 und #5. Zu #2 und #3 findet man Informationen um Handbuch. Für #3 habe ich ein kurzes Programm programmiert, daß die Gesprächsdaten ausliest. Es ist als caccount.c im Software-Kit enthalten.

Ganz besonders interessant ist #5. Dies liefert uns ein vollständiges D-Kanal-Protokoll der drei S0-Busse, die an der Anlage möglich sind. (2x extern, 1x intern) Diese Daten kann man wunderbar als Eingabedaten für isdnlog verwenden und so auf eine ISDN-Karte verzichten. Man bekommt ausserdem - anders als bei Verwendung einer ISDN-Karte für den selben Zweck - ein vollständiges Protokoll und getrennte für den externen und den internen Bus. Leider wird das Protokoll von Auerswald nicht dokumentiert und auch auf Emailanfrage wird ausweichend geantwortet. Es war mir aber trotzdem möglich die Daten aus diesem Protokoll für isdnlog zurechtzustutzen. In Bälde werde ich einen Patch für isdnlog releasen der die Auerswald anstatt einer ISDN-Karte als Eingabemedium erlaubt. Ein Vorläuferprogramm namens dkanal.c ist im Software-Kit bereits enthalten. Es liest die Daten von der seriellen Schnittstelle und wandelt sie in das selbe Format um, wie es auch /dev/isdnctrl0 verwendet. Mit dem Replay-Switch von isdnlog kann man diese Daten verwenden.

Das D-Kanal-Protokoll der Anlage hat folgendes Format: Die einzelnen Nachrichten werden durch 0xFFs getrennt. Taucht in einer Nachricht ein 0xFF auf, wird dieses mit einerm zweiten 0xFF escaped. Vor jede Nahricht sind vier zusätliche Bytes gepappt. über die Bedeutung dieser lässt sich nur spekulieren. Ich deute sie wie folgt: Byte #0 enthält immer #0A, Byte #1 immer 0x00, Byte #2 je nachdem ob die Nachricht gesendet wurde oder empfangen wurde 0x4E bzw. 0x54. Byte #4 enthält die Nummer des S0-Bus auf dem die Nachricht stattfand. Die beiden externen Busse sind mit 0 bzw. 1 bezeichnet, der interne mit 2. Danach folgen die eigentlichen D-Kanal-Daten, wie sie auch /dev/isdnctrl0 ausgibt.

Um dkanal.c oder caccount.c verwenden zu können muss die Anlage ersteinmal in den richtigen Modus geschaltet werden. Dazu muss man vom Programmierapparat aus die Nummer 81111830n angerufen werden. Statt n ist die jeweilige Nummer aus der obigen Listen zu wählen. (Also 5 bzw. 3)

Manipulieren den Konfigurationsdaten Das grundsätzliche Verfahren, wie man die Konfigdaten der Anlage manipulieren kann, habe ich zwar bereits dekodiert, Client-Software ist dafür aber noch nicht programmiert. Kommt noch.

Wie kann man helfen? Es ist sicherlich eine gute Idee, Auerswald immer wieder mal mit Emails zu nerven, in denen man um die Rausgabe einer Dokumentation über die Programmierung der Anlage bittet. Bisher hatte das zwar keinerlei Erfolg, aber vielleicht lässt sich Auerswald doch irgendwann durch höfliche Briefe dazu bewegen. BITTE IMMER HöFLICH BLEIBEN IN SOLCHEN EMAILS! Die Email-Adresse für solche Bitten ist support@auerswald.de. Meist bekommt man sogar eine Antwort auf solche Bittmails. Der Autor dieser Antwortmails scheint aber nicht besonders gut informiert zu sein. So behauptet er immer wieder, Auerswald hätte noch nie und würde auch nie Informationen über die serielle Schnittstelle der Anlage veröffentlichen. Dies ist aber nunmal einfach nicht korrekt. Im "Programmierhandbuch" der Anlage stehen durchaus einige Informationen über die Schnittstelle drin, so etwa, wie man die Gesprächsdaten aus der Anlage lesen kann. Der Mensch hinter support@auerswald.de scheint das Handbuch also nicht sonderlich gut zu kennen. Auch sonst sind die Auerswald-Leute wenig kooperativ. Auf meine Frage nach der Bedeutung von vier Bytes aus dem D-Kanal-Protokoll, welches man über die serielle Schnittstelle der Anlage auslesen kann, wurde mir beschieden, daß durch unsachgemässe Programmierung der Anlage diese zerstört werden könnte. Wieso ein einfacher Lesevorgang an der V.24-Leitung eine Selbstzerstörung der Anlage provozieren kann, bleibt allerdings unbeantwortet.

Des weiteren fände ich es natürlich immer gut, wenn möglichst viele Leute meine Software testen würden und mir Feedback liefern würden.

Download Hier gibt es immer die aktuelle Version des Software-Kits zum Download. Momentan ist die Software aber nicht weiter dokumentiert. Stattdessen sollte man einfach diese Homepage durchlesen. Mit "make" kann man das Software-Kit kompilieren und linken. Interessierte sollten sich aber ausserdem noch bei mir per mzrgfer (at) 0pointer (at) de melden. Nur so kann ich rausbekommen wir groß (oder wie klein) das Interesse an OpenSource-Clients für die ETS4308i ist.

News 26.11.00 Die neuste Version von etsre bietet einen lauffähige Version von dkanal.c. Wenn man dkanal startet, werden drei pseudo-devices als fifos unter /dev/auerswald0 bis /dev/auerswald2 erstellt. Diese emulieren ein /dev/isdninfo einer ISDN-Karte. Man kann isdnlog mit einem dieser Devices anstatt der eigentlichen /dev/isdninfo-Devices starten und so zu einem vollständigen dkanal-Log von jedem der drei S0-Busse kommen. /dev/auerswald0 entspricht dem ersten externe S0-Bus, /dev/auerswald2 dem internen Bus. Schaltet man bei neuen (CVS) Versionen von isdnlog den Modus "-22 -1" ein, dann kommt isdnlog wunderbar mit diesen aufgebohrten Devices zurecht. Man brauch nur dkanal vor dem Start von isdnlog starten. Als einzigen Parameter nimmt das Programm das Device der seriellen Schnittstelle an.


 © 2000-2004 by Lennart Poettering mzrgfer (at) 0pointer (at) de

$Id: index.latte 123 2004-03-15 01:37:30Z lennart $