.titleBar { margin-bottom: 5px!important; }

Konfigurationsproblem HFC-Karte an S0-Bus einer Eumex 628

Dieses Thema im Forum "Asterisk ISDN mit Bristuff (hfc, zaptel)" wurde erstellt von Karsten, 14 Jan. 2007.

  1. Karsten

    Karsten Neuer User

    Registriert seit:
    27 Dez. 2004
    Beiträge:
    40
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Drachenfels
    #1 Karsten, 14 Jan. 2007
    Zuletzt bearbeitet: 14 Jan. 2007
    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
     
  2. kombjuder

    kombjuder IPPF-Promi

    Registriert seit:
    2 Nov. 2004
    Beiträge:
    3,086
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Weil am Rhein
    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.
     
  3. Karsten

    Karsten Neuer User

    Registriert seit:
    27 Dez. 2004
    Beiträge:
    40
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Drachenfels
    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 ?
     
  4. Karsten

    Karsten Neuer User

    Registriert seit:
    27 Dez. 2004
    Beiträge:
    40
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Drachenfels
    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 ;)
     
  5. Karsten

    Karsten Neuer User

    Registriert seit:
    27 Dez. 2004
    Beiträge:
    40
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Drachenfels
    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 ...
     
  6. madiehl

    madiehl Mitglied

    Registriert seit:
    15 Feb. 2005
    Beiträge:
    438
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  7. Karsten

    Karsten Neuer User

    Registriert seit:
    27 Dez. 2004
    Beiträge:
    40
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Drachenfels
    #7 Karsten, 31 Jan. 2007
    Zuletzt bearbeitet: 31 Jan. 2007
    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 ;)
     
  8. rentier-s

    rentier-s Guest

    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