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 möchte auf dieser Seite in Zukunft ein paar Berichte zu Erfahrungen zusammentragen, die ich mit der „HorstBox Professional“ gemacht habe.
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.
Sollte die HorstBox einen niedrigeren Firmware-Stand als 5.0 haben (meine lief unter 4.2), empfehle ich einen Firmware-Update. Zwar gibt es Leute, die über die 5.0er-Firmware schimpfen, genau genommen kann man aber mit den älteren Versionen kaum etwas anfangen, da dort z. B. der externe Zugriff auf die HorstBox extrem eingeschränkt war.
Ich hatte Probleme mit dem Online-Update, was vielleicht daran lag, dass ich meine Internet-Verbindung nicht über die HorstBox selbst aufgebaut hatte. Das ist aber unproblematisch, D-Link stellt auch ein Image für den Offline-Update zur Verfügug, damit funktionierte bei mir alles perfekt.
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:
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!
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!
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
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.
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.
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.
D-Links Dateiarchiv zur HorstBox findet man unter ftp.dlink.de. Dort gibt es auch das oben öfters zitierte Handbuch, das sich allerdings auf die Firmware-Version 4.3 bezieht.
Viel zur HorstBox gibt es im IP-Phone-Forum. Hier aber aufpassen, die Infos zur HorstBox Standard und Professional gehen dort teilweise wild durcheinander.
© 2013 Thomas Omerzu, Dortmund, Germany
Erste Version Januar 2010 -
Letzte Änderung 07.06.2013 00:36
Counter seit 19.01.2010
10.972