Easybell SIP mit Openwrt auf der Easybox
Wir sind jetzt Kunden von easybell.
Soweit so gut. Allerdings haben wir damit aber zum ersten Mal VoIP-Land betreten und es fühlt sich komisch an.
Die Vorstellung endlich unser Siemens DECT und das dazugehörige fiepende Netzteil in Rente zu schicken hat mir natürlich gefallen, so ganz so leicht ist das aber dann doch nicht. Die stetige SIP-Verbindung mittels easybell VoIP to go oder der integrierten SIP-Funktion des Android Dialers (spätestens ab 5.0) belastet die Batterie leider sehr stark. Also haben wir kurzerhand einen älteren Androiden (Huawei Ideos X3) zum Haustelefon befördert. Strom gibt es für diesen übrigens einfach vom USB-Port des Routers, aus Effizienzgründen und so.
Leider mussten wir lernen, dass WLAN und SIP nicht sonderlich gut zusammenpassen, es gibt starke Qualitätsschwankungen beim Telefonieren. Für diesen Blogpost will ich zwei Lösungsansätze vorstellen, die dabei helfen können die VoIP-Qualität an einer mit OpenWRT betriebenen Easybox zu steigern.
QoS
OpenWRT kann natürlich von Haus aus Quality of Service mittels Linux traffic control, es muss nur entsprechend eingerichtet werden. Das OpenWRT Wiki ist wie immer spartanisch, aber hilfreich.
Installieren
opkg install qos-scripts
/etc/init.d/qos enable
/etc/inid.d/qos start
Konfigurieren
Zunächst prüft man, was die hauseigene Leitung so hergbit. Da dieser Wert ratenadaptiv ist und sich regelmäßig verändern kann, muss hier gegebenenfalls noch etwas nachgestellt werden. Bei uns sieht das so aus:
/etc/init.d/dsl_control status
Chipset: Ifx-Danube 1.3
Line State: UP [0x801: showtime_tc_sync]
Data Rate: 12.617 Mb/s / 1.151 Mb/s
Line Attenuation: 24.3dB / 16.0dB
Noise Margin: 5.6dB / 8.6dB
Line Uptime: 21h 41m 33s
Damit kann man dem QoS Scheduler also die Grenzwerte mitgeben (leicht abgerundet, falls der Wert nach unten schwankt):
uci set qos.wan.upload=1100
uci set qos.wan.download=12500
uci set qos.wan.enabled=1
uci commit qos
Als nächstes muss die Klassifikationsregel für VoIP-Traffic hinzugefügt werden
(tcp/udp port 5060). Entweder manuell in /etc/config/qos
oder wie oben mit
uci:
ID=$(uci add qos classify)
uci set qos.${ID}.target="Express"
uci set qos.${ID}.ports="5060"
uci set qos.${ID}.comment="VoIP"
uci commit qos
Unter Umständen muss die Box einmal neugestartet werden, damit fehlende
Kernelmodule automatisch geladen werden. Falls tc qdisc show
die
konfigurierten Regeln listet und ein Interface ifb0
existiert sollte alles
aktiv sein.
Leider kann aber auch ein perfekt getrimmtes QoS nicht helfen, wenn im WLAN dauernd andere Netzwerke dazwischen quatschen. Abhilfe schafft hier entweder ein 5GHz Exil oder man verzichtet auf WLAN.
analoge Anschlüsse nutzen
Die Box hat glücklicherweise 3 TAE-Anschlüsse eingebaut, sodass prinzipiell ein analoger Apparat daran betrieben werden kann. Das ist aus meiner Sicht zwar die hässlichste Variante, kann aber bei schlechter WLAN-Qualität hilfreich sein.
Tausend Dank gebührt Luca Olivetti für seinen oem-voip Port für die Easybox Platform:
https://github.com/olivluca/danube-voip.
Auch wenn ich noch nicht ganz verstehe, warum das Paket von libab
leer ist
und luci-svd
erst gar nicht übersetzt werden kann, ist die wichtigste
Funktionalität vorhanden. Wer es selber bauen möchte, kann ungefähr so vorgehen:
Download/Kompilieren
Entweder man besorgt sich das OpenWRT SDK von https://downloads.openwrt.org/barrier_breaker/14.07/lantiq/xway/ und baut die Pakete auf einnem halbwegs aktuellen Linux-Client (danach in bin/lantiq/packages/base):
wget https://downloads.openwrt.org/barrier_breaker/14.07/...
tar xf OpenWrt-SDK*
cd OpenWrt-SDK*/
git clone https://github.com/olivluca/danube-voip.git package/danube-voip
make package/danube-voip/svd/compile
oder man lädt sie sich von mir (ohne Garantie) herunter:
sofia-sip_1.12.11-1_lantiq.ipk
Installieren
Vom Linux-Client müssen dann die Pakete auf den Router (Host router
durch den Hostname oder
die IP der Easybox ersetzen) kopiert und installiert werden:
scp bin/lantiq/packages/base/*ipk root@router:/tmp/
ssh root@router "cd /tmp ; opkg install libab* sof* svd*"
Konfigurieren
Schlussendlich müssen die VoIP Zugangsdaten vom Anbieter konfiguriert werden. Auf dem Router muss dazu zum Beispiel für Easybell folgendes eingetragen werden:
uci del svd.example
uci set svd.easybell=account
uci set svd.easybell.user="<EASYBELL-SIP-USER>"
uci set svd.easybell.password="<EASYBELL-SIP-PASSWORT"
uci set svd.easybell.domain="sip.easybell.de"
# ggf möchte man das Log-Level noch herunterdrehen:
uci set svd.@main[0].log_level=1
uci commit svd
/etc/init.d/svd enable
/etc/init.d/svd restart
Fertig, viel Spaß beim Telefonieren :)