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:

svd_1.8-2_lantiq.ipk

sofia-sip_1.12.11-1_lantiq.ipk

libab_1.2-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 :)


Written by Michael in linux on Sun 19 April 2015. Tags: openwrt, linux, internet,

Comments

comments powered by Disqus