Letzte Woche => Endspurt!Montag den 29.01.07 geht das Buch in die Produktion. Bis dahin laeuft der Beta-Test noch in vollem Umfang. Bitte melden Sie Fehler! Siehe Beta-Test FAQ. Erscheinungstermin: 03.03.07. Das Buch wird auf dem Asterisk-Tag.org in Chemnitz vorgestellt und kann dort auch erworben werden. 10 Tage spaeter wird es im Buchhandel sein. Wer nicht in Chemnitz sein kann, sollte das Buch vorbestellen: Amazon oder direkt beim Verlag Asterisk-Schulungen und Consulting vom Autor dieses Buches finden Sie auf http://www.amooma.de. Naechste Asterisk-Schulung: 12.02. - 13.02.07 - Ach ja, ... wir suchen auch noch Asterisk Entwickler! => http://www.amooma.de/jobs/ |
mISDN (modular ISDN for Linux) ist der offizielle Nachfolger von ISDN for Linux (hisax). Durch seinen modularen Aufbau unterstützt es neben den bekannten Treibern und Funktionen nun auch den NT Mode und ein Audio Software DSP.
mISDN unterstützt von allen ISDN Stacks die für Linux verfügbar sind, die breiteste Abdeckung von unterschiedlichen ISDN Karten. Deshalb wurde chan_misdn, welches mISDN mit Asterisk verbindet, auch mit in den Asterisk Entwicklungszweig aufgenommen und hat dort chan_i4lmodem abgelöst.
mISDN gliedert sich in zwei Software-Pakete:
mISDN
Einerseits gibt es das mISDN Paket welches die Hardware Kernel Module und den TE Stack beinhaltet und deshalb auch gegen die installierten Kernel Header kompiliert werden muss. Es enthält darüber hinaus ein Script zur automatischen Detektierung und Konfiguration der installierten Karten.
mISDNuser
Andererseits gibt es das mISDNuser Paket, welches die Schnittstelle für Applikationen wie chan_misdn bildet und zudem den NT Mode Stack enthält. Hier ist auch das nützliche Tool misdnportinfo enthalten.
In diesem Kapitel gibt es zwei Anleitungen für den Betrieb von mISDN. Die eine bezieht sich auf die Digium ISDN-Karte B410P und die andere auf allgemeine mISDN-Karten.
Dieses Kapitel beschreibt die Installation und Betriebnahme einer Digium B410P ISDN-Karte.
Diese Installationsanleitung setzt ein frisch installiertes Debian GNU/Linux 3.1 (a.k.a sarge) voraus. Ein ISO-Image für eine entsprechende i386er Debian Linux-Installation befindet sich unter http://cdimage.debian.org/debian-cd/3.1_r4/i386/iso-cd/debian-31r4-i386-netinst.iso . Eine Debian GNU/Linux-Installationsanleitung steht unter http://www.debian.org/releases/stable/i386/ und ein allgemeines Anwenderhandbuch unter http://debiananwenderhandbuch.de.
Nach erfolgreicher Installation des Debian Linux-Systems melden Sie sich als Benutzer root in das System an und führen Sie die hier nachfolgend angegebenen Befehle aus. Bitte achten Sie darauf, keinen Schritt auszulassen und die Schritte als Benutzer root durchzuführen.
Als Erstes stellen Sie mit einem apt-get update sicher, dass apt-get
alle aktuellen Paketlisten zur Verfügung hat:
debian:~# apt-get update OK http://ftp.de.debian.org stable/main Packages OK http://ftp.de.debian.org stable/main Release OK http://security.debian.org stable/updates/main Packages OK http://security.debian.org stable/updates/main Release OK http://security.debian.org stable/updates/contrib Packages OK http://security.debian.org stable/updates/contrib Release OK http://ftp.de.debian.org stable/main Sources OK http://ftp.de.debian.org stable/main Release Paketlisten werden gelesen... Fertig debian:~#
Um sicherzugehen, dass alle Pakete auf dem neuesten Stand sind, führen Sie zur Sicherheit noch ein apt-get -y upgrade aus:
debian:~# apt-get -y upgrade Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut... Fertig 0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Jetzt müssen Sie mit apt-get -y install openssl zlibc libkrb5-dev libncurses5-dev libssl-dev zlib1g-dev noch ein paar Pakete nachinstallieren, damit das spätere Kompilieren von Asterisk erfolgreich durchgeführt werden kann:
debian:~# apt-get -y install openssl zlibc libkrb5-dev libncurses5-dev libssl-dev zlib1g-dev Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut... Fertig Die folgenden zusätzlichen Pakete werden installiert: comerr-dev libkadm55 Vorgeschlagene Pakete: doc-base krb5-doc ca-certificates Die folgenden NEUEN Pakete werden installiert: comerr-dev libkadm55 libkrb5-dev libncurses5-dev libssl-dev openssl zlib1g-dev zlibc 0 aktualisiert, 8 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen 6025kB Archive geholt werden. Nach dem Auspacken werden 18,8MB Plattenplatz zusätzlich benutzt. Hole:1 http://ftp.de.debian.org stable/main libkadm55 1.3.6-2sarge3 [165kB] Hole:2 http://ftp.de.debian.org stable/main libncurses5-dev 5.4-4 [1038kB] Hole:3 http://ftp.de.debian.org stable/main libssl-dev 0.9.7e-3sarge4 [2555kB] Hole:4 http://ftp.de.debian.org stable/main openssl 0.9.7e-3sarge4 [906kB] Hole:5 http://ftp.de.debian.org stable/main zlib1g-dev 1:1.2.2-4.sarge.2 [488kB] Hole:6 http://ftp.de.debian.org stable/main zlibc 0.9j-7 [245kB] Hole:7 http://ftp.de.debian.org stable/main comerr-dev 2.1-1.37-2sarge1 [53,0kB] Hole:8 http://ftp.de.debian.org stable/main libkrb5-dev 1.3.6-2sarge3 [574kB] Es wurden 6025kB in 57s geholt (104kB/s) Wähle vormals abgewähltes Paket libkadm55. (Lese Datenbank ... 32512 Dateien und Verzeichnisse sind derzeit installiert.) Entpacke libkadm55 (aus .../libkadm55_1.3.6-2sarge3_i386.deb) ... Wähle vormals abgewähltes Paket libncurses5-dev. Entpacke libncurses5-dev (aus .../libncurses5-dev_5.4-4_i386.deb) ... Wähle vormals abgewähltes Paket libssl-dev. Entpacke libssl-dev (aus .../libssl-dev_0.9.7e-3sarge4_i386.deb) ... Wähle vormals abgewähltes Paket openssl. Entpacke openssl (aus .../openssl_0.9.7e-3sarge4_i386.deb) ... Creating directory /etc/ssl Wähle vormals abgewähltes Paket zlib1g-dev. Entpacke zlib1g-dev (aus .../zlib1g-dev_1%3a1.2.2-4.sarge.2_i386.deb) ... Wähle vormals abgewähltes Paket zlibc. Entpacke zlibc (aus .../archives/zlibc_0.9j-7_i386.deb) ... Wähle vormals abgewähltes Paket comerr-dev. Entpacke comerr-dev (aus .../comerr-dev_2.1-1.37-2sarge1_i386.deb) ... Wähle vormals abgewähltes Paket libkrb5-dev. Entpacke libkrb5-dev (aus .../libkrb5-dev_1.3.6-2sarge3_i386.deb) ... Richte libkadm55 ein (1.3.6-2sarge3) ... Richte libncurses5-dev ein (5.4-4) ... Richte libssl-dev ein (0.9.7e-3sarge4) ... Richte openssl ein (0.9.7e-3sarge4) ... Richte zlib1g-dev ein (1.2.2-4.sarge.2) ... Richte zlibc ein (0.9j-7) ... Richte comerr-dev ein (2.1-1.37-2sarge1) ... Richte libkrb5-dev ein (1.3.6-2sarge3) ... debian:~#
Asterisk kann erst nach mISDN installiert werden. mISDN lässt sich momentan ausschliesslich mit einen 2.6.x Kernel kompilieren, um diesen zu installieren suchen sie mit apt-cache search kernel-image-2.6.8 | grep kernel-image den zu ihrer Architektur passenden Kernel:
debian:~# apt-cache search kernel-image-2.6.8 | grep kernel-image kernel-image-2.6.8-3-386 - Linux kernel image for version 2.6.8 on 386. kernel-image-2.6.8-11-amd64-generic - Linux kernel image for version 2.6.8 on generic x86_64 systems kernel-image-2.6.8-11-amd64-k8 - Linux kernel image for version 2.6.8 on AMD64 systems kernel-image-2.6.8-11-amd64-k8-smp - Linux kernel image for version 2.6.8 on AMD64 SMP systems kernel-image-2.6.8-11-em64t-p4 - Linux kernel image for version 2.6.8 on Intel EM64T systems kernel-image-2.6.8-11-em64t-p4-smp - Linux kernel image for version 2.6.8 on Intel EM64T SMP systems kernel-image-2.6.8-12-amd64-generic - Linux kernel image for version 2.6.8 on generic x86_64 systems kernel-image-2.6.8-12-amd64-k8 - Linux kernel image for version 2.6.8 on AMD64 systems kernel-image-2.6.8-12-amd64-k8-smp - Linux kernel image for version 2.6.8 on AMD64 SMP systems kernel-image-2.6.8-12-em64t-p4 - Linux kernel image for version 2.6.8 on Intel EM64T systems kernel-image-2.6.8-12-em64t-p4-smp - Linux kernel image for version 2.6.8 on Intel EM64T SMP systems kernel-image-2.6.8-2-386 - Linux kernel image for version 2.6.8 on 386. kernel-image-2.6.8-2-686 - Linux kernel image for version 2.6.8 on PPro/Celeron/PII/PIII/P4. kernel-image-2.6.8-2-686-smp - Linux kernel image for version 2.6.8 on PPro/Celeron/PII/PIII/P4 SMP. kernel-image-2.6.8-2-k7 - Linux kernel image for version 2.6.8 on AMD K7. kernel-image-2.6.8-2-k7-smp - Linux kernel image for version 2.6.8 on AMD K7 SMP. kernel-image-2.6.8-3-686 - Linux kernel image for version 2.6.8 on PPro/Celeron/PII/PIII/P4. kernel-image-2.6.8-3-686-smp - Linux kernel image for version 2.6.8 on PPro/Celeron/PII/PIII/P4 SMP. kernel-image-2.6.8-3-k7 - Linux kernel image for version 2.6.8 on AMD K7. kernel-image-2.6.8-3-k7-smp - Linux kernel image for version 2.6.8 on AMD K7 SMP. debian:~#
In diesem Beispiel entscheiden wir uns für den Kernel kernel-image-2.6.8-3-686
und installieren diesen mit apt-get -y install kernel-image-2.6.8-3-686:
debian:~# apt-get -y install kernel-image-2.6.8-3-686 Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut... Fertig Vorgeschlagene Pakete: lilo kernel-doc-2.6.8 kernel-source-2.6.8 Die folgenden NEUEN Pakete werden installiert: kernel-image-2.6.8-3-686 0 aktualisiert, 1 neu installiert, 0 zu entfernen und 1 nicht aktualisiert. Es müssen 15,6MB Archive geholt werden. Nach dem Auspacken werden 45,2MB Plattenplatz zusätzlich benutzt. Hole:1 http://security.debian.org stable/updates/main kernel-image-2.6.8-3-686 2.6.8-16sarge6 [15,6MB] Es wurden 15,6MB in 1m7s geholt (232kB/s) Wähle vormals abgewähltes Paket kernel-image-2.6.8-3-686. (Lese Datenbank ... 25562 Dateien und Verzeichnisse sind derzeit installiert.) Entpacke kernel-image-2.6.8-3-686 (aus .../kernel-image-2.6.8-3-686_2.6.8-16sarge6_i386.deb) ... Richte kernel-image-2.6.8-3-686 ein (2.6.8-16sarge6) ... Searching for GRUB installation directory ... found: /boot/grub . Testing for an existing GRUB menu.list file... found: /boot/grub/menu.lst . Searching for splash image... none found, skipping... Found kernel: /boot/vmlinuz-2.6.8-3-686 Found kernel: /boot/vmlinuz-2.4.27-3-386 Updating /boot/grub/menu.lst ... done debian:~#
Danach booten wir den Rechner mit shutdown -r now und können nach dem Booten mit uname -a kontrollieren, ob mit dem richtigen Kernel gebootet wurde:
debian:~# uname -a Linux debian 2.6.8-3-686 #1 Tue Dec 5 21:26:38 UTC 2006 i686 GNU/Linux debian:~#
Zum kompilieren benötigen wir jetzt noch die zum Kernel passenden Header Dateien. Diese können mit apt-get -y install kernel-headers-`uname -r` nachinstalliert werden:
debian:~# apt-get -y install kernel-headers-`uname -r` Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut... Fertig Die folgenden zusätzlichen Pakete werden installiert: kernel-headers-2.6.8-3 kernel-kbuild-2.6-3 Die folgenden NEUEN Pakete werden installiert: kernel-headers-2.6.8-3 kernel-headers-2.6.8-3-686 kernel-kbuild-2.6-3 0 aktualisiert, 3 neu installiert, 0 zu entfernen und 1 nicht aktualisiert. Es müssen 3402kB Archive geholt werden. Nach dem Auspacken werden 42,6MB Plattenplatz zusätzlich benutzt. Hole:1 http://ftp.de.debian.org stable/main kernel-kbuild-2.6-3 2.6.8-2 [363kB] Hole:2 http://security.debian.org stable/updates/main kernel-headers-2.6.8-3 2.6.8-16sarge6 [2781kB] Hole:3 http://security.debian.org stable/updates/main kernel-headers-2.6.8-3-686 2.6.8-16sarge6 [258kB] Es wurden 3402kB in 18s geholt (188kB/s) Wähle vormals abgewähltes Paket kernel-kbuild-2.6-3. (Lese Datenbank ... 27265 Dateien und Verzeichnisse sind derzeit installiert.) Entpacke kernel-kbuild-2.6-3 (aus .../kernel-kbuild-2.6-3_2.6.8-2_i386.deb) ... Wähle vormals abgewähltes Paket kernel-headers-2.6.8-3. Entpacke kernel-headers-2.6.8-3 (aus .../kernel-headers-2.6.8-3_2.6.8-16sarge6_i386.deb) ... Wähle vormals abgewähltes Paket kernel-headers-2.6.8-3-686. Entpacke kernel-headers-2.6.8-3-686 (aus .../kernel-headers-2.6.8-3-686_2.6.8-16sarge6_i386.deb) ... Richte kernel-kbuild-2.6-3 ein (2.6.8-2) ... Richte kernel-headers-2.6.8-3 ein (2.6.8-16sarge6) ... Richte kernel-headers-2.6.8-3-686 ein (2.6.8-16sarge6) ... debian:~#
Auf der Asterisk-Homepage http://www.asterisk.org/ finden Sie die notwendigen Quellen, um Asterisk zu kompilieren. Nehmen Sie bitte eine stabile und keine Entwickler-Version und laden Sie diese mit wget http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz in das Verzeichnis /usr/src/
herunter:
debian:/usr/src/# cd /usr/src debian:/usr/src# wget http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz --18:30:46-- http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz => `asterisk-1.2-current.tar.gz' Auflösen des Hostnamen »ftp.digium.com«.... 69.16.138.164 Verbindungsaufbau zu ftp.digium.com[69.16.138.164]:80... verbunden. HTTP Anforderung gesendet, warte auf Antwort... 200 OK Länge: 10,584,113 [application/x-gzip] 100%[====================================>] 10,584,113 224.71K/s ETA 00:00 18:31:36 (207.67 KB/s) - »asterisk-1.2-current.tar.gz« gespeichert [10584113/10584113]
Als nächstes laden Sie mit wget http://ftp.digium.com/pub/zaptel/zaptel-1.2-current.tar.gz den dazugehörigen Zaptel Treiber:
debian:/usr/src# wget http://ftp.digium.com/pub/zaptel/zaptel-1.2-current.tar.gz --20:47:06-- http://ftp.digium.com/pub/zaptel/zaptel-1.2-current.tar.gz => `zaptel-1.2-current.tar.gz' Auflösen des Hostnamen »ftp.digium.com«.... 69.16.138.164 Verbindungsaufbau zu ftp.digium.com[69.16.138.164]:80... verbunden. HTTP Anforderung gesendet, warte auf Antwort... 200 OK Länge: 1,487,021 [application/x-gzip] 100%[=====================================>] 1,487,021 13.08K/s ETA 00:00 20:49:12 (12.25 KB/s) - »zaptel-1.2-current.tar.gz« gespeichert [1487021/1487021] debian:/usr/src#
Da der Zaptel Treiber immer vor dem Asterisk kompiliert werden muss, entpacken wir diesen mit tar xvzf zaptel-1.2-current.tar.gz, wechseln dann mit cd zaptel-1.2.12 in das Verzeichnis, kompilieren ihn mit make und installieren ihn mit make install:
debian:/usr/src# tar xvzf zaptel-1.2-current.tar.gz zaptel-1.2.12/ zaptel-1.2.12/build_tools/ zaptel-1.2.12/build_tools/genmodconf zaptel-1.2.12/build_tools/make_svn_branch_name zaptel-1.2.12/build_tools/genudevrules zaptel-1.2.12/build_tools/make_version_h zaptel-1.2.12/wct4xxp/ [...] zaptel-1.2.12/torisa.h zaptel-1.2.12/pattest.c zaptel-1.2.12/mg2ec_const.h zaptel-1.2.12/README.fxsusb zaptel-1.2.12/wctdm.c zaptel-1.2.12/fir.h debian:/usr/src# cd zaptel-1.2.12 debian:/usr/src/zaptel-1.2.12# make cc -I. -O4 -g -Wall -DBUILDING_TONEZONE -DSTANDALONE_ZAPATA -DZAPTEL_CONFIG=\"/etc/zaptel.conf\" -DHOTPLUG_FIRMWARE -c -o gendigits.o gendigits.c cc -o gendigits gendigits.o -lm ./gendigits > tones.h cc -I. -O4 -g -Wall -DBUILDING_TONEZONE -DSTANDALONE_ZAPATA -DZAPTEL_CONFIG=\"/etc/zaptel.conf\" -DHOTPLUG_FIRMWARE makefw.c -o makefw ./makefw tormenta2.rbt tor2fw > tor2fw.h Loaded 69900 bytes from file ./makefw pciradio.rbt radfw > radfw.h Loaded 42096 bytes from file ZAPTELVERSION="1.2.12" build_tools/make_version_h > version.h.tmp [...] LD [M] /usr/src/zaptel-1.2.12/ztd-loc.ko CC /usr/src/zaptel-1.2.12/ztdummy.mod.o LD [M] /usr/src/zaptel-1.2.12/ztdummy.ko CC /usr/src/zaptel-1.2.12/ztdynamic.mod.o LD [M] /usr/src/zaptel-1.2.12/ztdynamic.ko make[1]: Leaving directory `/usr/src/kernel-headers-2.6.8-3-686' cc -shared -Wl,-soname,libtonezone.so.1.0 -lm -o libtonezone.so zonedata.lo tonezone.lo debian:/usr/src/zaptel-1.2.12# make install ZAPTELVERSION="1.2.12" build_tools/make_version_h > version.h.tmp if cmp -s version.h.tmp version.h ; then echo; else \ mv version.h.tmp version.h ; \ fi rm -f version.h.tmp /lib/modules/2.6.8-3-686/build [...] [ -f /etc/zaptel.conf ] || install -D -m 644 zaptel.conf.sample /etc/zaptel.conf build_tools/genmodconf linux26 "" "tor2 torisa wcusb wcfxo wctdm wctdm24xxp ztdynamic ztd-eth wct1xxp wcte11xp pciradio ztd-loc ztdummy wct4xxp" Building /etc/modprobe.d/zaptel... *** *** WARNING: *** If you had custom settings in /etc/modprobe.d/zaptel, *** they have been moved to /etc/modprobe.d/zaptel.bak. *** *** In the future, do not edit /etc/modprobe.d/zaptel, but *** instead put your changes in another file *** in the same directory so that they will not *** be overwritten by future Zaptel updates. *** debian:/usr/src/zaptel-1.2.12#
Jetzt kann der Befehl make b410p aufgerufen werden und das Skript lädt selbstständig die notwendigen Dateien nach und baut die ISDN-Treiber für die Karte:
debian:/usr/src/zaptel-1.2.12# make b410p [ -f misdn-b410p.tar.gz ] || wget ftp://ftp.digium.com/pub/zaptel/b410p/misdn-b410p.tar.gz --12:27:54-- ftp://ftp.digium.com/pub/zaptel/b410p/misdn-b410p.tar.gz => `misdn-b410p.tar.gz' Auflösen des Hostnamen »ftp.digium.com«.... 216.27.40.102 Verbindungsaufbau zu ftp.digium.com[216.27.40.102]:21... verbunden. Anmelden als anonymous ... Angemeldet! ==> SYST ... fertig. ==> PWD ... fertig. ==> TYPE I ... fertig. ==> CWD /pub/zaptel/b410p ... fertig. ==> PASV ... fertig. ==> RETR misdn-b410p.tar.gz ... fertig. Länge: 572,153 (unmaßgeblich) 100%[====================================>] 572,153 183.53K/s ETA 00:00 12:27:59 (183.04 KB/s) - »misdn-b410p.tar.gz« gespeichert [572153] tar -zxf misdn-b410p.tar.gz make -C misdn install make[1]: Entering directory `/usr/src/zaptel-1.2.12/misdn' Makeing mISDN ============= cp /usr/src/zaptel-1.2.12/misdn/drivers/isdn/hardware/mISDN/Makefile.v2.6 /usr/src/zaptel-1.2.12/misdn/drivers/isdn/hardware/mISDN/Makefile [...] make[3]: Leaving directory `/usr/src/zaptel-1.2.12/mISDNuser/tenovis' make[3]: Entering directory `/usr/src/zaptel-1.2.12/mISDNuser/voip' for i in voipisdn ; do \ install -m 755 $i //usr/bin ;\ done make[3]: Leaving directory `/usr/src/zaptel-1.2.12/mISDNuser/voip' make[2]: Leaving directory `/usr/src/zaptel-1.2.12/mISDNuser' cp include/*.h //usr/include/mISDNuser/ make[1]: Leaving directory `/usr/src/zaptel-1.2.12/mISDNuser' debian:/usr/src/zaptel-1.2.12#
Jetzt wieder mit cd .. ins Verzeichnis /usr/src
wechseln und den Asterisk Tarball mit tar xvzf asterisk-1.2-current.tar.gz entpackt:
debian:/usr/src/zaptel-1.2.12# cd .. debian:/usr/src# tar xvzf asterisk-1.2-current.tar.gz asterisk-1.2.14/ asterisk-1.2.14/build_tools/ asterisk-1.2.14/build_tools/make_svn_branch_name asterisk-1.2.14/build_tools/mkdep asterisk-1.2.14/build_tools/make_build_h asterisk-1.2.14/build_tools/make_version_h asterisk-1.2.14/build_tools/make_defaults_h asterisk-1.2.14/aesopt.h asterisk-1.2.14/utils.c asterisk-1.2.14/keys/ [...] asterisk-1.2.14/cli.c asterisk-1.2.14/io.c asterisk-1.2.14/ulaw.c asterisk-1.2.14/logger.c debian:/usr/src#
Die entpackten Dateien müssen jetzt kompiliert werden. Dies geschieht mit dem Befehl make im gerade entpackten Verzeichnis.
Bitte achten Sie darauf, dass die hier in der Dokumentation benutzte Version 1.2.14 vielleicht zum Zeitpunkt Ihrer Installation nicht mehr aktuell ist. Entsprechend werden sich die Verzeichnisnamen ändern.
Übrigens ist dies jetzt ein guter Moment, sich einen Kaffee oder Tee zu kochen. Der Kompiliervorgang kann je nach Rechenleistung des PCs wenige Minuten oder bis zu einer Stunde dauern.
debian:/usr/src# cd asterisk-1.2.14 debian:/usr/src/asterisk-1.2.14# make if cmp -s .cleancount .lastclean ; then echo ; else \ make clean; cp -f .cleancount .lastclean;\ fi build_tools/make_version_h > include/asterisk/version.h.tmp if cmp -s include/asterisk/version.h.tmp include/asterisk/version.h ; then echo; else \ mv include/asterisk/version.h.tmp include/asterisk/version.h ; \ fi rm -f include/asterisk/version.h.tmp build_tools/mkdep -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g3 -Iinclude -I../include -D_REENTRANT -D_GNU_SOURCE -O6 -march=i686 -fomit-frame-pointer acl.c aescrypt.c aeskey.c aestab.c alaw.c app.c asterisk.c ast_expr2.c ast_expr2f.c astmm.c autoservice.c buildinfo.c callerid.c cdr.c channel.c chanvars.c cli.c config.c cryptostub.c db.c devicestate.c dlfcn.c dns.c dnsmgr.c dsp.c enum.c file.c frame.c fskmodem.c image.c indications.c io.c jitterbuf.c loader.c logger.c manager.c md5.c muted.c netsock.c pbx.c plc.c poll.c privacy.c rtp.c say.c sched.c slinfactory.c srv.c strcompat.c tdd.c [...] make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/usr/src/asterisk-1.2.14/stdtime' +--------- Asterisk Build Complete ---------+ + Asterisk has successfully been built, but + + cannot be run before being installed by + + running: + + + + make install + +-------------------------------------------+
Die Software ist jetzt kompiliert und muss nur noch mit make install installiert (sprich an die vorgesehenen Stellen im Dateisystem kopiert) werden:
debian:/usr/src/asterisk-1.2.14# make install build_tools/make_version_h > include/asterisk/version.h.tmp if cmp -s include/asterisk/version.h.tmp include/asterisk/version.h ; then echo; [...] +---- 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 + +-------------------------------------------+ debian:/usr/src/asterisk-1.2.14#
Geschafft! Die soeben kompilierten Programmdateien sind jetzt auf dem System installiert. Allerdings finden wir im Asterisk-Konfigurationsverzeichnis /etc/asterisk/
noch gähnende Leere vor. In diesem Verzeichnis liegen die Konfigurationsdateien von Asterisk und da wir nicht von Null beginnen möchten, lassen wir uns die Standarddateien erstellen. Dies erreichen wir mit make samples:
debian:/usr/src/asterisk-1.2.14# make samples build_tools/make_version_h > include/asterisk/version.h.tmp if cmp -s include/asterisk/version.h.tmp include/asterisk/version.h ; then echo; [...] done debian:/usr/src/asterisk-1.2.14#
Fertig! Asterisk ist auf Ihrem System installiert. Mit dem Befehl asterisk -V können Sie die installierte Version herausfinden (bitte achten Sie auf das großgeschriebene V):
debian:/usr/src/asterisk-1.2.14# asterisk -V Asterisk 1.2.14 debian:/usr/src/asterisk-1.2.14#
Mit dem Skript /etc/init.d/misdn-init
können Sie jetzt Ihre ISDN-Karte konfigurieren. Als erstes überprüfen wir aber mit /etc/init.d/misdn-init scan, ob die Karte auch erkannt wird:
debian:/usr/src/asterisk-1.2.14# /etc/init.d/misdn-init scan [OK] found the following devices: card=1,0x4 [ii] run "/etc/init.d/misdn-init config" to store this information to /etc/misdn-init.conf debian:/usr/src/asterisk-1.2.14#
Das sieht sehr gut aus und führt zum nächsten Schritt: Der Konfiguration mit /etc/init.d/misdn-init config
debian:/usr/src/asterisk-1.2.14# /etc/init.d/misdn-init config [OK] /etc/misdn-init.conf created. It's now safe to run "/etc/init.d/misdn-init start" [ii] make your ports (1-4) available in asterisk by editing "/etc/asterisk/misdn.conf" debian:/usr/src/asterisk-1.2.14#
Die Konfigurationsdatei /etc/misdn-init.conf
wurde geschrieben und wir können mit dieser Standardkonfiguration schon mal loslegen und /etc/init.d/misdn-init start ausführen:
debian:/usr/src/asterisk-1.2.14# /etc/init.d/misdn-init start ----------------------------------------- Loading module(s) for your misdn-cards: ----------------------------------------- modprobe --ignore-install hfcmulti type=0x4 protocol=0x12,0x12,0x12,0x12 layermask=0x3,0x3,0x3,0x3 poll=128 debug=0xf [i] creating device node: /dev/mISDN debian:/usr/src/asterisk-1.2.14#
Um auch ganz sicher zu gehen, kann man noch mit lsmod | grep hfcmulti überprüfen, ob das Modul sauber geladen wurde und mit dmesg | grep Digium ob die Karte vom Modul gefunden wurde:
debian:/usr/src/asterisk-1.2.14# lsmod | grep hfcmulti hfcmulti 76360 0 mISDN_core 85216 6 mISDN_dsp,hfcmulti,mISDN_capi,l3udss1,mISDN_l2,mISDN_l1 debian:/usr/src/asterisk-1.2.14# dmesg | grep Digium HFC-multi: card manufacturer: 'Cologne Chip AG' card name: 'HFC-4S Digium Card' clock: normal debian:/usr/src/asterisk-1.2.14#
Die Konfigurationsdateien /etc/misdn-init.conf
und /etc/asterisk/misdn.conf
sind sehr gut dokumentiert. Für den ersten Test sollten Sie nur sicher stellen, das in der /etc/misdn-init.conf
der Eintrag Port settings für Ihre Bedürfnisse passend ist. Per Default steht da nt_ptmp=1,2,3,4
und das bedeutet, das auf allen vier Ports Point-to-Multi-Point signalisiert wird. Bitte nach einer Anpassung dieser Datei das /etc/init.d/misdn-init restart nicht vergessen.
Starten Sie Asterisk mit asterisk -vvvvvvc und verbinden Sie den ersten Port der Karte mit Ihrem ISDN-Anschluss. Wenn Sie jetzt auf diesem Anschluss von extern (z.B. vom Handy aus) anrufen, werden Sie im CLI eine Fehlermeldung sehen (da Sie ja noch keine entsprechende Extension im Dialplan haben). Falls der hier aufgeführte Context [Intern]
heisst, können Sie mit der folgendem folgenden Abschnitt im Dialplan alle Gespräche an Ihr SIP Telefone mit der Nummer 2000 weiterleiten:
[Intern] exten => _.,1,Dial(SIP/2000)
Wenn Sie möchten das für alle Telefone im Context [verkauf]
die Möglichkeit besteht über eine führende 0 (Null) eine Amtsleitung auf dem ersten Port Ihrer Karte zum ISDN-Netz zu bekommen, dann können Sie das mit den folgenden Zeilen in Ihrer extensions.conf
einstellen:
[verkauf] exten => _00.,1,Dial(misdn/1/${EXTEN:1})
Wenn Sie nicht über einen bestimmten Port, sondern über einen freien Port in einer bestimmten Gruppe telefonieren wollen, so können Sie das über das g:gruppenname
Konstrukt machen. In der Standardkonfiguration ist eine Gruppe intern für die Ports 1 und 2 definiert (siehe [intern]
in der /etc/asterisk/misdn.conf
. Über diese Gruppe kann wie folgt raustelefoniert werden (gleiches Beispiel wie oben):
[verkauf] exten => _00.,1,Dial(misdn/g:intern/${EXTEN:1})
Die Digium B410P ISDN-Karte hat eine eingebaut Echo-Cancellation-Funktion die in der Kartenhardware abgebildet ist und somit Rechenlast von der CPU nimmt. Sie kann mit dem misdn.conf
Parameter echocancel=yes
aktiviert werden.
Auf der Homepage http://www.misdn.org befinden sich einige Informationen zu den aktuellen Versionen von mISDN. Weiterhin gibt es ein deutsches Forum zu mISDN auf http://www.ip-phone-forum.de/forumdisplay.php?f=521 . Schliesslich gibt es auf dem Voip-Info-Wiki hilfreiche Infos http://www.voip-info.org/wiki/view/chan_mISDN . Und am Ende können Sie natürlich auch noch beim technischen Support von Digium anrufen (siehe http://www.digium.com).
Diese allgemeine Installationsanleitung bezieht sich allgemein auf alle ISDN-Karten, die vom mISDN-Projekt unterstützt werden.
Diese Installationsanleitung setzt ein frisch installiertes Debian GNU/Linux 3.1 (a.k.a sarge) voraus. Ein ISO-Image für eine entsprechende i386er Debian Linux-Installation befindet sich unter http://cdimage.debian.org/debian-cd/3.1_r4/i386/iso-cd/debian-31r4-i386-netinst.iso. Eine Debian GNU/Linux-Installationsanleitung steht unter http://www.debian.org/releases/stable/i386/ und ein allgemeines Anwenderhandbuch unter http://debiananwenderhandbuch.de.
Nach erfolgreicher Installation des Debian Linux-Systems melden Sie sich als Benutzer root in das System an und führen Sie die hier nachfolgend angegebenen Befehle aus. Bitte achten Sie darauf, keinen Schritt auszulassen und die Schritte als Benutzer root durchzuführen.
Als erstes stellen Sie mit einem apt-get update sicher, dass apt-get
alle aktuellen Paketlisten zur Verfügung hat:
debian:~# apt-get update OK http://ftp.de.debian.org stable/main Packages OK http://ftp.de.debian.org stable/main Release OK http://security.debian.org stable/updates/main Packages OK http://security.debian.org stable/updates/main Release OK http://security.debian.org stable/updates/contrib Packages OK http://security.debian.org stable/updates/contrib Release OK http://ftp.de.debian.org stable/main Sources OK http://ftp.de.debian.org stable/main Release Paketlisten werden gelesen... Fertig debian:~#
Um sicherzugehen, dass alle Pakete auf dem neuesten Stand sind, führen Sie zur Sicherheit noch ein apt-get -y upgrade aus:
debian:~# apt-get -y upgrade Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut... Fertig 0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Jetzt müssen Sie mit apt-get -y install openssl zlibc libkrb5-dev libncurses5-dev libssl-dev zlib1g-dev noch ein paar Pakete nachinstallieren, damit das spätere Kompilieren von Asterisk erfolgreich durchgeführt werden kann:
debian:~# apt-get -y install openssl zlibc libkrb5-dev libncurses5-dev libssl-dev zlib1g-dev Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut... Fertig Die folgenden zusätzlichen Pakete werden installiert: comerr-dev libkadm55 Vorgeschlagene Pakete: doc-base krb5-doc ca-certificates Die folgenden NEUEN Pakete werden installiert: comerr-dev libkadm55 libkrb5-dev libncurses5-dev libssl-dev openssl zlib1g-dev zlibc 0 aktualisiert, 8 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen 6025kB Archive geholt werden. Nach dem Auspacken werden 18,8MB Plattenplatz zusätzlich benutzt. Hole:1 http://ftp.de.debian.org stable/main libkadm55 1.3.6-2sarge3 [165kB] Hole:2 http://ftp.de.debian.org stable/main libncurses5-dev 5.4-4 [1038kB] Hole:3 http://ftp.de.debian.org stable/main libssl-dev 0.9.7e-3sarge4 [2555kB] Hole:4 http://ftp.de.debian.org stable/main openssl 0.9.7e-3sarge4 [906kB] Hole:5 http://ftp.de.debian.org stable/main zlib1g-dev 1:1.2.2-4.sarge.2 [488kB] Hole:6 http://ftp.de.debian.org stable/main zlibc 0.9j-7 [245kB] Hole:7 http://ftp.de.debian.org stable/main comerr-dev 2.1-1.37-2sarge1 [53,0kB] Hole:8 http://ftp.de.debian.org stable/main libkrb5-dev 1.3.6-2sarge3 [574kB] Es wurden 6025kB in 57s geholt (104kB/s) Wähle vormals abgewähltes Paket libkadm55. (Lese Datenbank ... 32512 Dateien und Verzeichnisse sind derzeit installiert.) Entpacke libkadm55 (aus .../libkadm55_1.3.6-2sarge3_i386.deb) ... Wähle vormals abgewähltes Paket libncurses5-dev. Entpacke libncurses5-dev (aus .../libncurses5-dev_5.4-4_i386.deb) ... Wähle vormals abgewähltes Paket libssl-dev. Entpacke libssl-dev (aus .../libssl-dev_0.9.7e-3sarge4_i386.deb) ... Wähle vormals abgewähltes Paket openssl. Entpacke openssl (aus .../openssl_0.9.7e-3sarge4_i386.deb) ... Creating directory /etc/ssl Wähle vormals abgewähltes Paket zlib1g-dev. Entpacke zlib1g-dev (aus .../zlib1g-dev_1%3a1.2.2-4.sarge.2_i386.deb) ... Wähle vormals abgewähltes Paket zlibc. Entpacke zlibc (aus .../archives/zlibc_0.9j-7_i386.deb) ... Wähle vormals abgewähltes Paket comerr-dev. Entpacke comerr-dev (aus .../comerr-dev_2.1-1.37-2sarge1_i386.deb) ... Wähle vormals abgewähltes Paket libkrb5-dev. Entpacke libkrb5-dev (aus .../libkrb5-dev_1.3.6-2sarge3_i386.deb) ... Richte libkadm55 ein (1.3.6-2sarge3) ... Richte libncurses5-dev ein (5.4-4) ... Richte libssl-dev ein (0.9.7e-3sarge4) ... Richte openssl ein (0.9.7e-3sarge4) ... Richte zlib1g-dev ein (1.2.2-4.sarge.2) ... Richte zlibc ein (0.9j-7) ... Richte comerr-dev ein (2.1-1.37-2sarge1) ... Richte libkrb5-dev ein (1.3.6-2sarge3) ... debian:~#
Asterisk wird aber erst nach mISDN installiert werden. mISDN lässt sich momentan ausschliesslich mit einen 2.6.x Kernel kompilieren, um diesen zu installieren suchen sie mit apt-cache search kernel-image-2.6.8 | grep kernel-image den zu ihrer Architektur passenden Kernel:
debian:~# apt-cache search kernel-image-2.6.8 | grep kernel-image kernel-image-2.6.8-3-386 - Linux kernel image for version 2.6.8 on 386. kernel-image-2.6.8-11-amd64-generic - Linux kernel image for version 2.6.8 on generic x86_64 systems kernel-image-2.6.8-11-amd64-k8 - Linux kernel image for version 2.6.8 on AMD64 systems kernel-image-2.6.8-11-amd64-k8-smp - Linux kernel image for version 2.6.8 on AMD64 SMP systems kernel-image-2.6.8-11-em64t-p4 - Linux kernel image for version 2.6.8 on Intel EM64T systems kernel-image-2.6.8-11-em64t-p4-smp - Linux kernel image for version 2.6.8 on Intel EM64T SMP systems kernel-image-2.6.8-12-amd64-generic - Linux kernel image for version 2.6.8 on generic x86_64 systems kernel-image-2.6.8-12-amd64-k8 - Linux kernel image for version 2.6.8 on AMD64 systems kernel-image-2.6.8-12-amd64-k8-smp - Linux kernel image for version 2.6.8 on AMD64 SMP systems kernel-image-2.6.8-12-em64t-p4 - Linux kernel image for version 2.6.8 on Intel EM64T systems kernel-image-2.6.8-12-em64t-p4-smp - Linux kernel image for version 2.6.8 on Intel EM64T SMP systems kernel-image-2.6.8-2-386 - Linux kernel image for version 2.6.8 on 386. kernel-image-2.6.8-2-686 - Linux kernel image for version 2.6.8 on PPro/Celeron/PII/PIII/P4. kernel-image-2.6.8-2-686-smp - Linux kernel image for version 2.6.8 on PPro/Celeron/PII/PIII/P4 SMP. kernel-image-2.6.8-2-k7 - Linux kernel image for version 2.6.8 on AMD K7. kernel-image-2.6.8-2-k7-smp - Linux kernel image for version 2.6.8 on AMD K7 SMP. kernel-image-2.6.8-3-686 - Linux kernel image for version 2.6.8 on PPro/Celeron/PII/PIII/P4. kernel-image-2.6.8-3-686-smp - Linux kernel image for version 2.6.8 on PPro/Celeron/PII/PIII/P4 SMP. kernel-image-2.6.8-3-k7 - Linux kernel image for version 2.6.8 on AMD K7. kernel-image-2.6.8-3-k7-smp - Linux kernel image for version 2.6.8 on AMD K7 SMP. debian:~#
In diesem Beispiel entscheiden wir uns für den Kernel kernel-image-2.6.8-2-686
und installieren diesen mit apt-get -y install kernel-image-2.6.8-2-686:
debian:~# apt-get -y install kernel-image-2.6.8-2-686 Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut... Fertig Vorgeschlagene Pakete: lilo kernel-doc-2.6.8 kernel-source-2.6.8 Die folgenden NEUEN Pakete werden installiert: kernel-image-2.6.8-2-686 0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen 15,5MB Archive geholt werden. Nach dem Auspacken werden 45,2MB Plattenplatz zusätzlich benutzt. Hole:1 http://ftp.de.debian.org stable/main kernel-image-2.6.8-2-686 2.6.8-16sarge1 [15,5MB] Es wurden 15,5MB in 41s geholt (375kB/s) Wähle vormals abgewähltes Paket kernel-image-2.6.8-2-686. (Lese Datenbank ... 21874 Dateien und Verzeichnisse sind derzeit installiert.) Entpacke kernel-image-2.6.8-2-686 (aus .../kernel-image-2.6.8-2-686_2.6.8-16sarge1_i386.deb) ... Richte kernel-image-2.6.8-2-686 ein (2.6.8-16sarge1) ... Searching for GRUB installation directory ... found: /boot/grub . Testing for an existing GRUB menu.list file... found: /boot/grub/menu.lst . Searching for splash image... none found, skipping... Found kernel: /boot/vmlinuz-2.6.8-2-686 Found kernel: /boot/vmlinuz-2.4.27-3-386 Updating /boot/grub/menu.lst ... done debian:~#
Danach booten wir den Rechner mit shutdown -r now und können nach dem Booten mit uname -a kontrollieren, ob mit dem richtigen Kernel gebootet wurde:
debian:~# uname -a Linux debian 2.6.8-2-686 #1 Tue Aug 16 13:22:48 UTC 2005 i686 GNU/Linux debian:~#
Zum Kompilieren benötigen wir jetzt noch die zum Kernel passenden Header-Dateien. Diese können mit apt-get -y install kernel-headers-`uname -r` nachinstalliert werden:
debian:~# apt-get -y install kernel-headers-`uname -r` Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut... Fertig Die folgenden zusätzlichen Pakete werden installiert: kernel-headers-2.6.8-2 kernel-kbuild-2.6-3 Die folgenden NEUEN Pakete werden installiert: kernel-headers-2.6.8-2 kernel-headers-2.6.8-2-686 kernel-kbuild-2.6-3 0 aktualisiert, 3 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen 3395kB Archive geholt werden. Nach dem Auspacken werden 42,6MB Plattenplatz zusätzlich benutzt. Hole:1 http://ftp.de.debian.org stable/main kernel-kbuild-2.6-3 2.6.8-2 [363kB] Hole:2 http://ftp.de.debian.org stable/main kernel-headers-2.6.8-2 2.6.8-16sarge1 [2777kB] Hole:3 http://ftp.de.debian.org stable/main kernel-headers-2.6.8-2-686 2.6.8-16sarge1 [255kB] Es wurden 3395kB in 35s geholt (96,4kB/s) Wähle vormals abgewähltes Paket kernel-kbuild-2.6-3. (Lese Datenbank ... 23577 Dateien und Verzeichnisse sind derzeit installiert.) Entpacke kernel-kbuild-2.6-3 (aus .../kernel-kbuild-2.6-3_2.6.8-2_i386.deb) ... Wähle vormals abgewähltes Paket kernel-headers-2.6.8-2. Entpacke kernel-headers-2.6.8-2 (aus .../kernel-headers-2.6.8-2_2.6.8-16sarge1_i386.deb) ... Wähle vormals abgewähltes Paket kernel-headers-2.6.8-2-686. Entpacke kernel-headers-2.6.8-2-686 (aus .../kernel-headers-2.6.8-2-686_2.6.8-16sarge1_i386.deb) ... Richte kernel-kbuild-2.6-3 ein (2.6.8-2) ... Richte kernel-headers-2.6.8-2 ein (2.6.8-16sarge1) ... Richte kernel-headers-2.6.8-2-686 ein (2.6.8-16sarge1) ... debian:~#
Nun kann mit der eigentlichen Installation von mISDN begonnen werden.
Wechseln Sie mit cd /usr/src in das Verzeichnis /usr/src
und downloaden Sie mit wget http://www.misdn.org/downloads/mISDN.tar.gz und wget http://www.misdn.org/downloads/mISDNuser.tar.gz die mISDN und mISDNuser Quellen:
debian:~# cd /usr/src debian:/usr/src# wget http://www.misdn.org/downloads/mISDN.tar.gz --17:27:13-- http://www.misdn.org/downloads/mISDN.tar.gz => `mISDN.tar.gz' Auflösen des Hostnamen »www.misdn.org«.... 80.244.243.34 Verbindungsaufbau zu www.misdn.org[80.244.243.34]:80... verbunden. HTTP Anforderung gesendet, warte auf Antwort... 200 OK Länge: 762,995 [application/x-tar] 100%[====================================>] 762,995 86.55K/s ETA 00:00 17:27:21 (101.81 KB/s) - »mISDN.tar.gz« gespeichert [762995/762995] debian:/usr/src# wget http://www.misdn.org/downloads/mISDNuser.tar.gz --17:27:55-- http://www.misdn.org/downloads/mISDNuser.tar.gz => `mISDNuser.tar.gz' Auflösen des Hostnamen »www.misdn.org«.... 80.244.243.34 Verbindungsaufbau zu www.misdn.org[80.244.243.34]:80... verbunden. HTTP Anforderung gesendet, warte auf Antwort... 200 OK Länge: 549,899 [application/x-tar] 100%[====================================>] 549,899 101.91K/s ETA 00:00 17:28:01 (99.57 KB/s) - »mISDNuser.tar.gz« gespeichert [549899/549899] debian:/usr/src#
Jetzt die Pakete mit tar xvzf mISDN.tar.gz und tar xvzf mISDNuser.tar.gz entpacken:
debian:/usr/src# tar xvzf mISDN.tar.gz mISDN-1_0_4/ mISDN-1_0_4/add.config mISDN-1_0_4/CVS/ mISDN-1_0_4/CVS/Root mISDN-1_0_4/CVS/Repository mISDN-1_0_4/CVS/Entries mISDN-1_0_4/drivers/ mISDN-1_0_4/drivers/CVS/ mISDN-1_0_4/drivers/CVS/Root mISDN-1_0_4/drivers/CVS/Repository mISDN-1_0_4/drivers/CVS/Entries [...] mISDN-1_0_4/km_mISDN.spec mISDN-1_0_4/Makefile mISDN-1_0_4/Makefile.module mISDN-1_0_4/Makefile.standalone mISDN-1_0_4/misdn-init mISDN-1_0_4/mISDN.modprobe.d mISDN-1_0_4/README.misdn-init mISDN-1_0_4/Rules.make.ext mISDN-1_0_4/std2kern mISDN-1_0_4/stddiff mISDN-1_0_4/VERSION debian:/usr/src# tar xvzf mISDNuser.tar.gz mISDNuser-1_0_3/ mISDNuser-1_0_3/COPYING.LIB mISDNuser-1_0_3/CVS/ mISDNuser-1_0_3/CVS/Root mISDNuser-1_0_3/CVS/Repository mISDNuser-1_0_3/CVS/Entries mISDNuser-1_0_3/example/ mISDNuser-1_0_3/example/CVS/ [...] mISDNuser-1_0_3/voip/example/rec_ctrl.sample mISDNuser-1_0_3/voip/voip_isdn.ce mISDNuser-1_0_3/voip/voip_isdn.c mISDNuser-1_0_3/voip/voip_appl.ce mISDNuser-1_0_3/voip/voip_appl.c mISDNuser-1_0_3/voip/voip_isdn_app.ce mISDNuser-1_0_3/voip/voip_isdn_app.c debian:/usr/src#
Nach einem cd mISDN-1_0_4 kann mit make install das entsprechende Paket kompiliert werden:
debian:/usr/src# cd mISDN-1_0_4 debian:/usr/src/mISDN-1_0_4# make install Making mISDN ============= cp /usr/src/mISDN-1_0_4/drivers/isdn/hardware/mISDN/Makefile.v2.6 /usr/src/mISDN-1_0_4/drivers/isdn/hardware/mISDN/Makefile export MINCLUDES=/usr/src/mISDN-1_0_4/include ; make -C /lib/modules/2.6.8-2-686/build SUBDIRS=/usr/src/mISDN-1_0_4/drivers/isdn/hardware/mISDN modules CONFIG_MISDN_DRV=m CONFIG_MISDN_DSP=m CONFIG_MISDN_HFCMULTI=m CONFIG_MISDN_HFCPCI=m CONFIG_MISDN_HFCUSB=m CONFIG_MISDN_XHFC=m CONFIG_MISDN_HFCMINI=m CONFIG_MISDN_W6692=m CONFIG_MISDN_SPEEDFAX=m CONFIG_MISDN_AVM_FRITZ=m CONFIG_MISDN_NETJET=m make[1]: Entering directory `/usr/src/kernel-headers-2.6.8-2-686' CC [M] /usr/src/mISDN-1_0_4/drivers/isdn/hardware/mISDN/avm_fritz.o CC [M] /usr/src/mISDN-1_0_4/drivers/isdn/hardware/mISDN/hfc_multi.o [...] mkdir -p //etc/modprobe.d cp mISDN.modprobe.d //etc/modprobe.d/mISDN mkdir -p //etc/modules.d cp mISDN.modprobe.d //etc/modules.d/mISDN /sbin/depmod /sbin/update-modules debian:/usr/src/mISDN-1_0_4#
Dann mit cd ../mISDNuser-1_0_3 in das mISDNuser-Verzeichnis wechseln und dort wieder mit make install kompilieren:
debian:/usr/src/mISDN-1_0_4# cd ../mISDNuser-1_0_3 debian:/usr/src/mISDNuser-1_0_3# make install mkdir -p //usr/bin/ mkdir -p //usr/include/mISDNuser/ mkdir -p ///usr/lib make TARGET=all subdirs make[1]: Entering directory `/usr/src/mISDNuser-1_0_3' set -e; for i in lib example i4lnet tenovis voip suppserv ; do make -C $i all; done make[2]: Entering directory `/usr/src/mISDNuser-1_0_3/lib' [...] make[2]: Leaving directory `/usr/src/mISDNuser-1_0_3/tenovis' make[2]: Entering directory `/usr/src/mISDNuser-1_0_3/voip' for i in voipisdn ; do \ install -m 755 $i //usr/bin ;\ done make[2]: Leaving directory `/usr/src/mISDNuser-1_0_3/voip' make[2]: Entering directory `/usr/src/mISDNuser-1_0_3/suppserv' install -m 644 libsuppserv.a //usr/lib install -m 644 libsuppserv_pic.a //usr/lib install -m 644 libsuppserv.so //usr/lib cp *.h //usr/include/mISDNuser/ make[2]: Leaving directory `/usr/src/mISDNuser-1_0_3/suppserv' make[1]: Leaving directory `/usr/src/mISDNuser-1_0_3' cp include/*.h //usr/include/mISDNuser/ debian:/usr/src/mISDNuser-1_0_3#
Auf der Asterisk-Homepage http://www.asterisk.org/ finden Sie die notwendigen Quellen, um Asterisk zu kompilieren. Nehmen Sie bitte eine stabile und keine Entwickler-Version und laden Sie diese mit wget http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz in das Verzeichnis /usr/src/
herunter:
debian:/usr/src/mISDNuser-1_0_3# cd /usr/src debian:/usr/src# wget http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz --18:30:46-- http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz => `asterisk-1.2-current.tar.gz' Auflösen des Hostnamen »ftp.digium.com«.... 69.16.138.164 Verbindungsaufbau zu ftp.digium.com[69.16.138.164]:80... verbunden. HTTP Anforderung gesendet, warte auf Antwort... 200 OK Länge: 10,584,113 [application/x-gzip] 100%[====================================>] 10,584,113 224.71K/s ETA 00:00 18:31:36 (207.67 KB/s) - »asterisk-1.2-current.tar.gz« gespeichert [10584113/10584113]
Die komprimierte Datei muss jetzt mit tar xvzf asterisk-1.2-current.tar.gz entpackt werden:
debian:/usr/src# tar xvzf asterisk-1.2-current.tar.gz asterisk-1.2.13/ asterisk-1.2.13/build_tools/ asterisk-1.2.13/build_tools/make_svn_branch_name asterisk-1.2.13/build_tools/mkdep asterisk-1.2.13/build_tools/make_build_h asterisk-1.2.13/build_tools/make_version_h asterisk-1.2.13/build_tools/make_defaults_h asterisk-1.2.13/aesopt.h asterisk-1.2.13/utils.c asterisk-1.2.13/keys/ [...] asterisk-1.2.13/cli.c asterisk-1.2.13/io.c asterisk-1.2.13/ulaw.c asterisk-1.2.13/logger.c debian:/usr/src#
Die entpackten Dateien müssen jetzt kompiliert werden. Dies geschieht mit dem Befehl make im gerade entpackten Verzeichnis.
Bitte achten Sie darauf, dass die hier in der Dokumentation benutzte Version 1.2.13 vielleicht zum Zeitpunkt Ihrer Installation nicht mehr aktuell ist. Entsprechend werden sich die Verzeichnisnamen ändern.
Übrigens ist dies jetzt ein guter Moment, sich einen Kaffee oder Tee zu kochen. Der Kompiliervorgang kann je nach Rechenleistung des PCs wenige Minuten oder bis zu einer Stunde dauern.
debian:/usr/src# cd asterisk-1.2.13 debian:/usr/src/asterisk-1.2.13# make if cmp -s .cleancount .lastclean ; then echo ; else \ make clean; cp -f .cleancount .lastclean;\ [...] make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/usr/src/asterisk-1.2.13/stdtime' +--------- Asterisk Build Complete ---------+ + Asterisk has successfully been built, but + + cannot be run before being installed by + + running: + + + + make install + +-------------------------------------------+
Die Software ist jetzt kompiliert und muss nur noch mit make install installiert (sprich an die vorgesehenen Stellen im Dateisystem kopiert) werden:
debian:/usr/src/asterisk-1.2.13# make install build_tools/make_version_h > include/asterisk/version.h.tmp if cmp -s include/asterisk/version.h.tmp include/asterisk/version.h ; then echo; [...] +---- 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 + +-------------------------------------------+
Geschafft! Die soeben kompilierten Programmdateien sind jetzt auf dem System installiert. Allerdings finden wir im Asterisk-Konfigurationsverzeichnis /etc/asterisk/
noch gähnende Leere vor. In diesem Verzeichnis liegen die Konfigurationsdateien von Asterisk und da wir nicht von Null beginnen möchten, lassen wir uns die Standarddateien erstellen. Dies erreichen wir mit make samples:
debian:/usr/src/asterisk-1.2.13# make samples build_tools/make_version_h > include/asterisk/version.h.tmp if cmp -s include/asterisk/version.h.tmp include/asterisk/version.h ; then echo; [...] done
Fertig! Asterisk ist auf Ihrem System installiert. Mit dem Befehl asterisk -V können Sie die installierte Version herausfinden (bitte achten Sie auf das großgeschriebene V):
debian:/usr/src/asterisk-1.2.13# asterisk -V Asterisk 1.2.13
Zunächst sollten sie sich mit dem Skript "misdn-init" vertraut machen. Dieses scant ihr System nach installierter Hardware, erstellt automatisch eine Standardkonfiguration und lädt die Kernel Module. Führen sie einfach misdn-init aus um die möglichen Parameter zu erhalten.
Um zu sehen welche mISDN-kompatiblen Karten im System installiert sind führen sie misdn-init scan aus.
Die Konfiguration der Kernel Module erfolgt über die Datei /etc/misdn-init.conf
. Um diese initial zu erzeugen führen sie einfach das Kommando: misdn-init config aus. Nun editieren sie die Datei mit ihrem Lieblingseditor. Angenommen sie haben eine BN4S0 Karte der Firma beroNet im System und sie wollen den Port 1 am Anlagenanschluss, den Port 2 am Mehrgeräteanschluss betreiben. Am Port 3 soll eine TK-Anlage betrieben werden und an Port 4 ein ISDN Telefon. Entsprechend muss die /etc/misdn-init.conf
wie folgt aussehen:
#Die Kartendefinition für die 4S0 Karte card=1,0x4 #der Anlagenanschluss: te_ptp=1 #der Mehrgeräteanschluss: te_ptmp=2 #die beiden NT Anschlüsse, Port 3 ist Punkt zu Punkt wegen der Anlage und Port 4 Mehrgeräte wegen dem ISDN Telefon nt_ptp=3 nt_ptmp=4 #wir beziehen die Synchronisation vom AMT am Anlagenanschluss. option=1,master_clock
Modifizieren sie diese Datei entsprechend ihrem Setup.
Die Kernelmodule werden nun mit misdn-init start gestartet.
Das mISDNuser Paket enthält ein nützliches Tool mit dem sie feststellen können ob die Module korrekt geladen worden sind. Führen sie misdnportinfo aus um die momentante Portkonfiguration zu erfahren. Die Ausgabe sieht etwa so aus:
Port 1: TE-mode BRI S/T interface line (for phone lines) -> Interface is Poin-To-Point. -> Protocol: DSS1 (Euro ISDN) -> childcnt: 2 -------- Port 2: TE-mode BRI S/T interface line (for phone lines) -> Protocol: DSS1 (Euro ISDN) -> childcnt: 2 -------- Port 3: NT-mode BRI S/T interface port (for phones) -> Interface can be Poin-To-Point/Multipoint. -------- Port 4: NT-mode BRI S/T interface port (for phones) -> Interface can be Poin-To-Point/Multipoint. -------- mISDN_close: fid(3) isize(131072) inbuf(0x804c060) irp(0x804c060) iend(0x804c060)
Nun sind die Kernelmodule geladen und konfiguriert.
Wie alle Asterisk-Konfigurationsdateien befindet sich auch die misdn.conf
im Verzeichnis /etc/asterisk/misdn.conf
. Hier definiert man, welche Ports in welchen Gruppen sind und welche Parameter für diese Gruppen gelten. Die misdn.conf
ist in 3 Sektionstypen gegliedert die durch eckige Klammern gekennzeichnet sind. Dies sind die Abschnitte [general]
, [default]
und die Gruppen-Sektionen die der User frei benennen kann. Die [general]
-Sektion beinhaltet Konfigurationselemente die unabhängig von den Port-Gruppen sind, wie etwa das debuglevel oder ob das Hardware-Bridging generell genutzt werden soll. Die [default]
-Sektion enthält alle Parameter die auch eine Portgruppe enthalten kann. Falls ein Parameter in der Portgruppe fehlt wird der entsprechende aus der default Sektion genommen. Die Portgruppen selbst dienen einerseits dazu dieselben Parameter für mehrere Ports zu konfigurieren, andererseits kann der Name der Portgruppe zum Wählen benutzt werden. Eine einfache misdn.conf
für das oben angeführte Beispiel sieht wie folgt aus:
[general] bridging=yes [default] echocancel=256 txgain=-1 [AnlagenAnschluss] ports=1 context=isdn_in msns=* [MehrgeräteAnschluss] ports=2 context=isdn_in msns=* [Anlage] ports=3 context=anlage msns=* [Telefon] ports=4 context=telefon msns=*
Mit dieser misdn.conf
können sie in der extensions.conf
die folgende Zeile benutzen um beispielsweise ein Gespräch auf den Anlagen-Anschluss zu routen:
exten => _0X.,1,Dial(mISDN/g:AnlagenAnschluss/${EXTEN:1})
Beachten sie wie der Sektionsname AnlagenAnschluss
beim Wählen benutzt wird. Bei diesem Beispiel wird mit einer führenden 0 (_0X.
) rausgewählt, die durch ${EXTEN:1}
wieder abgeschnitten wird.
Eine Gruppe macht natürlich erst richtig mit mehrern Ports Sinn. Wir könnten das obige Beispiel auch so abändern, dass der Anlagen- und Mehrgeräteanschluss in der selben Gruppe sind:
[Amt] ports=1,2 context=vomAmt msns=*
Gespräche die nun von diesen beiden Ports hereinkommen werden in der extensions.conf
in den Kontext vomAmt
geleitet. Hingegen können sie beim Dial die Gruppe Amt
benutzen: Dial(mISDN/g:Amt/..)
. Der Mechanismus funktioniert so, dass chan_misdn zunächst prüft, ob der erste Port eine aktive Schicht 1 hat. Dann wird geprüft, ob auf diesem Port ein freier Kanal existiert. Sind beide Bedingungen erfüllt, wird auf diesem Kanal rausgewählt, andernfalls wird der nächste Kanal/Port verwendet.
Auf der Homepage http://www.misdn.org befinden sich einige Informationen zu den aktuellen Versionen von mISDN. ISDN Karten die den NT Mode unterstützen sowie zusätzliche Informationen kann man auf der Seite: http://isdn.jolly.de/cards.html erhalten. Weiterhin gibt es ein deutsches Forum zu mISDN auf http://www.ip-phone-forum.de/forumdisplay.php?f=521. Schließlich gibt es auf dem Voip-Info-Wiki hilfreiche Infos http://www.voip-info.org/wiki/view/chan_mISDN.
© by Stefan Wintermeyer