Auerswald-Telefonanlage unter Linux #

Als ich auf der Suche nach einer neuen Telefonanlage für unsere Firma war, weil auch wir endlich das 21. Jahrhundert erreichen wollten (ISDN und so), bemerkte ich voller Freude, dass es einen Hersteller gibt, der auch komplette Linux-Unterstützung verspricht: Auerswald. Mit der von uns erworbenen COMmander-Anlage bin ich bisher hochzufrieden. Außerdem scheint die Firma darauf bedacht zu sein, neue Technologien zügig einzuarbeiten. So ist die Anlage z.B. die erste überhaupt, mit der man SMS aus dem Festnetz versenden kann.

Als ich die CD mit der Software in die Hand nahm, habe ich zuerst kurz überlegt, ob ich die Windows- oder die Linux-Version benutze. Ich habe zuerst in den Linux-Bereich geklickt und gesehen, dass dort alle wichtigen Programme ebenfalls stehen. Einige Hürden waren allerdings zu überbrücken. Da die Anlage per USB angeschlossen wird, muss ein Kernel-Modul compiliert werden, dazu muss man die Kernel-Sourcen installieren. Außerdem müssen zwei verschiedene Java-Versionen installiert werden... Da ich es eilig hatte, habe ich also zur Windows-Version gegriffen. (Das war ein Lehrstück, was bei Linux noch verbessert werden muss!) Nach erfolgter Konfiguration der Anlage habe ich noch ein Siemens Gigaset-Telefon eingerichtet (Software natürlich nur unter Windows). Eingespielt, USB-Treiber, CAPI, fertig. Danach wollte ich noch was in der Anlage ändern - nix ging mehr. Langer Rede kurzer Sinn - ich habe es nach zwei Stunden Versuchen nicht geschafft, die Anlage unter Windows wieder anzusprechen oder den Treiber so zu löschen, das ich ihn neu installieren konnte. (Das war dann das Lehrstück, warum man kein Windows für sowas nehmen soll...). Dann habe ich mir gesagt: In der Zeit hättest Du das auch unter Linux gekonnt. :-( Daher dieser Artikel!

Dieser Artikel soll übrigens nicht bedeuten, daß die Doku von Auerswald schlecht wäre. Also dort ruhig auch mal reinschauen! Trotzdem habe ich die Installation nochmal aus meiner Sicht und damit vor allem aus Sicht eines Debian-Linux-Systems geschildert.

Linux-Software (ab 2008) #

Das Grundprinzip der Linux-Konfigurations-Software ist, daß die Software in Java geschrieben ist. Das spart Entwicklungszeit und sorgt dafür, daß es immer gleich aktuelle Versionen für alle Plattformen gibt.

Nach der ursprünglichen Installation der Software in 2006 habe ich sie im Herbst 2008 nochmals neu installieren müssen. Die Software benutzt in der aktuellen Version nicht mehr das Kernel-Modul "auerswald", sondern die usblib. Ist diese installiert, kann man das ausgepackte Programm einfach über das mitgelieferte Startskript starten. Alle unten genannten Probleme sind behoben. :-) Gratulation an Auerswald!

Eine Kleinigkeit war noch, daß mein Standard-Benutzer nicht auf die USB-Devices zugreifen darf. Es gibt dazu eine Anleitung im Download-Bereich bei Auerswald, wie man udev hierzu anders konfiguriert. Für einen einzelnen Programmstart tut es auch folgender Befehl als root:

  chmod a+rw /dev/bus/usb/* -R

Linux-Software (2006) #

Das hier folgende ist im Jahre 2006 geschrieben worden und eigentlich mit den neueren Software-Versionen nicht mehr aktuell. Ich lasse es dennoch stehen, falls jemand hier nochmal einen Hinweis zur Fehlerbehebung findet...

Vor den schnellen Erfolg hat der Liebe Gott (und Auerswald) die Installation von Basiskomponenten gesetzt:

Grundlagen #

Ich habe die Software auf einem Debian Woody System installiert. Auf der Auerswald-CD ist nur von Suse-Linux die Rede, daher hier die Debian-Version.

Zuerst mal benötigt man einen passenden Kernel (mind. 2.4.x). Dies kann man z.B. wie unter DebianKernelKompilieren beschrieben erreichen. Es ist darauf zu achten, daß USB in den Kernel einkompiliert ist (...ob das beim Standard-Woody-Kernel der Fall ist, kann ich im Moment nicht sagen, ich vermute aber Ja). Dies kann man prüfen, indem man nachschaut, ob das Verzeichnis /proc/bus/usb existiert.

Zusätzlich zur USB-Unterstützung im Kernel benötigt man noch einen Daemon, der die USB-Schnittstelle überwacht und bei Bedarf passende Treiber lädt. Dazu gibt es zwei passende Debian-Pakete: usbmgr und hotplug. Ich selber setze 'hier 'hotplug ein.

Ausserdem benötigt man eine Java-Laufzeitumgebung. Ich selber habe das Blackdown Java-RE 1.3.1 installiert. Da das unter Debian nicht so einfach ist, kann man unter JavaUnterDebian näheres hierzu erfahren. Für einige Auerswald-Programme (z.B. COMfortMelodie) ist ein Java1.1 nötig. Hierzu habe ich das Debian-Paket jdk1.1-dev installiert. Da die Auerswald-Programme aber scheinbar nach einer anderen Version des Sun-Java suchen, habe ich noch folgende Links angelegt:

  ln -s /usr/lib/j2sdk1.3/ /usr/lib/SunJava2
  ln -s /usr/lib/jdk1.1/ /usr/lib/SunJava1

Es reicht auch, im Auerswald-Verzeichnis die Datei JavaVersion1.3.rc anzulegen bzw. zu überschreiben und dort das Java-Installationsverzeichnis einzutragen, z.B. so:

JAVA_HOME=/opt/java/jre1.3.1_15
(das Beispiel bezieht sich auf ein komplett manuell installiertes JRE 1.3.1 von Sun).

Wer bereits ein JDK 1.4 oder 1.5 (alias J2SE 5.0) installiert hat: die Java-1.3-Programme von Auerswald laufen damit auch. Man muss dafür JAVA_HOME wie beschrieben manuell in der JavaVersion1.3.rc setzen.

USB-Treiber #

Um den USB-Treiber für das Auerswald-Telefon übersetzen zu können, benötigt man die Kernel-Sourcen, die auch die benutzte Kernel-Configuration (Datei ".config"). Hat man den Kernel sowieso selber angepasst und kompiliert wie in DebianKernelKompilieren beschrieben, so sind alle Dateien am richtigen Platz und werden automatisch gefunden.

Falls man einen anderen Rechner zum kompilieren benutzt, als den, auf dem der Treiber später laufen soll, muss der Kompilier-Rechner entweder einen identischen Kernel haben oder man kann mit export KERNELDIR=/pfad/zu/den/kernelsourcen/... einen anderen Kernel benutzen.

Das Paket auerusb-0.9.12.tgz, das auf der Auerswald-CD (oder im Internet) ist, habe ich nach /usr/src kopiert und dort mit

  tar xzf auerusb-0.9.12.tgz
  cd auerusb-0.9.12
  make
  mkdir /dev/usb           # weiss nicht, warum; scheint bei SuSe so installiert zu sein
  make install               # spätenstens dieser Befehl als root

entpackt, kompiliert und installiert. Dabei erscheinen normale Meldungen und die Aufrufzeile des Compilers, jedoch keinerlei Fehler- oder Warnmeldungen.

Testen kann man das Ganze, indem man sich mit

  tail -f /var/log/syslog

die System-Logdatei ausgeben lässt. Dann steckt man das Telefon ein. Passiert gar nichts, stimmt was mit der Kernel-Unterstützung nicht. Kommen einige Zeilen vom USB-Daemon (hotplug), so läuft dieser schonmal richtig. Steht da dann noch etwas von "auerswald", dann sollte alles stimmen. Auch ein Blick in das Verzeichnis /proc/bus/usb kann sehr interessant sein (Wobei ein geladener "driver" noch lange kein installiertes "device" bedeutet). Evtl. kann man versuchen, das Modul mit modprobe auerswald von Hand zu laden (Wenn das hilft, ist das ein Fehler in der Konfiguration von hotplug bzw. usbmgr, man muss ggf. nach jedem Update "make install" neu aufrufen). Mit lsmod kann man die vom Kernel geladenen Module ansehen. Ist das Modul auerswald dabei, ist das auch ein gutes Zeichen.

Der Auerswald-Treiber ist für Linux 2.4. Unter Linux 2.6 kann man den im Kernel vorhandenen (als experimentell markierten) Treiber nehmen. Dieser unterstützt allerdings nur die Konfigurationsprogramme, nicht die Anbindung als ISDN-Interface. Nach einem Hinweis auf der Linux-Kernel-Mailingliste habe ich diesen gepatcht, um mehr Geräte zu unterstützen als original (bezieht sich auf 2.6.9). Der Patch geht so: man suche in drivers/usb/misc/auerswald.c nach der Definition von auerswald_ids und ersetze diese durch folgendes (zwei Zeilen sind hinzugekommen):

static struct usb_device_id auerswald_ids [] = {
        { USB_DEVICE (ID_AUERSWALD, 0x00C0) },          /* COMpact 2104 USB */
        { USB_DEVICE (ID_AUERSWALD, 0x00DB) },          /* COMpact 4410/2206 USB */
        { USB_DEVICE (ID_AUERSWALD, 0x00DC) },          /* COMpact 4406 DSL */
        { USB_DEVICE (ID_AUERSWALD, 0x00DD) },          /* COMpact 2204 USB */
        { USB_DEVICE (ID_AUERSWALD, 0x00F1) },          /* Comfort 2000 System Telephone */
        { USB_DEVICE (ID_AUERSWALD, 0x00F2) },          /* Comfort 1200 System Telephone */
        { }                                             /* Terminating entry */
};

Inzwischen gibt es auf http://www.auerswald.de auch einen Treiber für Linux 2.6 (aktuelle Version 2.1.9). Der funktioniert besser als der im Kernel. Zum Compilieren reicht die übliche Prozedur für Module unter Linux 2.6:

tar xzf auerusb-2.1.9.tgz
cd auerusb-2.1.9
make SUBDIRS=`pwd` -C /pfad/zum/compilierten/kernel
cp *.ko /lib/modules/`uname -a`/misc

<em>Achtung</em>: Es hat mich (OT) ein paar Stunden Fehlersuche gekostet, herauszufinden, dass die Device-Nodes von dem makeauerdevs-Script falsch angelegt werden. Der Treiber verwendet Minor-Numbers ab 112 (das ist nirgendwo im Code erkennbar, aber in der Dokumentation versteckt - es scheint aber auch für 2.4 und den Auerswald-Treiber zuzutreffen?!). Folgender Shell-Befehl zum Anlegen der Devices funktioniert:

for i in `seq 0 15` ; do mknod -m 666 /dev/usb/auer$i c 180 `expr
112 + $i` ; done

Programm-Installation #

Installation und Betrieb der eigentlichen Programme benötigen keine root-Rechte mehr. Also habe ich in meinem persönlichen Home-Verzeichnis die Datei COMset-2.3.31.tar.gz abgelegt und mit

  tar xzf COMset-2.3.31.tar.gz
entpackt. Es entsteht ein Verzeichnis Auerswald. In dieses kann man per cd wechseln.

Bibliotheks-Zugriff #

Im Programmverzeichnis befinden sich Linux-Bibliotheken, die von dem Programm benötigt werden. In einem normal konfigurierten Debian-System werden diese jedoch nicht gefunden. Dabei geht es insbesondere um den USB-Zugriff. Damit das behoben wird, kann man entweder die Bibliothek als root systemweit installieren, das geht mit su -c "cp COMset/COMset-2.3.31/libAuerUsbJNINative.so /usr/lib/", oder man stellt den Linker richtig ein, indem man vor dem Programmstart export $LD_LIBRARY_PATH=. eingibt bzw. in das Startskript einfügt.

Start #

Jatzt kann man mit

  ./StartCOMSet.sh
das Programm starten. Entsprechend laufen natürlich auch die anderen Java-Programme der Auerswald-MegaCD.

Neuinstallation / Deinstallation #

Ich versuche immer, Pakete so sauber wie möglich in das Debian-System einzubinden, um den Paketmanager nicht zu verwirren. Leider ist das nie ganz möglich, wenn man keine echten Debian-Pakete hat (vielleicht ändert Auerswald das ja irgendwann?!?). Daher rate ich zur Neuinstallation insbesondere des Auerswald-USB-Treibers nach jeder Änderung an Debian-Paketen, die die Software beeinflussen könnten wie z.B. Distributions-Upgrade, neuer Kernel, etc. Eine Deinstallation sollte ebenfalls sehr vorsichtig gemacht werden. Gelöscht werden kann dann der Kernel-Treiber, die Library sowie alle Programme im Verzeichnis "Auerswald".

Probleme #

Leider sieht es so aus, als ob die Auerswald-Entwickler eine andere Java-Version oder andere Fonts benutzen. Dadurch sind viele Texte abgeschnitten oder oft auch gar nicht zu sehen. Dieses Problem müsste entweder von Auerswald angegangen werden oder man müsste versuchen, eine andere JVM zu installieren.

Startschwierigkeiten #

Unter (K)Ubunu (7.04, Feisty Fawn) wollen die 'StartCOM...' Skripte einfach nicht starten. "start14.sh: not found" kommt als Fehlermeldung. Das liegt an der verwendeten Shell. Die "/bin/sh" ist bei Kubuntu verlinkt mit "/bin/dash". Die 'dash' wiederum versteht den "."-Befehl zum einlesen von Dateien, nicht. So kann "start14.sh" nicht nachgeladen werden.

Abhilfe ist einfach. Ich erkläre es am Beispiel von COMset: Die Datei "COMset/COMset-2.6.28/start.sh" zum ändern öffnen. Die oberste Zeile von "#!/bin/sh" in "#!/bin/bash" ändern. Dannach sollte es laufen.

Bei Fragen stehe ich (ThomasBayen) natürlich gerne unter mailto:tbayen@bayen.de zur Verfügung. Ansonsten war auch die Auerswald-Hotline mailto:support@auerswald.de hilfsbereit und scheint an der Erstellung einer Debian-Version interessiert zu sein. Vielleicht gibts ja auch bald ein Debian-Paket?!?


Tags:  Hardware

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-5) was last changed on 26-Sep-2008 10:31 by ThomasBayen