Debian 4.0 (etch), 2 analog Telefonanschlüsse, ISDN Telefone intern

eMHa

Neuer User
Mitglied seit
5 Nov 2007
Beiträge
14
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich bin ziemlich neu was Asterisk angeht und möchte in diesem Faden beschreiben wie ich meinen Asterisk-Server auf Basis von Debian 4.0 eingerichtet habe (bzw. momentan einrichte).

Ich nutze von KabelBW CleverCabel 25, welches Internet und zwei analoge Telefonanschlüsse bietet.
Die zwei analogen Telefonanschlüsse binde ich über zwei X100P-FXO-PCI-Karten an (http://www.x100p.com/).
Meine internen ISDN-Telefone binde ich über eine Fritz!PCI v2.0 ISDN-Karte an.

Desweiteren habe ich später vor, einen VoIP-Anbieter zu integrieren und VoIP-Client-Software zu integrieren (aber das kommt erst im zweiten Schritt und ist ein "nice to have").

Basis ist eine Debian 4.0 Installation und ich möchte nach Möglichkeit auch das mitgelieferte Asterisk nutzen um von den Debian-Security-Updates zu profitieren.

Hardware:
Code:
excelsior:~# lspci
[..]
00:02.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
00:04.0 Ethernet controller: D-Link System Inc RTL8139 Ethernet (rev 10)
00:06.0 Network controller: AVM Audiovisuelles MKTG & Computer System GmbH Fritz!PCI v2.0 ISDN (rev 02)
[..]
01:02.0 Communication controller: Motorola Wildcard X100P
01:06.0 Communication controller: Motorola Wildcard X100P

Die D-Link-Netzwerkkarte ist für die Internet-Anbindung. Die 1GBit-Netzwerkkarte für das interne Netzwerk. Die AVM-Karte für die ISDN-Telefone und die X100P-Karten für die zwei analogen Amtsleitungen.

Hardware-Einrichtung der zwei X100P-Karten:
Code:
excelsior:~# aptitude install module-assistant
excelsior:~# m-a a-i zaptel
excelsior:~# aptitude install zaptel
excelsior:~# echo -e "wcfxo\nzaptel" >> /etc/modules
excelsior:~# modprobe wcfxo
excelsior:~# modprobe zaptel
excelsior:~# cp -a /etc/zaptel.conf /etc/zaptel.conf.original
excelsior:~# vi /etc/zaptel.conf
excelsior:~# diff /etc/zaptel.conf.original /etc/zaptel.conf
148c148
< loadzone = us
---
> #loadzone = us
153c153
< #loadzone=de
---
> loadzone=de
162c162
< defaultzone=us
---
> defaultzone=de
223c223,224
< 
---
> fxsks = 1
> fxsks = 2
excelsior:~# /etc/init.d/zaptel start
excelsior:~# dmesg
[..]
Zapata Telephony Interface Registered on major 196
Zaptel Version: 1.2.11 Echo Canceller: MG2
wcfxo: DAA mode is 'FCC'
Found a Wildcard FXO: Wildcard X100P
wcfxo: DAA mode is 'FCC'
Found a Wildcard FXO: Wildcard X100P
Registered tone zone 29 (Germany)

Asterisk installieren:
Code:
excelsior:~# aptitude install asterisk asterisk-bristuff asterisk-prompt-de
excelsior:~# aptitude install asterisk-sounds-extra

Erster Start von Asterisk (unkonfiguriert) als Benutzer asterisk:
Code:
excelsior:~# su -s /bin/bash - asterisk
asterisk@excelsior:~$ /usr/sbin/asterisk -vvvgc
[..]
*CLI>
Hinweis: Strg-C beendet den Asterisk-Server.


Soweit erstmal, heute Abend geht es dann an die ISDN-Karte...
 
Zuletzt bearbeitet:
bist du da sicher?

Noch nicht ganz:
Code:
*CLI> capi show channels
CAPI B-channel information:
Line-Name       NTmode state i/o bproto isdnstate   ton  number
----------------------------------------------------------------
isdn#02          yes   -----  -  trans              0x00 ''->''
isdn#01          yes   -----  -  trans              0x00 ''->''

Soweit ich sehe kann ich es wohl "konfigurieren". Ob das die Karte aber wirklich macht... ?
 
eine fritzcard kann kein nt-modus
 
Zur ISDN-Karte. Soweit ich das evaluiert habe ist mISDN unter Debian 4.0 kein Spaß. Und das chan_misdn von asterisk ist auch nicht dabei.
Da ich keine HFC-Karte sondern eine AVM-Karte habe, ist es wohl das kleinste Übel, die AVM-Kernel-Module, welche capi bieten, zu bauen. chan_capi von asterisk ist als Debian-Paket dabei.

Kernel-Modul von AVM:
Code:
excelsior:~# aptitude install capiutils
excelsior:/var/tmp# wget http://www.avm.de/files/cardware/fritzcrd.pci/linux/suse.93/fcpci-suse93-3.11-07.tar.gz
excelsior:/usr/local/src# tar -xzf /var/tmp/fcpci-suse93-3.11-07.tar.gz
excelsior:/usr/local/src/fritz/src# cp -a tools.h tools.h.original
excelsior:/usr/local/src/fritz/src# vi tools.h
excelsior:/usr/local/src/fritz/src# diff tools.h.original tools.h
74,79c74,79
< static inline unsigned long atomic_xchg (
<       volatile atomic_t *     v, 
<       unsigned                value
< ) {
<       return __xchg (value, &v->counter, sizeof (unsigned));
< } /* atomic_xchg */
---
> //static inline unsigned long atomic_xchg (
> //    volatile atomic_t *     v, 
> //    unsigned                value
> //) {
> //    return __xchg (value, &v->counter, sizeof (unsigned));
> //} /* atomic_xchg */
excelsior:/usr/local/src/fritz/src# make
excelsior:/usr/local/src/fritz/src# mkdir /lib/modules/2.6.18-5-686/extra
excelsior:/usr/local/src/fritz/src# cp -a fcpci.ko /lib/modules/2.6.18-5-686/extra/
excelsior:~# depmod -a
excelsior:/etc/isdn# cp -a capi.conf capi.conf.original 
excelsior:/etc/isdn# vi capi.conf
excelsior:/etc/isdn# diff capi.conf.original capi.conf
12c12
< #fcpci                -               -       -       -       -       -
---
> fcpci         -               -       -       -       -       -
excelsior:~# /etc/init.d/capiutils start
excelsior:~# capiinfo
excelsior:/etc/asterisk# cp -a modules.conf modules.conf.original 
excelsior:/etc/asterisk# vi modules.conf
excelsior:/etc/asterisk# diff modules.conf.original modules.conf
41c41
< noload => chan_capi.so
---
> ;noload => chan_capi.so
excelsior:/etc/asterisk# cp -a capi.conf capi.conf.original 
excelsior:/etc/asterisk# vi capi.conf
excelsior:/etc/asterisk# diff capi.conf.original capi.conf
18c18
< [ISDN1]          ;this example interface gets name 'ISDN1' and may be any
---
> [isdn1]          ;this example interface gets name 'ISDN1' and may be any
21,22c21,22
< ;ntmode=yes      ;if isdn card operates in nt mode, set this to yes
< isdnmode=msn     ;'MSN' (point-to-multipoint) or 'DID' (direct inward dial)
---
> ntmode=yes      ;if isdn card operates in nt mode, set this to yes
> isdnmode=did     ;'MSN' (point-to-multipoint) or 'DID' (direct inward dial)
30c30
< group=1          ;dialout group
---
> group=3          ;dialout group
38c38
< context=capi-in  ;context for incoming calls
---
> context=isdn1    ;context for incoming calls
excelsior:~# su -s /bin/bash - asterisk
asterisk@excelsior:~$ /usr/sbin/asterisk -vvvgc
[..]
*CLI> capi info
Contr1: 2 B channels total, 2 B channels free.
*CLI> capi show channels 
CAPI B-channel information:
Line-Name       NTmode state i/o bproto isdnstate   ton  number
----------------------------------------------------------------
isdn1#02         yes   -----  -  trans              0x00 ''->''
isdn1#01         yes   -----  -  trans              0x00 ''->''

So, als nächstes bin ich gespannt ob das mit dem NT-Mode wirklich klappt...

Nachtrag: OK, NT-Mode klappt nicht. Also sauberes entfernen:
Code:
excelsior:~# aptitude purge capiutils
excelsior:~# rm -rf /etc/isdn
excelsior:~# rm -rf /lib/modules/2.6.18-5-686/extra
excelsior:~# rm -rf /var/tmp/fcpci-suse93-3.11-07.tar.gz /usr/local/src/fritz
excelsior:/etc/asterisk# vi modules.conf
excelsior:~# aptitude purge asterisk-chan-capi
excelsior:~# rm /etc/asterisk/capi.conf.original
 
Zuletzt bearbeitet:
Hi eMHa!
... die Spannung können wir Dir sofort nehmen. :-Ö
 
Hi eMHa!
... die Spannung können wir Dir sofort nehmen. :-Ö

OK, OK, ... ;-) Wollte es halt mal probieren da ich die AVM-Karte sowieso hatte. Klappt aber definitiv nicht mit dem Treiber von AVM (fcpci).

Also war ich heute bei Arlt:
Code:
excelsior:~# lspci
..
00:06.0 Network controller: Cologne Chip Designs GmbH ISDN network controller [HFC-PCI] (rev 02)
..

Aber ich glaube heute Abend wird eher der Hardware Abend. Ich musste feststellen, dass die zweite X100P-Karte immer den Alarm "RED" anzeigt, egal was drin steckt. Ich fühle mich fast wie 1990 wo man mit Jumper die IRQs auf den Karten verteilt hat, blos dass man das heute im BIOS macht... ist aber im Prinzip derselbe Sch...

Wünscht mir Glück :-)
 
bist du sicher das immer red kommt

Ja, und ich habe es eben wie folgt getestet:
1. Karte rein, Kabel rein, IRQ im BIOS konfiguriert, "ztcfg -vvv" und dann "*CLI> zap show status" ergibt Alarms RED.
Rechner aus, 1. Karte raus.
2. Karte rein, Kabel rein, IRQ im BIOS konfiguriert, "ztcfg -vvv" und dann "*CLI> zap show status" ergibt Alarms OK.

Außer der Karte habe ich nichts geändert! Es sind dieselben Kabel und dieselben Anschlüsse. Bei der 2. Karte kann ich das Kabel abziehen, dann kommt Alarms "RED". Stecke ich es wieder rein geht es zurück auf "OK".
Mit der ersten Karte passiert garnichts wenn ich das Kabel rein und raus mache.

Oder gibt es noch etwas das ich testen kann?

Nachtrag: Habe nun ohne ISDN-Karte dasselbe getestet und dasselbe Ergebnis bekommen. Eine der zwei FXO scheint kaputt zu sein :-(

Zweiter Nachtrag: E-Mail an x100p.com ist raus, mal schauen wie gut der Support ist. Ich habe mir überlegt ob evtl. nur die Leitung vom Kabel auf die Platine kaputt ist. Weil der Rest funktioniert ja. Also die Karte wird korrekt erkannt und es gibt keine Fehler a la "Failed to initailize DAA, giving up..." wie man es im Internet so liest. Also es kommt bei beiden Karten "wcfxo: DAA mode is 'FCC'", wie man das erwartet.
 
Zuletzt bearbeitet:
Einbinden der ISDN-Karte:
Code:
excelsior:~# modprobe -r hisax
excelsior:~# echo -e "blacklist hisax\nblacklist hisax_fcpcipnp" > /etc/modprobe.d/blacklist-hisax
excelsior:~# echo "options vzaphfc nt_modes=0" > /etc/modprobe.d/vzaphfc
excelsior:~# modprobe -r vzaphfc
excelsior:~# modprobe vzaphfc
excelsior:~# vi /etc/zaptel.conf
excelsior:~# grep -v "^#" /etc/zaptel.conf
loadzone=de
defaultzone=de
span = 1,1,3,ccs,ami
bchan = 1-2
dchan = 3
fxsks = 4
excelsior:~# /etc/init.d/zaptel start

Man beachte dass die ISDN-Karte VOR der Analog-Karte kommen muss! fxsks = 1 und span =2,1,3.. usw. funktioniert nicht und bringt den gefürchteten Fehler "ZT_SPANCONFIG failed on span".

Nachtrag: In der Reihenfolge wie die Kernel-Module geladen werden, müssen die Channels vergeben werden. Sonst passiert obiges. Wenn ich also wcfxo vor vzaphfc lade, dann gebe ich fxsks = 1 und span =2,1,3.. usw. an.
Die Reihenfolge bei Debian 4.0 kann man wohl nur über die initrd steuern, da sonst udev in wahlloser Reihenfolge die Module läd. Das geht dann wie folgt:
Code:
excelsior:~# echo -e "vzaphfc\nwcfxo" >> /etc/initramfs-tools/modules
excelsior:~# update-initramfs -u -k all

Ich lade die ISDN-Karte (vzaphfc) vor der Analog-Karte (wcfxo), da ich eigentlich zwei Analog-Karten verwenden will, aber momentan nur eine funktionierende habe. Deswegen meine /etc/zaptel.conf
Code:
loadzone=de
defaultzone=de

# isdn
span = 1,1,3,ccs,ami
bchan = 1-2
dchan = 3

# use one x100p card
fxsks = 4

# use two x100p cards
#fxsks = 4-5

Somit muss ich in der /etc/asterisk/zapata.conf die channel 1 bis 2 für ISDN (channel 3 ist der D-Kanal) und den channel 4 für Analog konfigurieren.
 
Zuletzt bearbeitet:
So, jetzt bin ich an dem Punkt wo irgendwie etwas funktioniert und ich nicht weiß wieso. Und ich denke ich werde nun eine gute Dokumentation zur extensions.conf benötigen. Ich habe das Gefühl mir fehlt hier ein guter Link zu einer Dokumentation...

Mein Setup ist nun wie folgt.
zaptel.conf
Code:
loadzone=de
defaultzone=de

span = 1,1,3,ccs,ami
bchan = 1-2
dchan = 3

fxsks = 4

zapata.conf
Code:
[trunkgroups]

[channels]
language=de
context=analog1
signalling=fxs_ks
usecallerid=yes
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
rxgain=0.0
txgain=0.0
group=4
callgroup=4
pickupgroup=4
immediate=no
channel => 4

switchtype = euroisdn
signalling = bri_net_ptmp
pridialplan = local
prilocaldialplan = local
echocancel = yes
overlapdial = no
echocancelwhenbridged=no
echotraining=no
immediate = no
usecallerid = yes
group = 1
context = isdn1
usecallingpres=yes
nationalprefix = 0
internationalprefix = 00
channel => 1-2

extensions.conf
Code:
[analog1]
exten => s,1,Dial(ZAP/g1/${EXTEN},60)
exten => s,2,Hangup

[isdn1]
exten => s,1,Dial(ZAP/g4/${EXTEN},60)
exten => s,2,Hangup

Ich kann nun mit dem ISDN-Telefon über Asterisk über den Analog-Anschluß raus telefonieren.

Komisch dabei ist, dass ich nicht einfach wählen kann, sondern ich muss zuerst abheben. Da gibt es doch bestimmt nette Lösungen dafür, oder?

Wenn ich auf dem Ananlog-Anschluß von außen anrufe klingelt aber kein ISDN-Telefon. Ich komme mir vor als ob ich mit der extensions.conf einfach im dunkel stochere. Gibt es eine gute Einführung in diese extensions.conf?
 
Hi eMHa!
... wo irgendwie etwas funktioniert und ich nicht weiß wieso.

... zapata.conf

[trunkgroups]

[channels]
...
context=analog1
signalling=fxs_ks
...
group=4
...
channel => 4

switchtype = euroisdn
signalling = bri_net_ptmp ; hier also NT-Modus
...
group = 1
context = isdn1
...
channel => 1-2

... extensions.conf

[analog1]
exten => s,1,Dial(ZAP/g1/${EXTEN},60)
exten => s,2,Hangup

[isdn1]
exten => s,1,Dial(ZAP/g4/${EXTEN},60)
exten => s,2,Hangup

Leider verstehe ich auch noch nicht allzu Viel vom ganzen Asterisk und die Anbundung an einen Analoganschluss interessiert mich auch sehr. Vielleich kann ich das bei Dir mal nachvollziehen.
Was mich sehr verwundert, dass du Analog in Gruppe 4 (group=4) bestimmst und ISDN NT-Mode in Gruppe 1 (group=1) und dann im Dial Zap die Gruppen tauschst: Dial(ZAP/g4... und Dial(ZAP/g1...
 
Hi eMHa!
Leider verstehe ich auch noch nicht allzu Viel vom ganzen Asterisk

Dann sind wir schon zwei ;-)

und die Anbundung an einen Analoganschluss interessiert mich auch sehr. Vielleich kann ich das bei Dir mal nachvollziehen.
Was mich sehr verwundert, dass du Analog in Gruppe 4 (group=4) bestimmst und ISDN NT-Mode in Gruppe 1 (group=1) und dann im Dial Zap die Gruppen tauschst: Dial(ZAP/g4... und Dial(ZAP/g1...

Mein Verständnis der extensions.conf ist die, dass es Ereignis gesteuert auswertet. Wenn also bei ISDN etwas passiert (Hörer abheben) dann soll es an Analog weitergegeben werden und umgekehrt. Deswegen habe ich die Gruppen vertauscht. Aber vlt. ist mein Verständnis auch falsch?
 
Kostenlos!

Zurzeit aktive Besucher

Statistik des Forums

Themen
248,442
Beiträge
2,291,588
Mitglieder
377,860
Neuestes Mitglied
BernyG