Fritz!Box als ISDN Gateway für Asterisk (TrixBox)

Für den, der damit was anfangen kann, eine kurze Anleitung, wie man die Fritz!Box als einfaches ISDN Gateway für Asterisk (TrixBox) nutzen kann. Da die TCP-CAPI der Fritz!Box (noch) nicht unter Linux benutzt werden kann, wird ein zusätzliches Stück Software, die RCapi, auf der Fritz!Box installiert. Auf der Asterisk braucht man statt der üblichen Kartentreiber nur eine Lib, die alle Anforderungen der chan_capi and die RCapi der Fritz!Box weiterleitet.

Und so geht es:

Zum Anfang ein wichtiger Hinweis: Auf TrixBox keine ISDN Kartentreiber wie fcpci… oder capi4k-utils installieren, sonst gibt es Probleme !!!

1. Remote CAPI auf Fritz!Box installieren und starten

Vorbereitung:

Auf der TrixBox in /var/www/html ein Verzeichnis ‘RCapi’ anlegen und darin rcapid-mipsel-fbox-0.01.tar.gz entpacken.

Anschließend in der Datei rcapid_ins.sh folgende Einträge ändern REMOTE_SERVER="xxx.xxx.xxx.xxx" (IP-Adresse eurer TrixBox)REMOTE_URL="/RCapi/"

Installation:

Mit Telnet/Putty auf der Fritz!Box (ich habe die 5070) anmelden (die TrixBox muß jetzt laufen, genauer gesagt ihr WEB Server).

cd /var
wget http://xxx.xxx.xxx.xxx/RCapi/rcapid_ins.sh
chmod 755 rcapid_ins.sh
/var/rcapid_ins.sh
/var/rcapid_run.sh

Hinweis: Nach dem nächten Reboot der Fritz!Box ist das wieder weg und die Schritte müssen wiederholt werden.

Um das zu vermeiden kann man die Schritte z.B. in die debug.cfg schreiben (näheres dazu im Thread Fritz!Box-Modifikationen)

2. CAPI20 auf Trixbox installieren

Mit Telnet/Putty auf der TrixBox anmelden.

mkdir /home/capi
cd /home/capi
wget ftp://ftp.melware.net/../../capi-utils/libcapi20-3-cm.tar.gz
tar zxvf libcapi20-3-cm.tar.gz
cd libcapi20-3-cm
./configure
make
make install

Hinweis: Fehler ‘error: syntax error before “me”‘ oder ‘ac_nonexistent.h: No such file’ macht offenbar nix

Jetzt die Datei capi20.conf in /etc anlegen (yyy.yyy.yyy.yyy ist die IP-Adresse eurer Fritz!Box):

echo "REMOTE yyy.yyy.yyy.yyy 6000" > /etc/capi20.conf

3. CapiInfo installieren: (ist zum Test ganz hilfreich)

cd /home/capi
wget ftp://ftp.melware.net/../../capi-utils/capiinfo-cm.tar.gz
tar zxvf capiinfo-cm.tar.gz
cd capiinfo-cm
./configure
make
make install

4. RCapi testen

Mit telnet/putty auf die Fritz!Box schauen und auf der TrixBox capiinfo aufrufen.

auf der Fritz!Box erscheint:

someone wants 6000
accept, ctrl 3
…

auf der Trixbox erscheint eine lange Liste mit den 5 CAPI Interfaces der Fritz!Box

Number of Controllers : 5
Controller 1:
Manufacturer: AVM Berlin
…
…

Die Remote Capi ist damit installiert - für Asterisk wird jetzt noch chan_capi benötigt.

Hinweis: falls das nicht funktioniert hat (das passiert z.B wenn man vorher mit fcpci herumspielt), mal den Symlink libcapi20.so.3 im Verzeichnis /usr/lib prüfen und notfalls wie folgt ändern.

cd /usr/lib
rm libcapi20.so.3
ln -s libcapi20.so.3.0.3 libcapi20.so.3

Hinweis: die RCapi auf der FBF kann man auch unter Windows mit Brickware testen (wie, im Forum suchen)

5. chan_capi installieren

Hinweis: Hier muss man die heute (1.9.) aktuelle Datei chan_capi-cm-HEAD.tgz (r382) nehmen, sonst geht das Raustelefonieren nicht.

Vorbereiten:

Erst die Asterisk Include Dateien (*.h) installieren (fehlen bei Trixbox)

mkdir /usr/include/asterisk/
cd /usr/include/asterisk/
wget http://zulasch.zu.funpic.de/asterisk.zip
unzip asterisk.zip
rm  asterisk.zip

Installieren:

cd /home/capi
wget ftp://ftp.melware.net/../../chan-capi/chan_capi-cm-HEAD.tgz
tar zxvf chan_capi-cm-HEAD.tgz
cd  chan-capi-cm-HEAD
make
make install

6. Konfiguration der chan_capi

in /etc/asterisk/modules.conf folgende Zeilen einfügen:

unter folgenden Sektionen

[modules]
load => res_features.so
load => chan_capi.so

[global]
chan_capi.so=yes

Hinweis: Am Ende der Datei ist ein Zeilenvorschub nötig, also ‘ENTER’ drücken!

Falls Asterisk nicht startet, habt ihr vermutlich ‘res_features.so’ vergessen oder nicht VOR ‘chan_capi.so’ plaziert.

Jetzt noch eine Datei capi.conf in /etc/asterisk erstellen.

Hinweis: Nicht verwechseln mit capi.conf in /etc (für ISDN Hardware), die NICHT da sein darf, weil sonst die RCapi nicht benutzt wird.

Folgende Einträge sollten da sein:

[general]
nationalprefix=0
internationalprefix=00
rxgain=0.8
txgain=0.8

[ISDN1]
isdnmode=msn
incomingmsn=*
controller=1
group=1
softdtmf=on
faxdetect=off
context=capi-in

Hinweis: Weitere Beschreibung dazu in der Muster capi.conf in /home/capi/chan_capi… (insbesondere context hat in der Astreisk konfiguration eine wichtige Bedeutung)

7. Konfiguration in der Asterisk (hier TrixBox)

Trunk anlegen

Eine Hauptleitung/Trunk vom Typ ‘besondere Hauptleitung/custom’ erstellen.

Nun bei ‘Maximale Anzahl der Kanäle’ eine 2 und bei ‘Hauptkanalfolge’ CAPI/ISDN1/$OUTNUM$ eintragen.

Die Eingaben Speichern

Hinweis: Option /b (Early B3) führt (bei mir) zu einem Fehler, geht aber trotzdem.

Inbound Route anlegen

Nur bei ‘Durchwahl-Nummer’ die MSN angeben, auf die Asterisk reagieren soll und bei ‘Ziel einstellen’ eine Gruppe oder eine einzelne Extension angeben. Ich habe eine Gruppe ‘Alle’ mit zwei SIP Extensions 400 und 401 angelegt.

Die Eingaben Speichern

Outbound Route anlegen

Einen Namen geben (z.B. FBF) und nur bei Wählfolge 0|. eintragen und bei ‘Leitungssequenz’ den ISDN Trunk auswählen.

Die Eingaben Speichern und nicht vergessen, oben auf den roten Balken zu klicken

Damit sind wir fast fertig, was fehlt ist noch der context ‘capi-in’.

Bei der Trixbox muss der in der Datei extensions_custom.conf, sonst in custom.conf angelegt werden.

Dazu benötigen wir nur zwei Zeilen, die wir irgendwo einfügen

[capi-in]
include => from-pstn

Zum Schluß noch Asterisk neu starten: amportal restart

FERTIG

Wenn eine Nebenstelle angemeldet ist (z.B. für SIP ein X-Lite) kann man sie von außen über ISDN Anrufen, wenn man die MSN (der Inbound Route) anruft. Die Nebenstelle kann auch eine beliebige Rufnummer wählen. Damit es über ISDN raus geht, muß eine 0 vorangestellt werden (wie bei Outbound Route angegeben).

Das ganze sollte in einer Stunde erledigt sein. Im Asterisk CLI kann man ’set verbose 10′ eingeben damit man sieht, was passiert.

Auch die RCapi kann ein Log schreiben, wenn man in der inetd.conf hinter rcapid -l 10 ergänzt und mit kill -HUP pid (von inetd) die Änderung scharf macht (vorher Asterisk stoppen, damit rcapid neu geladen wird).

Hinweis: Nicht vergessen das Log wieder abzuschalten und aus /var/tmp zu löschen, der Platz ist da sehr knapp.

Noch ein Hinweis: bei Änderungen in capi.conf anschließend Asterisk neu starten (CLI reload liest die nicht neu ein).

Ach und noch was: wenn ihr mal die Fritz!Box neu startet, dann stoppt vorher Asterisk. Die nimmt es übel, wenn man ihr die RCapi wegnimmt und hängt dann.