Unable to create channel of type 'CAPI'

kannX

Neuer User
Mitglied seit
5 Okt 2004
Beiträge
4
Punkte für Reaktionen
0
Punkte
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?
 
stimmt das mit dem isdnmode=ptp ?
wenn ja, ist deine karte(treiber) auch korrekt im ptp mode??
 
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.
 
hm. ich dachte immer ein capi dial schaut so aus:
Dial(CAPI/msn:rufnummer) oder geht das mit dem / auch ?
 
"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.
 
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.)
 
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?
 
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
 
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.
 
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.