Voice Over IP @ Home mit Asterisk und mISDN

Aus Basteltrieb habe ich Ende 2008 meine alte Teledat Telefonanlage durch eine Softwarelösung auf Basis von Asterisk ersetzt. Hierbei sollten die vorhandenen Endgeräte zum Teil erhalten bleiben.

Daraus ergab sich folgender Aufbau:

Asterisk und mISDN

Als ISDN Hardware kamen serverseitig zwei ISDN Karten mit HFC Chipsatz zum Einsatz. Die Wahl fiel auf diese Karten, da sie sehr preiswert waren und sich dank mISDN einfach konfigurieren ließen. mISDN ist der verwendete ISDN Treiber. Dieser bietet den Vorteil, dass er einen Betrieb im so genannten NT Modus zu lässt. Dies ist nötig, wenn man Endgeräte per ISDN an den Server anschließen will. Das Gegenstück dazu ist der PE Modus (Anbindung ans Amt). Auch die Anbindung an Asterisk ist bei mISDN denkbar einfach, da es einen nativen Channel Driver (chan_misdn) gibt. Für größere Installationen gilt dieses Konstrukt als ungeeignet – für meine Installation mit drei Endgeräten war es ausreichend. Außer den HFC Karten kam noch folgende Hardware zum Einsatz:
  • Elitegroup A740GM-M
  • AMD Athlon X2 4400+
  • 2 * WD Scorpio Blue 320GB 2,5″ im RAID1
  • 2 * 1024 MB Kingston Value RAM DDR2 533
  • Cooler Master Vortex 752(CPU Kühler)
  • be quiet Pure Power 300W ATX 2.2
  • SilverStone Sugo SG02-F schwarz
  • 1 * alter Telekom NTBA

Die Hardware wurde hauptsächlich auf einen möglichst niedrigen Stromverbrauch ausgerichtet. Mit Hilfe von Cpupowerd und den Laptop-Mode Tools konnte der Stromverbrauch idle auf ca. 40 Watt gesenkt werden. Die Festplatten sind dann abgeschaltet und die CPU wird auf 1000 Mhz @ 0,7 Volt heruntergetaktet. Mit einer anderen CPU und einem anderen Netzteil wäre eventuell ein noch geringerer Verbrauch möglich.

Folgende Software kam zum Einsatz

  • Debian Linux „lenny“
  • mISDN / mISDN-User 1.1.9
  • Aktuelle Asterisk SVN Version
  • Asterisk AddOns
  • MySQL 5
  • Apache 2
  • PHP5
  • CPUPowerd

mISDN ist hierbei zweigeteilt, weil die Module für den NT Modus nicht im Kernel- sondern im Userspace ausgeführt werden. Grund hierfür waren wohl Instabilitäten in älteren Versionen. Die aktuelle Version läuft nach meinen Erfahrungen eigentlich sehr stabil. In neueren Kerneln ab Version 2.6.27 ist mISDN V2 bereits enthalten. Diese Version ist jedoch nicht mehr mit chan_misdn kompatibel. Aufgrund der komplizierteren Einrichtung bin ich bei der „alten“ Version geblieben.

mISDN Installation

Die Installation von mISDN ist denkbar einfach. Nach dem Download der aktuellen Versionen von mISDN und mISDN-User von dieser Seite werden die Archive entpackt und jeweils ein

make && make install

durchgeführt. Sollten hierbei Fehler auftreten, liegt dies meistens an einer Inkompatibilität zwischen der verwendeten mISDN Version und dem verwendeten Kernel. Achtet auch darauf, dass zum Kompilieren von mISDN die zum Kernel passenden Header installiert sein müssen. Unter Debian geht das mit

apt-get install linux-headers-KERNELVERSION

Den aktuell verwendeten Kernel findet ihr mit folgendem Befehl heraus:

uname -a

Nach der Installation von mISDN müssen die ISDN Geräte erst konfiguriert werden. Dies ist zum Glück weitestgehend automatisiert:

misdn-init scan

Es werden nun alle erkannten Geräte aufgelistet. Hier sollten die beiden ISDN Karten auftauchen! Ist dies der Fall, kann mit dem folgenden Befehl eine entsprechende Konfigurationsdatei für mISDN erstellt werden:

misdn-init config

Hierdurch wird die Datei /etc/misdn-init.conf erstellt. Diese muss jetzt nur noch so angepasst werden, dass eine der beiden Karten im NT Modus läuft:

card=1,hfcpci,dtmf
card=2,hfcpci,dtmf
te_ptmp=1
nt_ptmp=2
poll=64
dsp_poll=64
dsp_options=0
dtmfthreshold=100
debug=0

Asterisk Installation

Die aktuelle Asterisk Version kann man auf Asterisk.org herunterladen. Nachdem die Quellen entpackt sind, kann die Kompilierung mit

./configure

vorbereitet werden.

Danach können die zu kompilierenden Features noch mit

make menuselect

konfiguriert werden. Hier ist darauf zu achten, dass der mISDN Channel Driver aktiviert ist.

Nun noch mit

make

und

make install

Asterisk kompilieren und auf dem System installieren. Wenn man bei der Konfiguration von Asterisk nich ganz von vorne anfangen will, kann man mit

make samples

nun noch die Standardkonfiguration unter /etc/asterisk erstellen lassen.

Konfiguration von chan_misdn

Auf die Konfiguration von Asterisk und speziell auf die Konfiguration der Datei extensions.conf, in der der gesamte Wählpan definiert wird, möchte ich an dieser Stelle nicht näher eingehen. Dazu gibt es genug Anleitungen im Web. Interessanter sind die Features der Datei mISDN.conf, auf die ich an dieser Stelle näher eingehen möchte.

Um chan_misdn in der Wählplan verwenden zu können, müssen zuerst Portgruppen definiert werden. Ich habe daher eine Gruppe für den internen und eine für den externen Port definiert:

[intern]
ports=2
context=default
msns=*
overlapdial=2
[extern]
echocancel=64
ports=1
context=misdnextern
callgroup=1
msns=*****,*****,*****

Wichtig ist hierbei die Option overlapdial. Ist diese Option nicht aktiviert, fängt Asterisk sofort an zu wählen, wenn an einem analogen Endgerät die erste Ziffer eingegeben wird. Der Wert 2 bedeutet, dass Asterisk stattdessen 2 Sekunden auf weitere Ziffern wartet.

In der extensions.conf könnte ein Dial-Befehl für den externen Port jetzt so aussehen:

exten => _XXX.,1,Dial(mISDN/g:extern/${EXTEN})

Hierbei würden alle nicht näher defininierten Nummern mit mindestens 3 Ziffern auf den externen Port geroutet.

Anschließen von ISDN Geräten am internen S0 Bus

Um Endgeräte an einer ISDN anschließen zu könne, reicht es nicht aus, diese für den NT Betrieb zu konfigurieren. Zusätzlich muss ein spezielles Crossover ISDN Kabel verwendet werden. Da diese Kabel kaum käuflich zu erwerben sind, bleibt einem nicht anderes übrig, als sich ein solches Kabel selber zu basteln. Die erforderliche Verdrahtung ist auf der folgenden Abbildung zu sehen:

Um aus einem gewöhnlichen Patch- oder ISDN-Kabel ein Crossover Kabel zu basteln, kann man entweder ein solches Kabel in der Mitte trennen und mit gedrehten Adernpaaren wieder zusammenlöten, oder man trennt einen der beiden Stecker ab und ersetzt ihn durch einen neuen RJ45 Stecker. Hierfür ist allerdings ein spezielles Crimp Werkzeug erforderlich.

Strom für die Endgeräte

Die meisten ISDN Endgeräte benötigen zudem eine Versorgungsspannung. Um diese Versorgungsspannung einzuspeisen, genügt es, einen normalen NTBA an den internen S0 Bus anzuschließen. Wichtig ist, dass der NTBA mit dem Stromnetz verbunden wird. Der Eingang des NTBAs, der normal mit der TAE Dose des Telefonanbieters verbunden wird, wird hierbei nicht genutzt. Ist der NTBA per Crossover Kabel mit dem Asterisk Server verbunden, kann an den zweiten Ports des NTBAs ein ISDN Telefon angeschlossen werden. Nimmt man an diesem Telefon jetzt den Hörer ab, sollte ein Freizeichen zu hören sein.

4.50 avg. rating (91% score) - 2 votes

2 Gedanken zu “Voice Over IP @ Home mit Asterisk und mISDN

  1. Pingback: Installation von mISDN V2 und LCR (Linux Call Router) | G-SURF

  2. Voice over IP ist für mich besonders günstige Telefonie über das Internet. Das stimmt so auch, denn Internet-Telefonie kann nur als VoIP Telefonie durchgeführt werden. Moderne VoIP Anbieter bieten jetzt auch Call back und Call through an.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Spamschutz * Time limit is exhausted. Please reload the CAPTCHA.