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

Unable to create channel of type 'CAPI'

Dieses Thema im Forum "Asterisk ISDN mit CAPI (chan_capi, chan_capi_cm)" wurde erstellt von kannX, 5 Okt. 2004.

  1. kannX

    kannX Neuer User

    Registriert seit:
    5 Okt. 2004
    Beiträge:
    4
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi, wenn ich versuche von einem SIP-Telefon aus eine Verbidung über chan_capi in das Telefonnetz zu machen stürzt Asterisk immer ab.
    Ich verwende eine aktuelle CVS-Version von Asterisk - v0.9, v1.0 und v1.0.1 kompilieren zwar sauber, es lassen sich aber viele Module wegen "unresolved symbols" nicht laden.

    Auf der Console sieht das ganze so aus:
    Code:
        -- Executing Dial("SIP/kannx-6903", "CAPI/@22/<nummer>") in new stack
    Oct  5 00:20:20 NOTICE[278545]: app_dial.c:743 dial_exec: Unable to create channel of type 'CAPI'
      == Everyone is busy/congested at this time
        -- Executing Congestion("SIP/kannx-6903", "") in new stack
      == Spawn extension (longdistance, <nummer>, 2) exited non-zero on 'SIP/kannx-6903'
    Speicherzugriffsfehler
    Ouch ... error while writing audio data: : Broken pipe
    
    meine capi.conf
    Code:
    [general]
    nationalprefix=0
    internationalprefix=00
    rxgain=0.8
    txgain=0.8
    
    [interfaces]
    msn=22
    incomingmsn=22
    controller=1
    softdtmf=0
    isdnmode=ptp
    context=default
    echocancel=no
    devices=2
    
    Auszug aus der extensions.conf
    Code:
    [area]
    exten => _<vorwahl>.,1,Dial(CAPI/@22/${EXTEN})
    exten => _<vorwahl>.,1,Congestion
    
    die Rechte von /dev/capi20 sehen so aus
    Code:
    crw-rw-rw-  1 root root 68, 0  4. Okt 13:26 /dev/capi20
    
    und asterisk läuft unter root, also sollte es keine Zugriffsprobleme geben.
    capiinfo gibt den korrekten Output, alle Module sind geladen und ich kann ohne Probleme mit dem pppd (mit capi-modul) ins Internet.

    Ich bin ehrlich ziemlich am verzweifeln, kann mir jemand helfen?
     
  2. deepnight

    deepnight Neuer User

    Registriert seit:
    10 Juni 2004
    Beiträge:
    119
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
  3. fabe

    fabe Neuer User

    Registriert seit:
    13 Juli 2004
    Beiträge:
    72
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    stimmt das mit dem isdnmode=ptp ?
    wenn ja, ist deine karte(treiber) auch korrekt im ptp mode??
     
  4. kannX

    kannX Neuer User

    Registriert seit:
    5 Okt. 2004
    Beiträge:
    4
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich habe einen Mehrgeräteanschluss und habe die Option irgentwo i Inet mal gesehen.

    Zumindest habe ich die capi.conf jetzt nach der HowTo angepasst (da scheint in der HowTo in der capi.conf bei interfaces das "s" zu fehlen) und bekomme immer noch den selben Fehler.

    Beim Laden zeigt asterisk das hier an:
    Code:
      [chan_capi.so] => (Common ISDN API for Asterisk)
      == Parsing '/etc/asterisk/capi.conf': Found
        -- This box has 1 capi controller(s).
        -- CAPI[contr1] supports DTMF
        -- CAPI[contr1] supports supplementary services
           > HOLD/RETRIEVE
           > TERMINAL PORTABILITY
           > ECT
           > 3PTY
           > CF
           > CD
           > MCID
           > CCBS
           > MWI
           > CCNR
      == ast_capi_pvt(22,*,default,0,2) (1,2,64)
      == ast_capi_pvt(22,*,default,0,2) (1,2,64)
        -- listening on contr1 CIPmask = 0x1fff03ff
      == Registered channel type 'CAPI' (Common ISDN API Driver (0.3.5) aLaw CVS HEAD)
    
    und ein "capi info" sagt auch das alles ok ist:
    Code:
    Contr1: 2 B channels total, 2 B channels free.
    
     
  5. fabe

    fabe Neuer User

    Registriert seit:
    13 Juli 2004
    Beiträge:
    72
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hm. ich dachte immer ein capi dial schaut so aus:
    Dial(CAPI/msn:rufnummer) oder geht das mit dem / auch ?
     
  6. Hupe

    Hupe Aktives Mitglied

    Registriert seit:
    8 Apr. 2004
    Beiträge:
    2,586
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    "isdnmode=ptp" ist doch für Anlagenanschlüsse, oder. Hat bei einem Mehrgeräteanschluß nix zu suchen. Wie es aussieht nutzt Du ja Asterisk an einem internen S0-Bus (MSN 22). Da solltest du dann in jedem Fall die automatische Amtholung deaktivieren. Das macht vieles leichte. Es sei denn, daß Du Telefone am interne S0 via Asterisk nicht anrufen willst.
    AVM liefert mit chan_capi ne capi.conf mit. nimm die mal und modifizier die für deine Zwecke. Ist wohl besser so.
     
  7. fabe

    fabe Neuer User

    Registriert seit:
    13 Juli 2004
    Beiträge:
    72
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    für richtiges ptp musst du das in der /etc/capi.conf aktivieren und im capiinit muss dann korrekt Protocol: Point-To-Point auftauchen...
    (falls es das ist, was du machst.)
     
  8. kannX

    kannX Neuer User

    Registriert seit:
    5 Okt. 2004
    Beiträge:
    4
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Richtig, Asterisk hängt zur Zeit am internen S0 von eine T-Eumex628 (scheiss Ding). Und die automatische Amtsholung ist aktiviert.
    Zumindest zu Testzwecken dachte ich das es so gehen würde.
    Um innerhalb der Telefonanlage (nicht Asterisk) zu telefonieren benutze ich den Flash (**), damit sollte Asterisk eigentlich auch keine Probleme haben.

    Was den isdnmode angeht bin ich mir eigentlich recht sicher das Mehrgeräteanschluss PointToPoint (ptp) ist und der Anlagenanschluss PointToMultipoint und nicht umgekehrt, soweit ich weis unterstützen viele ISDN-Karten nur ptp.

    Ich werde deinen Rat mal befolgen und den Asterisk-Rechner direkt ans NTBA hängen, dann sind Fehler durch die Telefonanlage ausgeschlossen.

    Die original capi.conf von chan_capi (von Junghans) sieht so aus:
    Code:
    [general]
    nationalprefix=0
    internationalprefix=00
    rxgain=0.8
    txgain=0.8
    
    [interfaces]
    
    msn=50
    incomingmsn=*
    controller=1
    softdtmf=1
    accountcode=
    context=demo
    ;echosquelch=1
    ;echocancel=yes
    ;echotail=64
    ;callgroup=1
    ;deflect=12345678
    devices=2
    
    also meiner Meinugn nach ist da kein Unterschied.

    Ich weis nicht was es da von AVM für Asterisk gibt, aber ich habe den Original fcpci-capi Treiber von AVM mit dem 2.4.25er Kernel drauf, die /etc/capi.conf sieht so aus:
    Code:
    fcpci           -       -       -       -       -       -
    
    @fabe:
    in der original capi.conf sieht das etwa so aus:
    Code:
    exten => _XXX.,2,Dial,CAPI/55512${CALLERIDNUM}:bBYEXTENSION
    
    Ich habe da schon alles probiert, in Klammern, mit Komma, mit Doppepunkt, mit Slash, mit @ vor der msn, usw.

    Der Fehler ist immer der selbe (es sei denn ich mache die capi.conf mit Absicht fehlerhaft) daher denke ich mal das Asterisk da alle Schreibweisen annimmt.

    Subjektiv glaube ich das chan_capi der Knackpunkt ist - es erkennt zwar den Kontroller korrekt aber ich glaube nicht das chan_capi auch nur ansatzweise versucht eine Verbindung aufzubauen.

    Ich werde Asterisk von der "stable" cvs-Branch nochmal neu bauen, die capi4k-utils nochmal neu drauf machen und chan_capi auch noch mal neu kompilieren.
    Die CFLAGS habe ich zwar (Gentoo Linux) in der /etc/make.conf so angegeben "-march=pentium2 -O3 -pipe -fomit-frame-pointer" aber die werden nicht exportiert, daher dürften die auch nicht angewendet werden wenn ich per Hand von cvs kompiliere oder gibt es da Erfahrungen mit Kompilerflags die man vielleicht setzen sollte?
     
  9. fabe

    fabe Neuer User

    Registriert seit:
    13 Juli 2004
    Beiträge:
    72
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ich bin 100% sicher, daß Anlagenanschluss Point2Point(ptp) und normale anschlüsse Point2Multipoint(ptmp) sind...
    bei einem anlagenschluss gibt es von seite des carriers nur die verbindung zu einem einzigen gerät! (die anlage am anlagenanschluss).
    bei einem normalen isdn anschluss, kannst du mehrere isdn telefone anschließen (deshalb ja auch bus). und deshalb auch to Multipoint...
    sprich mehrere verschiedene endgeräte an einem carrier anschluss


    und point2point wird nur von ein paar wenigen (meist recht teuren) karten unterstützt... die standard isdn karten (ala fritzcard o.ä.) sind alle ptmp
     
  10. kannX

    kannX Neuer User

    Registriert seit:
    5 Okt. 2004
    Beiträge:
    4
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    So, jetzt gehts :)

    Ich habe jetzt asterisk-1.0.1 (aus cvs) drauf und alles funktioniert "ast rein".
    Code:
        -- Executing Dial("SIP/kannx-cf9d", "CAPI/22:b<nummer>") in new stack
        -- Called 22:b<nummer>
        -- CAPI[contr1/22]/1 is making progress passing it to SIP/kannx-cf9d
        -- CAPI[contr1/22]/1 is ringing
        -- CAPI[contr1/22]/1 answered SIP/kannx-cf9d
        -- CAPI Hangingup
      == Spawn extension (longdistance, <nummer>, 1) exited non-zero on 'SIP/kannx-cf9d'
    
    der passende Eintrag in der extensions.conf sieht so aus:
    Code:
    exten => _0Z.,1,Dial,CAPI/22:b${EXTEN}
    
    @fabe:
    Sorry, du hattest bezüglich ptp wirklich Recht - die Option damit wegzulassen spart den unschönen Crash, ein ziemlich eindeutiger Beweis.

    Vielen Dank an alle für die Hilfe.