Konfigurationsproblem HFC-Karte an S0-Bus einer Eumex 628

Karsten

Neuer User
Mitglied seit
27 Dez 2004
Beiträge
40
Punkte für Reaktionen
0
Punkte
0
Die Problemstellung in Kürze:

System:
  • Asterisk 1.2.13-BRIstuffed-0.3.0-PRE-1v auf Debian-System
  • Cologne Chip Designs GmbH ISDN network controller HFC-PCI
  • Der externe ISDN-S0-Bus der Tk-Anlage hängt am Netz des Festnetzanbieters (also am NTBA)
  • Die HFC-Karte hängt am internen S0-Bus der Eumex 628

Primäres Ziel:
  • Telefonieren ganz normal über die TK-Anlage mit ISDN möglich.
  • Wenn ein Anruf über VoIP kommt, dann soll das über den Asterisk und die HFC-Karte auf den S0-Bus in die TK-Anlage gehen und ich kann das Gespräch an jedem Telefon annehmen, daß an der Tk-Anlage hängt.
  • Will ich per VoIP raustelefonieren, dann wähle ich die interne Nummer der HFC-Karte <28>, Asterisk nimmt dann ab und ich bekomme ein Freizeichen um die VoIP-Nummmer zu wählen.

zaptel.conf
Code:
loadzone=nl
defaultzone=nl

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

zapata.conf
Code:
[channels]
; Default language
language=de

switchtype = euroisdn
; p2mp TE mode
signalling = bri_cpe_ptmp

nationalprefix = 0
internationalprefix = 00

pridialplan = isdn
prilocaldialplan = isdn
echocancel = yes
echocancelwhenbridged = no
echotraining = no
usecallerid = yes
overlapdial = yes
immediate = no
group = 1
context = isdn
channel = 1-2

extensions.conf
Code:
[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no

[globals]
CONSOLE=Console/dsp          ; Console interface for demo
IAXINFO=guest                    ; IAXtel username/password
TRUNK=Zap/g1                    ; Trunk interface

[demo]
; We start with what to do when a call first comes in.
;
exten => s,1,Wait,1                     ; Wait a second, just for fun
exten => s,n,Answer                     ; Answer the line
exten => s,n,Set(TIMEOUT(digit)=5)      ; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=10)  ; Set Response Timeout to 10 seconds
... Weiter wie im Original

[local]
exten => 23,1,Dial(Zap/g1/23,30,rt)

[default]
exten => 28,1,DISA,no-password|sipgateohneneun

[isdn]
; By default we include the demo.  In a production system, you
; probably don't want to have the demo there.
;
; So wird keine Extension ausgegeben !
; exten => _X.,1,NoOp(Anruf auf Nummer ${EXTEN})
;
; So fühlt sich Asterisk auch nicht angesprochen
; exten => 28,1,demo

include => demo

Asterisk lässt sich problemlos und ohne Fehlermeldungen starten, die Kanäle werden initialisiert:

Code:
 [chan_zap.so] => (Zapata Telephony w/PRI)
  == Parsing '/etc/asterisk/zapata.conf': Found
    -- Registered channel 1, PRI Signalling signalling
    -- Registered channel 2, PRI Signalling signalling
    -- Automatically generated pseudo channel
  == Starting D-Channel on span 1
  == Registered channel type 'Zap' (Zapata Telephony Driver w/PRI)
  == Manager registered action ZapTransfer
  == Manager registered action ZapHangup
  == Manager registered action ZapDialOffhook
  == Manager registered action ZapDNDon
  == Manager registered action ZapDNDoff
  == Manager registered action ZapShowChannels
  == Registered application 'zapEC'
  == Registered application 'zapCD'
  == Registered application 'zapInband'
 [skipping chan_capi.so]

Man kann sich die Kanäle auch anzeigen lassen:

Code:
*CLI> zap show channels
   Chan Extension  Context         Language   MusicOnHold
 pseudo            default         de
      1            default         de
      2            default         de

Mein Problem:
Das Asterisk reagiert nicht bzw. will mit der TK-Anlage nicht kommunizieren. :mad:
Wähle ich intern die 28 dann ertönt 2 Mal ein Freizeichen und dann besetzt. Egal was ich ausprobiert habe.

Ich habe da auch ein Verständnisproblem wie Asterisk als Teilnehmer am S0-Bus auf die Rufnummer 28 reagieren soll ?
(Alle anderen extensions sollen ja unangetastet bleiben Nr. 20-27.)
Der Zusammenhang zwischen Interface und Dial-Plan wird doch nur über den Context also "isdn" geschaffen ?

Es scheint aber auch noch ein Problem mit den Kanälen vorzuliegen.
Code:
*CLI> dial 23
    -- Executing Dial("OSS/dsp", "Zap/g1/23|30|rt") in new stack
Jan 14 18:56:25 NOTICE[24294]: app_dial.c:1076 dial_exec_full: Unable to create channel of type 'Zap' (cause 34 - Circuit/channel congestion)
  == Everyone is busy/congested at this time (1:0/1/0)
  == Auto fallthrough, channel 'OSS/dsp' status is 'CONGESTION'
  == Console is full duplex
 << Hangup on console >>

Ich bin absolut ratlos wo das Problem liegt ? :confused:
Es gibt einfach zu viele Fehlermöglichkeiten ...
Mit Sicherheit stimmt vor allem die extensions.conf noch nicht.
Bislang habe ich aber auch noch kein Beispiel gefunden das meine Problemstellung trifft.

Ist bitte jemand so nett ein paar konkrete Vorschläge zu machen oder am besten funktionsfähige getestete Konfigurationsdateien zu dieser Problemstellung zu posten :D
 
Zuletzt bearbeitet:
Also gut.

Ein Anruf kommt von der Anlage via ISDN auf den Asterisk. Dann erkennt das Asterisk und schaut in seiner zapata.conf nach was er tun soll: Nach [ISDN] gehen.
Dort steht was zu tun ist.
In deiner [isdn] steht include [demo], also geht asterisk nach [demo]
dort steht:
warte 1 s
nimm den Anruf an
Setze 2 Timer
nachdem nichts mehr kommt legt die Gegenstelle auf.
Hier musst du sagen, was geschehen soll: App 72 anrufen, Mailbox rangehen ...

Für das rauswählen muß es auf deiner ISDN-Anlage ein App 23 geben. Der wird auch gerufen. Wenn es den nicht gibt, geht der Anruf schief.
Übrigens kannst du nur die 23 auf deiner ISDN-Anlage anrufen.
 
Das ist so weit alles richtig - aber

die demo geht natürlich weiter. Das hatte ich in dem Code mit "... Weiter wie im Original" angedeutet.
Code:
exten => s,n(restart),BackGround(demo-congrats) ; Play a congratulatory message
exten => s,n(instruct),BackGround(demo-instruct)        ; Play some instructions
exten => s,n,WaitExten          ; Wait for an extension to be dialed.

In der ISDN-Anlage existiert auf Nr. 20 und 23 ein ISDN-Telefon.
Die extensions.conf soll zuerst einmal ja nur dafür sorgen das Asterisk überhaupt auf Anrufe per ISDN reagiert. Da ist mir das Demo-Programm durchaus recht.

Ich glaube nun das ist alles nicht das Problem. Von rentier-s wurde ich darauf aufmerksam gemacht das ich den Fehlermeldungen besser nachgehen sollte.

Wenn ich versuche das ISDN-Telefon anzurufen beschwert sich das System das es keinen freien Kanal bekommt (s.o.) !
Ich habe jetzt noch mal gezielt ein paar zap-Kommandos losgelassen:

Code:
*CLI> zap show cadences
r1: 125,125,2000,4000
r2: 250,250,500,1000,250,250,500,4000
r3: 125,125,125,125,125,4000
r4: 1000,500,2500,5000
*CLI> zap show status
Description                              Alarms     IRQ        bpviol     CRC4
HFC-S PCI A ISDN card 0 [TE] layer 1 A OK         0          0          0
*CLI> zap restart
 Destroying channels and reloading zaptel configuration.
  == Parsing '/etc/asterisk/zapata.conf': Found
Jan 15 13:12:35 WARNING[4756]: chan_zap.c:1097 zt_open: Unable to specify channel 1: Device or resource busy
Jan 15 13:12:35 ERROR[4756]: chan_zap.c:7359 mkintf: Unable to open channel 1: Device or resource busy
here = 0, tmp->channel = 1, channel = 1
Jan 15 13:12:35 ERROR[4756]: chan_zap.c:12173 setup_zap: Unable to register channel '1-2'
Jan 15 13:12:35 WARNING[4756]: chan_zap.c:11353 zap_restart: Reload channels from zap config failed!

Die HFC-Karte scheint angesprochen zu werden - ist aber blockiert !
Also ist die Frage - von wem ?

isdn4linux und hisax ist nicht installiert, zumindest finde ich keine Pakete dazu auf dem System.

Wie findet man heraus ob ein anderer Treiber auf die Karte zugreift ?
Und falls dies nicht der Fall ist was blockiert die Kanäle dann ?
 
Wie es aussieht scheint die Lösung des Problems nicht so einfach zu sein.

Ich habe mir in der Zwischenzeit bei ebay noch eine Fritz-Karte gekauft um es alternativ mit dieser auszuprobieren.
Leider scheinen sich die Probleme eher zu verstärken als weniger zu werden.
Die Karte wird vom Kernel unterstützt:

Code:
> lspci -v
0000:00:09.0 Network controller: AVM Audiovisuelles MKTG & Computer System GmbH A1 ISDN [Fritz] (rev 02)
	Subsystem: AVM Audiovisuelles MKTG & Computer System GmbH FRITZ!Card ISDN Controller
	Flags: medium devsel, IRQ 9
	Memory at dfffffe0 (32-bit, non-prefetchable) [size=32]
	I/O ports at c800 [size=32]

dafür stehe ich aber vor dem Problem das ich nicht weiß warum die Karte sonst nicht vom System unterstützt wird.
Für Debian scheint es immer noch keine CAPI-Treiber zu geben, somit scheidet eine Benutzung der Capi-Schnittstelle weiter aus.
Wenn ich versuche Bristuff zu nutzen dann geht es auch nicht:

Code:
> ztcfg -vv
ZT_SPANCONFIG failed on span 1: No such device or address (6)

bzw. beim Start von Asterisk

Code:
 [chan_zap.so] => (Zapata Telephony w/PRI)
  == Parsing '/etc/asterisk/zapata.conf': Found
Jan 23 17:39:17 WARNING[30750]: chan_zap.c:1097 zt_open: Unable to specify channel 1: No such device or address
Jan 23 17:39:17 ERROR[30750]: chan_zap.c:7359 mkintf: Unable to open channel 1: No such device or address
here = 0, tmp->channel = 1, channel = 1
Jan 23 17:39:17 ERROR[30750]: chan_zap.c:12173 setup_zap: Unable to register channel '1-2'
Jan 23 17:39:17 WARNING[30750]: loader.c:414 __load_resource: chan_zap.so: load_module failed, returning -1
Jan 23 17:39:17 WARNING[30750]: loader.c:554 load_modules: Loading module chan_zap.so failed!

Welche Vodoo-Knöchelchen muß man für eine Fritz-Karte werfen um sich mit dieser unterhalten zu dürfen ?

Durch Zufall bin ich auf folgenden Beitrag gestossen:
http://www.ip-phone-forum.de/showthread.php?t=77217&highlight=zaptel.conf+fritz
Scheinbar lag ursprunglich doch "nur" ein Konfigurationsproblem vor.
Entsprechende Konfigurationsbeispiele habe ich aber nach wie vor nicht gefunden.
Die einzigen Tips sind wie üblich "Ist doch ganz einfach" ...
Ja - wenn es funktioniert ;)
 
Leider bleiben die meisten Problem-Threads in diesem Forum unbeantwortet.
Das macht es wirklich schwierig Lösungen aus all den Beiträgen herauszufiltern ... ;-)

Daher wenigstens eine Teil-Auflösung zu diesem Problem:

Es war doch tatsächlich so das hisax auf dem System sein Unwesen trieb und damit chan_zap blockiert hat.
Danach hatte ich zwar schon vorher geguckt, ich hatte aber nur nach installierten Paketen gesucht.

Am besten und schnellsten kann man dieses Problem durch ein dmseg herausfinden.
Wenn hisax oder capi auf dem System aktiv sind so wurden die Kerneltreiber initialisiert.
Hisax meldet auch das es sich die ISDN-Kanäle gekrallt hat.

Wie man hisax wieder los wird habe ich hier http://www.ip-phone-forum.de/showthread.php?t=111056
dokumentiert.

Nun geht es wieder um mein ursprüngliches Konfigurationsproblem ...
 
Die meisten Problem-Threads in diesem Forum bleiben wohl aufgrund mangelnder Informationen unbeantwortet. Wie wäre es, wenn Du uns mal die relevanten Teile Deiner extensions.conf zeigst? Wo ist z.B. der Teil mit sipgateohneneun? Wo ist der Context isdn? Die bisherigen Fehler in den Logs haben immer mit den fehlerhaften Treibern zu tun gehabt. Was also ist Dein eigentliches Konfigurationsproblem? Sind die Fehlermeldungen immer noch die selben oder sind es neue? Probleme kann man nicht durch Raten lösen, man benötigt schon mehr Informationen als in diesem Thread erkennbar.
 
O.K. Ich verstehe. :)

Stand der Dinge ist das Asterisk mit chan_zap und Bristuff nun läuft.
Ich kann intern die <28> an der Eumex wählen und gelange dann in das Asterisk-Demo-Programm.
Das primäre Konfigurationsziel ist immer noch so wie ich es am Anfang beschrieben habe:

Primäres Ziel:
  • Telefonieren ganz normal über die TK-Anlage mit ISDN möglich.
  • Wenn ein Anruf über VoIP kommt, dann soll das über den Asterisk und die HFC-Karte auf den S0-Bus in die TK-Anlage gehen und ich kann das Gespräch an jedem Telefon annehmen, daß an der Tk-Anlage hängt. (Wähle <60> für Sammelruf / Gruppenruf)
  • Will ich per VoIP raustelefonieren, dann wähle ich die interne Nummer der HFC-Karte <28>, Asterisk nimmt dann ab und ich bekomme ein Freizeichen um die VoIP-Nummmer zu wählen.

(Im nächsten Schritt soll Asterisk dran gehen und ich gelange in ein Menü von dem der erste Menüpunkt die Wahl einer SIP-Nr. ist.
Mir ist schon klar das ich die SIP-Nummern vorher in der sip.conf definiert haben muß.)

Die zaptel.conf und zapata.conf entspricht der wie ich Sie am Anfang gepostet habe.
Die extensions.conf sieht zur Zeit folgendermaßen aus:

Code:
[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no

[globals]
CONSOLE=Console/dsp				; Console interface for demo
IAXINFO=guest					; IAXtel username/password
TRUNK=Zap/g1			; Trunk interface

[demo]
;
; We start with what to do when a call first comes in.
;
exten => s,1,Wait,2			; Wait a second, just for fun
exten => s,n,Answer			; Answer the line
exten => s,n,Set(TIMEOUT(digit)=5)	; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=10)	; Set Response Timeout to 10 seconds
exten => s,n(restart),BackGround(demo-congrats)	; Play a congratulatory message
exten => s,n(instruct),BackGround(demo-instruct)	; Play some instructions
exten => s,n,WaitExten		; Wait for an extension to be dialed.

; ... Die Demo geht hier weiter - habe ich gekürzt !


;==================================================================================================

[isdn]
exten => _X.,1,NoOp(Anruf auf Nummer ${EXTEN} von ${CALLERID})

exten => 28,1,Goto(demo,s,1)

[default]
; Wir verwenden in der ISDN-TK-Anlage zweistellige MSNs
; Dies sind Gespräche die z.B. per 
; VoIP eingehen und per CAPI weitervermittelt werden zum ISDN
; X ist ein Platzhalter für alle Ziffern von 0 bis 9
; [1-9] bezeichnet alle Ziffern von 1 bis 9
; muss ggf. noch an die lokale TK-Anlage angepasst werden.

; exten => _[1-9]X,1,Dial(Zap/@28:${EXTEN})
; exten => _[1-9]X,2,Congestion

; Hier wird die ISDN-Karte von der 
; ISDN-TK-Anlage aus angerufen und in den 
; Kontext "sipgateohneneun" gesprungen:
;
;exten => 28,1,DISA,no-password|sipgateohneneun
;
; [sipgateohneneun]
; exten => _.,1,Goto(sipgate,9${EXTEN})

Die zapata.conf verweist also auf den Kontext [isdn].
Mit der <28> springt Asterisk in das Demo-Programm.

Die sip.conf enthält context=default.
Sie ist noch nicht von mir konfiguriert und wurde auch noch nicht benutzt.
In dem Demo-Programm wird jedoch mit der Menüwahl 600 eine VOIP-Verbindung zu Digium aufgebaut was auch problemlos funktioniert.

In dem Kontext [default] ist das erwähnte Beispiel mit dem [spigateohneneun].
Das habe ich noch nicht ausprobiert. Werde ich aber im Zweifelsfall jetzt tun. Dann natürlich im Kontext [isdn]

Meine Frage ist also ob es ein fertiges Beispiel gibt wie ich die Verbindung zwischen der Eumex <-> Asterisk <-> VOIP hinbekomme wie oben beschrieben.
Dann bringe ich das Ganze dann in ein Menü. Das fertige Beispiel wird hier wieder gepostet ;)
 
Zuletzt bearbeitet:
Hallo Karsten,

betrachten wir mal die Richtung ISDN->SIP.
Du brauchst zuerst in der sip.conf einen entsprechenden Eintrag, der Dich bei Deinem SIP-Provider registriert und eine Leitung bereit stellt. Wie das geht, ist in Betateilchens Kurs hier im Forum beschrieben.
Nehmen wir an, der Kontext in der sip.conf zum rauswählen heißt [12345]
Dann brauchst Du in der extensions.conf einen Kontext mit Dial-Command. Nennen wir diesen [sip-out]:
Code:
[sip-out]
exten => _.,1,Dial,SIP/${EXTEN}@12345
exten => _.,n,Hangup

Damit Du diesen zum Rauswählen nutzen kannst, bietet sich DISA an. Dafür nimmst Du die 28 über ISDN an und gibst dem Anrufer ein Asterisk-internes Freizeichen.
Code:
[isdn]
exten => 28,1,Answer
exten => 28,n,DISA(no-password|sip-out) ;das sip-out verweist den Anrufer auf den obigen Kontext
exten => 28,n,Hangup
Beachte: wenn Du in der Eumex eine externe MSN auf die 28 leitest, bekommt auch ein externer Anrufer ein Freizeichen und kann auf Deine (SIP-)Kosten telefonieren! Also entweder in der Eumex keine Rufzuordnung auf die 28, oder DISA mit PIN verwenden.
Dazu mehr unter http://www.voip-info.org/wiki-Asterisk+cmd+DISA

Nun zur anderen Richtung:
Um Gespräche über SIP anzunehmen, brauchst Du wieder ein passendes Peer in der sip.conf, auch in Betateilchens Kurs zu finden. Nehmen wir an, dort hast Du als Kontext sip-in angegeben und nur einen externen SIP-Account.
Code:
[sip-in]
exten => _.,1,Set(CALLERID(number)=28) ;Deine abgehende MSN setzen
exten => _.,n,Dial,ZAP/g1/20&ZAP/g1/23
exten => _.,n,Hangup
Damit sollten alle über SIP eingehenden Gespräche über ISDN an 20 und 23 klingeln. Wer zuerst abnimmt, hat gewonnen.
Die MSN 28 musst Du in der Eumex konfiguriert haben.

Ich glaube, damit sollte Deine Problemstellung soweit gelöst sein.

Grüße,
Stefan
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.