Horstbox Professional

[Horstbox]

Nachtrag 2016

Bei meinem Umzug im letzten Jahr habe ich mich schweren Herzens entschlossen, meine alte Horstbox außer Betrieb zu nehmen.

Einer der Gründe war, dass der neue Internet-Provider nun zwangsweise eine Fritzbox mitliefert. Die tut zwar nicht all dass, was ich gerne möchte. Allerdings schien es mir unsinnig, hinter die Fritzbox noch eine Horstbox zu schalten, da diese doch in die Tage gekommen war und ihre Macken hat. Dies gilt insbesondere, wo ich hier einen File-, Mail-, Web-, Media- ... -Server unter Linux auf einem Einplatinencomputer (bislang Alix, nun aufgerüstet auf den Nachfolger APU1D4) laufen habe, der eigentlich prädestiniert ist, auch einen Asterisk-Server zu betreiben.

Und so ist es seitdem: Auf dem APU läuft ein Asterisk; für alles, was nicht auf der Fritzbox geht, macht sie VoIP-Verbindungen zu dem Asterisk, der dann die entsprechenden Funktionen (zum Beispiel meinen »Eliza«-Anrufbeantworter) implementiert. Bei Gelegenheit werde ich darüber einen eigenen Artikel schreiben ...

Meine Horstbox

Seit 2009 nenne ich eine „HorstBox Professional“, offizielle Typbezeichnung „DVA-G3342SB“, von D-Link mein Eigentum.

Die HorstBox ist ein Kombigerät und vereinigt WLAN-/ADSL-Router und Ethernet-Switch sowie ISDN-/VoIP-Telefonanlage. Sie ist nicht zu verwechseln mit der „HorstBox Standard“, deren Typbezeichnung „DVA-G3342SD“ sich zwar nur in einem Buchstaben vom Bruder unterscheidet, die aber sowohl vom stylischen Äußeren her als auch — was viel tragischer ist — im „Innenleben“ quasi nichts mit ihm gemein hat.

Für mich war bei der Wahl dieses Gerätes ausschlaggebend, dass hier von Hause aus ein Asterisk unter Linux läuft, der mir eine Flexibilität bzgl. der Telefonie bieten kann, von der ich auf einer Fritzbox nur träumen muss.

Ich habe auf dieser Seite ein paar Berichte zu Erfahrungen zusammentragen, die ich mit der „HorstBox Professional“ gemacht habe.

Horst und Herta

Auch wenn man es der Horstbox von außen nicht ansieht: Eigentlich enthält sie zwei voneinander völlig unabhängige Geräte, beide mit eigenem Prozessor, beide laufen unter einem eigenen Linux-Betriebssystem. Die beiden Geräte werden in der Community liebevoll "Horst" und "Herta" genannt.

Die Herta ist ein kombiniertes ADSL2+-Modem mit 802.11 b/g-WLAN-Router. Herta wird bzw. wurde von D-Link auch als separates Produkt DSL-G684T vertrieben. Wesentliche Bestandteile sind eine WLAN-Mini-PCI-Karte, ein AR7-Prozessor MIPS 4KEc von Texas Instruments mit integriertem DSP und analogem ADSL-Frontend, 32 MB Flash und ein 6-Port-Switch.

Der Horst basiert auf einer Intel Xscale-IXP42 CPU mit 533 MHz und verfügt über einen DSP, Serial Port Driver, 2 HFC-ISDN-Controller, 3 Analog-Port-Treiber, USB-2.0-Controller und RealTek Single-Port-LAN.

Von Hertas LAN-Ports sind nur vier nach außen geführt, einer ist fest mit Horst verdrahtet. Horst und Herta kommunizieren intern über ssh, dabei benutzt Horst die IP-Adresse 192.0.2.2, Herta die 192.0.2.1.

Obwohl die externen Ethernet-Ports an Herta angeschlossen sind, reicht Herta alle Daten zunächst an Horst weiter. Dementsprechend sieht man auf dem Ethernet von außen auch Horsts MAC-Adresse mit Präfix "AC:DE:48" = "Privat" und nicht die von Herta, die mit "00:17:9A" = "D-Link" beginnt und die man auch auf dem WLAN-Interface sieht.

Ratefuchs? Online-Quiz!
Lust auf Rätsel mit tollen Preisen?
Mach mit bei der Rätselrally!

Firmware-Update

Bevor man irgend etwas mit der HorstBox versucht, sollte man einen Firmware-Upgrade auf Version 5.0 machen. Die ausgelieferten Softwarestände sind allesamt unbrauchbar. Meine erste Horstbox lief unter 4.2, die 2014 bei Amazon gekaufte, zweite Box sogar nur unter 4.0.

Da es erstens Probleme gibt, sich mit aktuellen Webbrowsern mit der Admin-Oberfäche der Horstbox zu verbinden und außerdem bei mir das Online-Update sowieso nicht funktioniert hat, empfehle ich das Offline-Update.

Vorgehensweise:

Prinzipiell sollte man immer etwas Geduld haben, wenn die HorstBox rebootet. Erst, wenn das Status-Licht nicht mehr blinkt, sondern dauerhaft leutet, ist die Box wieder erreichbar.

Wenn man sich "verkonfiguriert" hat und die Box nicht mehr erreichbar ist, den Reset-Knopf auf der Rückseite 15 sec drücken, das setzt auf die Werkseinstellung zurück.

Zugriff über die Weboberfläche und ssh-Zugang

Viele Leute haben es schon verzweifelt beklagt: Die laut Handbuch vorgesehene Konfiguration mit dem Webbrowser nach https://192.168.0.1 geht einfach nicht, jedenfalls nicht in aktuellen Webbrowsern. Man bekommt beim Zugriff zunächst eine Warnung, weil das von der HorstBox verwendete Zertifikat nicht den richtigen Namen verwendet. Das Zertifikat zu akzeptieren hilft aber nur bedingt, denn die Verbindung bricht danach ab, weil das HTTPS-Protokoll, so wie es die HorstBox verwendet, offensichtlich nicht mit dem kompatibel ist, was aktuelle Browser unterstützen.

Eine "echte" Lösung habe ich hier auch noch nicht gefunden. Mit einem "alten Browser" (z. B. Firefox 3.6.28) geht der Zugriff aber problemlos und zwar auch unter aktuellen Windows-Versionen.

Mein Ansatz: Mit dem "alten Browser" einmalig eine Grundkonfiguration durchführen und dabei insbesondere den Admin-Zugriff über ssh erlauben. Man kann dann zukünftige Konfigurationen über ssh machen, dann hat man zwar keine grafische Oberfläche, aber wer will die schon ;-)

[SSH-Zugang aktivieren]

Den SSH-Zugang aktivieren kann man ganz einfach in der Admin-Oberfläche im Reiter System unter Administration. Dort den Haken "Administration via SSH aktiveren" und den Public-Key, den man z. B. ssh-keygen generiert hat, einfach komplett in das Feld "Öffentlicher SSH-Schlüssel" pasten, dann speichern und, ganz wichtig, die HorstBox einmal rebooten.

Danach kann man sich mit

ssh horstbox -l root

einfach und ohne Kennwort auf die Box einloggen und dort z. B. mit dem weiter unten erwähnten nvram-Kommando die Konfiguration des Systems (auch z. B. automatisch via per cron gestarteter Skripten) modifizieren.

Modifikationen

An der einen oder anderen Stelle im Web findet man Leute, die gleich ein komplett neues Betriebssystem-Image auf die Horstbox gepackt haben. Das ist aber nicht jedermanns Sache, meine auch nicht. Die eigenen Images bieten zwar oft einige Vorteile, aber noch öfter werden dann Standard-Features des Systems nicht mehr oder nicht mehr korrekt unterstützt.

Ich habe daher für mich einen anderen Weg gewählt:

Die Horstbox bietet nämlich in der 5er-Firmware auch die Möglichkeit, eigene Erweiterungen (sogenannte "AddOn-Module") auf einem USB-Stick bereit zu stellen. Diese werden dann bei Booten automatisch geladen. Der Vorteil liegt auf der Hand: Man kann einfach quasi-permanente Änderungen am System vornehmen, ohne die Gefahr, irgendetwas dauerhaft kaputt zu machen.

Wie geht das? Im Prinzip ist das im Hostbox-Handbuch im Anhang E "Installation von AddOn-Modulen" beschrieben. Allerdings gibt es ein paar Dinge, die man dabei unbedingt beachten muss und die im Handbuch nicht oder nicht richtig erwähnt werden. Daher hier die wesentlichen Schritte in Kürze:

  1. Passend formatierter USB-Stick

    Wir brauchen einen USB-Stick, der dann dauerhaft im USB-Port steckt. Ganz wichtig: Der USB-Stick muss mit einem ext3-Filesystem formatiert werden! ext2- und fat32-Formate kann die Horstbox zwar im Prinzip auch lesen, aber sie werden während des Bootvorgangs nicht erkannt!

    mke2fs -j /dev/sdX1

    Es empfiehlt sich, mit tune2fs den automatischen Filesystemcheck, der normalerweise nach gewisser Zeit oder einer bestimmten Anzahl von mount-Vorgängen automatisch durchgeführt wird, abzuschalten. Die Horstbox verfügt standardmäßig nicht über ein passendes fsck-Kommando, deshalb würde dann ab dem Zeitpunkt, ab dem ein fsck nötig wäre, der Stick nicht mehr automatisch gemountet!

    tune2fs -c 0 -i 0 -e continue /dev/sdX1
  2. Erweiterungsmodul erstellen

    Das Modul muss als gezipptes Tar-Archiv zur Verfügung gestellt werden und dieser Namenskonvention folgen:

    HBXPro-AddOnName.tar.gz

    Es ist nur ein Modul je Datenträger erlaubt und es muss im Root-Verzeichnis der ersten Partition abgelegt werden.

    Laut Handbuch wird das Installationsarchiv nach erfolgreicher Installation gelöscht, das konnte ich bei mir noch nie beobachten.

    Das Tar-Archiv soll nur relative Pfade verwenden und muss als letztes eine (leere) Datei mit Namen EOP enthalten.

    Das Tar-Archiv kann ein Init-Skript für das Verzeichnis etc/init.d enthalten, das dann beim Booten des Systems ausgeführt wird. Es folgt der Namenskonvention

    etc/init.d/AddOnName

    Das Handbuch behauptet übrigens etwas anders: Dort steht, der Dateiname müsse mit "S" und einer zweistelligen Zahl (= Priorität) beginnen. Das ist falsch, die Horstbox führt die AddOn-Init-Skripten fix mit der Priorität 93 aus.

    Das Tar-Archiv kann ein Post-Installations-Skript enthalten, das nach der Installation des AddOns ausgeführt wird. Es folgt der Namenskonvention

    pkg/postinst-AddOnName.sh

    Laut Handbuch wird dieses Skript nach erfolgreicher Installation gelöscht, aber auch das konnte ich bei mir nicht beobachten. Ein ganz wichtiges Detail, dass das Handbuch nicht erwähnt: Das Postinst-Skript muss ein x-Bit haben, sonst wird es nicht ausgeführt!

    Das Handbuch schreibt ebenfalls vor, dass ein Skript für die Deinstallation enthalten sein muss. Es soll heißen:

    pkg/rm-AddOnName.sh
  3. Und jetzt?

    Um mal etwas deutlicher zu machen, was im Einzelnen wann passiert:

    • Beim Einstecken des USB-Sticks mit dem korrekt aufgebauten Paket wird die Installation gestartet. Dies bedeutet im Einzelnen:

      • Der USB-Stick wird nach /var/run/Modellname-id-1 gemountet.

      • Das Installationspaket wird in diesem Verzeichnis entpackt (ausgenommen ist die EOP-Datei, die landet unter /tmp).

      • Es werden NVRAM-Variablen angelegt, in der sich das System die Installation "merkt".

      • Das Postinst-Skript wird ausgeführt.

    • Die bereits installierten AddOns merkt sich das System, wie geschrieben, in NVRAM-Variablen, und zwar im Zweig "sys_addon". (Die Variablen kann man in der Horstbox in der Kommandozeile mit nvram -l auslesen.)

      sys_addon.list=1 2
      sys_addon.totalElements=2
      sys_addon.delete=false
      sys_addon.active.1=true
      sys_addon.path.1=/run/mnt/TransMemory-1955488-1
      sys_addon.name.1=astconf
      sys_addon.active.2=true
      sys_addon.name.2=testaddon
      sys_addon.path.2=/run/mnt/JumpDrive-31308720-1
      
    • Wichtig zu wissen: Die NVRAM-Einträge führen dazu, dass auch bei einem erneuten Einstecken dieses USB-Sticks das bereits installierte Paket nicht nochmal installiert wird!

    • Das Handbuch empfiehlt, installierte AddOns über die Oberfläche zu entfernen. Man kann aber auch einfach die NVRAM-Variablen löschen.

    • Die installierten AddOns werden beim Booten aktiviert, indem der Init-Prozess das Skript /etc/init.d/addons ausführt, welches seinerseits für jedes AddOn das Startskript ausführt.

    • Das AddOn kann natürlich auch auf Dateien zugreifen, die bereits auf dem USB-Stick waren und die nicht von der Installationsroutine installiert wurden ... Gerade in der Entwicklung eines AddOns kann man sich so die dauernde Neugenerierung des Installationspaketes und die Installation/Deinstallation sparen, man kann auch einfach den entpackten Dateibaum auf dem USB-Stick modifzieren.

  4. Was kann man damit Sinnvolles tun?

    Eine ganze Menge. Ich benutze das System, um eine eigene Asterisk-Konfiguration zu verwenden, die Features nutzt, die weit über das hinausgehen, was die Benutzeroberfläche erlaubt.

    Mein "astconf"-AddOn schiebt dem Asterisk ein komplett neue etc-/lib-/modules-Verzeichnisse unter (Loopback-mount von Verzeichnissen des USB-Stick). So kann ich beispielsweise ein iax2-Modul nutzen, was standardmäßig nicht unterstützt wird. Und natürlich meine eigenen "Tricks" im Wählplan.

Mein HorstBox-AddOn "astconf"

Es hatten mich schon verschiedene Leute gefragt, ob ich nicht mein oben schon erwähntes Asterisk-AddOn "astconf" veröffentlichen will. Mit dem Modul wird es möglich, eine eigene Asterisk-Konfiguration auf der HorstBox laufen zu lassen.

Also gut!

Die Schritte im Einzelnen:

Was hat das Tool gemacht? Im Wesentlichen drei Dinge: Es hat das Verzeichnis /etc/asterisk in das Verzeichnis asterisk/etc auf den USB-Stick kopiert, dann /etc/asterisk umbenannt und durch einen symbolischen Link auf das Verzeichnis auf dem USB-Stick ersetzt. Des weiteren hat es den Inhalt von /var/lib/asterisk in das Verzeichnis asterisk/lib auf den USB-Stick kopiert und dann das USB-Verzeichnis über das Original-Verzeichnis gemountet. Das Gleiche wird mit dem Verzeichnis /usr/lib/asterisk/modules gemacht, es wird nach asterisk/modules auf den Stick kopiert und dann das Verzeichnis auf dem Stick über das Orignalverzeichnis gemountet.

Das Kopieren auf den Stick wird nur beim ersten Lauf ausgeführt, bei späteren Boot-Vorgängen werden nur die bestehenden Verzeichnisse verlinkt bzw. gemountet. Dadurch bleiben Änderungen, die man an den Kopien der Dateien auf dem Stick gemacht hat, später erhalten.

Es ist sinnvoll, sich zunächst über die Horstbox-Admin-Oberfläche eine Basiskonfiguration für einen Wählplan zu erstellen, bevor man das astconf-Modul aktiviert. Das hat zwei Vorteile: Erstens hat man dann eine funktionierende Notkonfiguration, falls die Horstbox beim Booten den USB-Stick mal nicht erkennen sollte. Außerdem hat man dann eine Grundlage für die Erweiterung des Wählplans. Nach der Aktivierung des astconf sollte man aber die Finger von der Telefonie-Konfiguration in der Admin-Oberfläche lassen, denn die Changen, dass man sich damit die eigenen Konfigurationen zerschießt, sind ziemlich hoch ...

Und noch ein Nachtrag: Der Asterisk auf der HorstBox kommt standardmäßig ohne das IAX2-Modul daher. Mit dem astconf ist es natürlich kein Problem, das Modul nachzuladen, sofern man ein passendes Binary hat. Das kann man sich entweder unter Verwendung des von D-Link bereitgestellten Development-Systems selbst kompilieren, oder man das chan_iax2.so herunterladen. Es muss nach der Initalisierung des astconf in das Verzeichnis asterisk/lib auf den USB-Stick kopiert werden. Damit es geladen wird, muss in der asterisk/etc/modules.conf auf dem Stick ein

load => chan_iax2.so

ergänzt werden. Natürlich muss das IAX2 auch noch konfiguriert werden. Als Ausgangspunkt empfehlen sich die mit dem Asterisk mitgelieferten Beispieldateien iaxprov.conf und iax.conf, die man in das Verzeichnis asterisk/etc auf den USB-Stick packen und dann entsprechend anpassen kann.

Viel Erfolg!

Lichtorgel

Die Horstbox hat ja eine ganze Reihe von LEDs. Die sind natürlich in der Regel alle zu etwas gut. Je nach Einsatzzweck sind aber einige faktisch unbenutzt, beispielsweise die a/b-, Tel1- und Tel2-Leuchen, falls man gar keine analogen Anschlüsse besitzt.

Wenn man eigene AddOns produziert, wünscht man sich vielleicht die Möglichkeit, den Status des AddOns nach außen signalisieren zu können. Hier bietet es sich an, solche "unbenutzten" LEDs anzusteuern, das ist nämlich ganz einfach mit dem Kommando "ledcfg":

Usage: ledcfg -n <LEDS> -o <LEDS> -b <LEDS>
        -n Turns leds on
        -o Turns leds off
        -b Turn leds in blinking mode
         -s Special feature with leds :)
         -a Active Timer for leds and watchdog
         -r Stop Timer (reboots device if watchdog is active)
         -x Blackfin reset on
         -y Blackfin reset off
        -h This help screen

 <LEDS> = [12345678]
 Examples: ledcfg -n 1357 -o 2468
           ledcfg -n 12 -o 34 -b 56

Von den "Special features" würde ich vielleicht lieber die Finger lassen, aber die Optionen "n", "o" und "b" tun das, was man erwartet.

Die Zuordnung der LEDs ist dabei:
1=Stat, 2=Msg, 3=VoIP, 4=S0int, 5=S0ext, 6=Tel2, 7=Tel1, 8=a/b

Die anderen LEDs (LAN1-4, ADSL, WLAN) lassen sich so nicht ansteuern, da sie nicht zum Horst, sondern zur Herta gehören. Herta verfügt zwar auch über ein ledcfg-Kommando, das funktioniert aber deutlich anders.

Ressourcen im Netz

© 2017 Thomas Omerzu, Dortmund, Germany
Erste Version Januar 2010 - Letzte Änderung 25.04.17 21:28

Seitenzugriffe seit dem 19.01.2010
23.972