So nun kommen wir zum Praktischen Teil…
Ich habe einen Linux Rechner mit CentOS 5 in dem die HFC-S ISDN-Karte eingesteckt ist.
$ lspci |grep HFC
04:00.0 Network controller: Cologne Chip Designs GmbH ISDN network controller [HFC-PCI] (rev 02)
An die Karte wird dann das ISDN Cross-Kabel gesteckt und mit dem NTBA an deren S0-BUS Dose verbunden. Ein üblicher NTBA hat 2 S0-Bus Dosen, die auch gebraucht werden, da in die 2. das ISDN-Telefon eingesteckt werden muss. Der NTBA muss nun noch mit Strom versorgt werden. Das ist auch die Aufgabe des NTBA, den S0-Bus mit der nötigen Spannung zu versorgen, da ansonsten nur die ISDN-Karte und das Telefon am Bus hängen und beides passive Geräte sind.
(Internet)=—SIP—=(Netzwerkkarte ! Linux PC ! HFC-S Karte)=—ISDN S0—=(NTBA)=—=(ISDN Telefon)
So die Hardware ist nun komplett eingerichtet, nun folgt die Software:
Damit die Software erfolgreich kompiliert werden kann sind ein paar kleine Vorbereitungen von nöten.
Als erstes sollte sicher gestellt sein, dass die Entwicklerwerkzeuge installiert sind, wenn nicht, dann hilft ein einfaches:
$ yum groupinstall “Development Tools”
Und ein paar Zusätzliche Devel RPM´s sind ebenfalls noch erforderlich:
$ yum install libtermcap-devel ncurses-devel openssl-devel zlib-devel newt-devel
Ich bin mir nicht 100%ig sicher ob das reicht, wenn das bauen von Asterisk fehlschlägt sollten folgende RPM´s helfen:
- libtiff-devel
- postgresql-devel
- postgresql-server
- libogg-devel
- libvorbis-devel
- libtool-ltdl-devel
- sqlite-devel
- qt-devel
- kdelibs-devel
- gtk2-devel
- alsa-lib-devel
- unixODBC-devel
- curl-devel
Ausserdem muss SeLinux disabled sein, damit Asterisk erfolgreich gebaut werden kann, dazu einfach die Datei /etc/sysconfig/selinux editieren und die Zeile SELINUX=enforcing zu SELINUX=disabled ändern. Danach ist ein reboot erforderlich.
Zusätzlich werden die Kernel Quellen für den installierten Kernel benötigt
$ yum install kernel-devel kernel-xen-devel
Nun muss noch ein Link erstellt werden /usr/src/linux-2.6 der auf die richtigen Kernel Quellen zeigt
$ cd /usr/src
$ ln -s kernels/`uname -r `-`uname -m`/ linux-2.6
Jetzt wird es ernst, es geht nun ans bauen und installieren von Asterisk, dazu muss man sich das Bristuff Paket von http://www.junghanns.net/en/home.html herunterladen und installieren.
$ wget http://www.junghanns.net/downloads/bristuff-0.3.0-PRE-1y-u.tar.gz
$ tar xzvf bristuff-0.3.0-PRE-1y-u.tar.gz
$ cd bristuff-0.3.0-PRE-1y-u
$ ./install.sh
Bei dem ./install.sh wird alles was noch benötigt wird, wie die Asterisk Software selbst etc. automatisch mit heruntergeladen und kompiliert. Wenn am Ende folgende Meldung ausgegeben, war das alles Erfolgreich.
+—- Asterisk Installation Complete ——-+
+ +
+ YOU MUST READ THE SECURITY DOCUMENT +
+ +
+ Asterisk has successfully been installed. +
+ If you would like to install the sample +
+ configuration files (overwriting any +
+ existing config files), run: +
+ +
+ make samples +
+ +
+—————– or ———————+
+ +
+ You can go ahead and install the asterisk +
+ program documentation now or later run: +
+ +
+ make progdocs +
+ +
+ **Note** This requires that you have +
+ doxygen installed on your local system +
+——————————————-+
****************************************************
ASTERISK installed.
BRIstuff Installation finished.
****************************************************
Wenn man das nun alles zum ersten mal gemacht hat, dann sollte man noch die Sample Konfigurations-Dateien installieren mit:
$ cd asterisk
$ make samples
Da nun alles installiert ist, geht´s ans konfigurieren. Als erstes kümmern wir uns um die /etc/zaptel.conf , in der Datei werden die Parameter für die HFC-S ISDN Karte definiert und sollte wie folgt aussehen:
# hfc-s pci a span definition
# most of the values should be bogus because we are not really zaptel
loadzone=nl
defaultzone=nl
span=1,1,3,ccs,ami
bchan=1-2
dchan=3
Nun kann man auch schon das Kernel Module für die Karte laden, welches auf den Namen zaphfc hört.
$ modprobe zaphfc modes=1
$ ztcfg -vvvv
Das modes=1 sagt dem Treiber, dass die Karte im NT Modus arbeiten soll, das ist der Modus um einen internen S0-Bus dadran zu betrieben und das ztcfg -vvvv zeigt die Konfiguration der Karte und ggf. Fehler an.
Jetzt geht es an die Konfiguration der Asterisk, dazu wechseln wir in das Verzeichnis /etc/asterisk . Da gibt es nun eine Menge an Konfigurations-Dateien, aber wir brauchen lediglich 3 davon anfassen, der Rest kann so bleiben wie er ist. Die 3 für uns Interesanten Dateien sind die zapata.conf, welches der Asterisk erzählt, wie mit der HFC-S ISDN Karte umzugehen ist. In der Datei sip.conf wird der SIP Zugang zu Sipgate konfiguriert und in der Datei extensions.conf werden die sogenannten Extensions konfiguriert, welches Asterisk sagt, wie alles zusammen spielen soll.
Fangen wir also erstmal mit der zapata.conf an, die wie folgt aussehen muss:
[channels]
;—————————————————————————-
;NT-Karte fuer ISDN-Telefonanlage im Mehrgeraete-Anschluss
;—————————————————————————-
;language=de
switchtype = euroisdn
signalling = bri_net_ptmp
pridialplan = dynamic
prilocaldialplan = local
nationalprefix = 0
internationalprefix = 00
echocancel = yes
echotraining=100
echocancelwhenbridged=yes
immediate = no
overlapdial=yes
group = 1
context = default
channel => 1-2
Und nun die sip.conf. Hier muss der String SIP-ID durch die Sipgate ID und der String SIPPASS durch dass Sipgate SIP Passwort erstetzt werden:
[general]
port = 5060
bindaddr = 0.0.0.0
; IP des externen Gateways, hier eintragen, wenn feste IP vorliegt
; externip = 0.0.0.0
; Netzadresse LAN
Localnet = 192.168.1.0/255.255.255.0
srvlookup = yes
context = default
disallow=all
allow=ulaw
allow=alaw
allow=gsm
register => SIP-ID:
Diese E-Mail Adresse ist gegen Spam Bots geschützt, Sie müssen Javascript aktivieren, damit Sie sie sehen können
/SIP-ID
; Das Leerzeichen zwischen ID: und SIPPASS kommt von der Blogging Software und muss weg
canreinvite=no
[sipgate]
type=friend
username=SIP-ID
secret=SIPPASS
host=sipgate.de
fromuser=SIP-ID
from=SIP-ID
context=default
canreinvite=no
insecure=very
nat=no
dtmfmode=info
Und zuguter letzt die extensions.conf, hier muss ebenfalls der String SIP-ID durch die Sipgate ID, welches ebenfalls die einkommende Telefonnummer ist, ausgetauscht werden.
[general]
static=yes
writeprotect=no
[globals]
IAXINFO=guest ; IAXtel username/password
[default]
exten => SIP-ID,1,Dial(Zap/g1/${EXTEN})
exten => SIP-ID,2,Hangup
exten => _X.,1,Dial(SIP/${EXTEN}@sipgate,60)
exten => _X.,2,Congestion
exten => _X.,3,Busy
exten => _X.,4,Hangup
Die Zeile
exten => SIP-ID,1,Dial(Zap/g1/${EXTEN})
sagt der Asterisk, dass alle eingehenden Anrufe auf der Nummer SIP-ID an die erste HFC-S ISDN Karte ausgegeben werden soll und die Zeile
exten => _X.,1,Dial(SIP/${EXTEN}@sipgate,60)
sagt, dass alle (_X) gewählten nummern, über sipgate rausgehen sollen.
So die Konfiguration ist nun Abgeschlossen und Asterisk kann gestartet werden, da wir beim ersten mal auch sehen wollen ob das alles klappt machen wir das wie folgt:
$ asterisk -vvvvc
Wenn nun Asterisk ohne Fehler gestartet wurde sind wir in der Console von Asterisk und können nun mit ein paar befehlen sehen ob alles funktioniert. So zeigt uns
CLI> sip show registry
ob die Anmeldung am Sipgate SIP Server geklappt hat. Ein
CLI> pri show span 1
zeigt den span 1, welches die HFC-S ISDN Karte ist.
Nun kann man einfach mal am Telefon probieren ob man raus telefonieren kann, wenn das klappt sollte man nochmal sein Handy zur Hand nehmen und testen ob das rein telefonieren ebenfalls funktioniert und ob die Sprachqualität gut ist.
Wenn das auch erfolgreich war, sind wir nun fertig und haben eine Lösung, welche die Firtzbox wunderbar ersetzt und unendlich erweiterbar ist.
TIP 1: Wenn das bauen von Asterisk bzw. bristuff mit ./install.sh fehlschlug, ist es ratsam den Ordner komplett zu löschen und neu zu entpacken, mir scheint so das die make clean Routinen nicht so wirklich sauber aufräumen.
TIP 2: Taucht beim Betrieb im Syslog oder im dmesg folgender Fehler auf:
zaphfc: bchan rx fifo not enough bytes to receive! (z1=1493, z2=1486, wanted 8 got 7), probably a buffer overrun.
Könnte der Florz Patch helfen, den gibt es hier: http://zaphfc.florz.dyndns.org/ . Beim patchen mittels
$ zcat zaphfc_0.3.0-PRE-1y-l_florz-12.1.diff.gz |patch -p1
muss man den Pfad zur zaphfc.c und zaphfc.h anpassen, da der Patch nicht auf die aktuellste Bristuff Version gelinkt ist, aber dann ist das patchen erfolgreich.
Im dritten Teil erzähle ich davon, was bei mir nicht funktioniert und warum ich mir die Haare raufe
Tags: Linux, Asterisk, CentOS, ISDN, VOIP, HFC-S, Telefonie