[Gelöst] Pickup, AVM C2, Asterisk 1.6.2

moshman

Neuer User
Mitglied seit
28 Mai 2009
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
Hi,

nachdem ja in Asterisk 1.6.2 einen Pickup-Patch schon drin hat, wollte ich ihn auch entsprechend umsetzen. Mir geht es hierbei um die korrekte Anzeige der Caller-ID bei externen Anrufen.
Allerdings gab es jedesmal einen kompletten Absturz mit der Meldung Speicherzugriffsfehler (s. genaue Beschreibung hier http://www.ip-phone-forum.de/showpost.php?p=1451461&postcount=340)
Da die Pickup-Funktion bei anderen mit einer Nicht-Capi-Hardware (z.B. Digium B410) wohl reibungslos funktioniert, vermute ich, dass es eventuell an der Capi-Hardware bzw. chan_capi liegen könnte.

Daher meine Frage in die Runde, ob schon jemanddie Pickup-Funktion von Asterisk 1.6.2 mit korrekter Caller-ID bei externen Anrufen mit chan_capi umgesetzt hat.

Grüsse
Thomas
 
Zuletzt bearbeitet:
Hi,

ich habe mir jetzt mal leihweise eine Diva Server 4BRI-8M besorgt und einen Testrechner komplett neu aufgesetzt.

- AMD Athlon XP2200
- Debian Squeeze
- Asterisk 1.6.2.1
- Diva System Release - Version 9.0LIN SU2 (final)
- Snom 370 Telefone, FW 8.2.24

Alles läuft soweit bestens. Die Diva ist doch eine Klasse besser als die AVM C2 oder B1.

Allerdings ist auch hier das Problem des Komplettcrash mit Speicherzugriffsfehler, wenn notifycid = yes oder notifycid = ignore-context in der sip.conf gesetzt ist.

Daher nochmal die Frage in die Runde, ob jemand das selbe Problem hat und ob es sich um ein capi-spezifisches Problem handelt.

Oder hat jemand eine Idee, welches andere Problem bestehen könnte?

Grüsse
Thomas
 
Ich könnte mir vorstellen, dass in diesen neuen Asterisk-Versionen wieder einiges an der Channel-API gemacht wurde. Wenn beim compilieren von chan_capi kein Fehler oder Warnung kam, dann ist es nicht so offensichtlich und man benötigt auf jeden Fall ein backtrace von dem Crash (am besten zusammen mit dem console-log mit verbose 5 und capi debug.

Armin
 
Hallo,

ich habe endlich Zeit gefunden, die Sache in Ruhe in einem Testsystem
- AMD Athlon XP2200 mit 512MB Arbeitsspeicher
- Debian Lenny
- Diva Server 4Bri-8M V. 2.0, PCI
- Asterisk 1.6.2.1
- Diva System Release - Version 9.0LIN SU2 (final)
- 3 x Snom 370 Telefone, FW 8.2.24
zu checken. Beim Compilieren von chan_capi gab es keinerlei Fehler oder Warnungen.

Wie schon erwähnt, ging es um die Pickup-Funktion. Sip.conf, extension.conf sind daher nur zum Test der Pickup-Funktion.

Wenn notifycid=ignore-context oder yes gesetzt ist, kommt es sofort zum Crash. Ohne notifycid funktioniert alles.

Ich hoffe mal, die nachfolgenden Infos führen weiter.
Gruss
Thomas

Ausgabe Console (verbose=5, capi debug)
Code:
*CLI> capi debug
CAPI Message Debugging Enabled
*CLI> CAPI: ApplId=0x0002 Command=0x02 SubCommand=0x82 MsgNum=0x0000 NCCI=0x00000501
CONNECT_IND                ID=002 #0x0000 LEN=0052
  Controller/PLCI/NCCI            = 0x501
  CIPValue                        = 0x10
  CalledPartyNumber               = <c1>8xxxxxx
  CallingPartyNumber              = <21 83>175xxxxxxx
  CalledPartySubaddress           = default
  CallingPartySubaddress          = default
  BC                              = <80 90 a3>
  LLC                             = default
  HLC                             = <91 81>
  AdditionalInfo
   BChannelinformation            = default
   Keypadfacility                 = default
   Useruserdata                   = default
   Facilitydataarray              = default
   SendingComplete                = default

    -- CONNECT_IND (PLCI=0x501,DID=meine MSN,CID=175xxxxxxx,CIP=0x10,CONTROLLER=0x1)
       > ISDN1#02: msn='*' DNID='meine MSN' MSN
  == ISDN1#02: setting format alaw - 0x8 (alaw)VOCODER
  == ISDN1#02: Incoming call '0175xxxxxxx' -> 'meine MSN'
    -- ISDN1#02: CAPI/ISDN1#02/meine MSN-0: meine MSN matches in context isdn-in
Speicherzugriffsfehler (core dumped)

Hier der Backtrace
Code:
(gdb) bt
#0  0xb7c753b3 in strlen () from /lib/i686/cmov/libc.so.6
#1  0xb71cf5be in transmit_state_notify (p=0x94022b8, state=<value optimized out>, full=1, timeout=0) at chan_sip.c:11188
#2  0xb71cfab1 in cb_extensionstate (context=0x9458760 "isdn-in", exten=0x945bc7c "11", state=8, data=0x94022b8) at chan_sip.c:12775
#3  0x08107207 in handle_statechange (datap=0x9468d08) at pbx.c:3879
#4  0x081495db in tps_processing_function (data=0x8f9c298) at taskprocessor.c:310
#5  0x08155c1b in dummy_start (data=0x8f9c308) at utils.c:968
#6  0xb7aaf4c0 in start_thread () from /lib/i686/cmov/libpthread.so.0
#7  0xb7cdf6de in clone () from /lib/i686/cmov/libc.so.6

bzw
Code:
(gdb) bt full
#0  0xb7c753b3 in strlen () from /lib/i686/cmov/libc.so.6
No symbol table info available.
#1  0xb71cf5be in transmit_state_notify (p=0x94022b8, state=<value optimized out>, full=1, timeout=0) at chan_sip.c:11188
        __old = 0x0
        __len = <value optimized out>
        caller = (struct ast_channel *) 0x9409938
        local_display = <value optimized out>
        local_target = 0xb7911d40 "sip:[email protected]"
        tmp = (struct ast_str *) 0xb7911d70
        from = "<sip:[email protected]\000;tag=1tz8d4fpxx", '\0' <repeats 217 times>
        to = "<sip:[email protected]", '\0' <repeats 233 times>
        c = 0xb7912fff "sip:[email protected]"
        req = {rlPart1 = 0, rlPart2 = 0, len = 426, headers = 12, method = 4, lines = 0, sdp_start = 0, sdp_count = 0, debug = 0 '\0', has_to_tag = 0 '\0',
  ignore = 0 '\0', header = {0, 43, 110, 128, 174, 218, 252, 288, 306, 340, 355, 398, 0 <repeats 52 times>}, line = {0 <repeats 64 times>},
  data = 0x946a170, socket = {type = 0, fd = 0, port = 0, tcptls_session = 0x0}, next = {next = 0x0}}
        hint = "SIP/11\000\214F\t(2\221▒&▒Ʒ\216\t▒▒▒\214F\t▒\214F\t▒\214F\t\006\000\000\000▒}\021\t\000\000\000\000▒>\v\b▒\214F\t\b\000\000\000\036\024\000\000▒}\021\t▒▒▒▒\000\000\000\000\000\000\000\000▒_"
        statestring = 0xb7206c9c "early"
        subscriptiontype = (const struct cfsubscription_types *) 0xb7217950
        local_state = NOTIFY_INUSE
        pidfstate = 0xb72083d0 "busy"
        pidfnote = 0xb7207260 "Ringing"
        __PRETTY_FUNCTION__ = "transmit_state_notify"
#2  0xb71cfab1 in cb_extensionstate (context=0x9458760 "isdn-in", exten=0x945bc7c "11", state=8, data=0x94022b8) at chan_sip.c:12775
        __PRETTY_FUNCTION__ = "cb_extensionstate"
#3  0x08107207 in handle_statechange (datap=0x9468d08) at pbx.c:3879
        cblist = (struct ast_state_cb *) 0x93ef400
        buf = "SIP/11\000▒\0303\221▒\001\000\000\000\201\000\000\000▒]▒▒\001\000\000\000\000\000\000\000▒﫷▒\037▒▒(3\221▒\036\024\000\000\000\000\000\000\001", '\0' <repeats 11 times>, "▒_շ\230▒▒\b▒▒▒\b(3\221▒"
        parse = <value optimized out>
        state = 8
        hint = (struct ast_hint *) 0x945bda0
#4  0x081495db in tps_processing_function (data=0x8f9c298) at taskprocessor.c:310
        t = (struct tps_task *) 0x9468d70
        size = 0
        __PRETTY_FUNCTION__ = "tps_processing_function"
#5  0x08155c1b in dummy_start (data=0x8f9c308) at utils.c:968
        __cancel_buf = {__cancel_jmp_buf = {{__cancel_jmp_buf = {150586136, 0, 0, -1215220792, 912711825, 1052248558}, __mask_was_saved = 0}}, __pad = {
    0xb7913490, 0x0, 0x0, 0x0}}
        not_first_call = <value optimized out>
        ret = <value optimized out>
#6  0xb7aaf4c0 in start_thread () from /lib/i686/cmov/libpthread.so.0
No symbol table info available.
#7  0xb7cdf6de in clone () from /lib/i686/cmov/libc.so.6
No symbol table info available.

meine sip.conf
Code:
[general]
port=5060
bindaddr=0.0.0.0	
language=de
disallow=all
allow=alaw
allowsubscribe = yes
notifyringing = yes
notifyhold = yes
limitonpeers = yes
notifycid=ignore-context

[11]	
host=dynamic
user=11
secret=1234		
type=friend
context=isdn-in
subscribecontext = isdn-in
call-limit = 10
callgroup = 2
pickupgroup = 2

[12]			
host=dynamic
user=12
secret=1234		
type=friend
context=isdn-in
subscribecontext = isdn-in
call-limit = 10
callgroup = 2
pickupgroup = 2

[13]			
host=dynamic
user=13
secret=1234		
type=friend
context=isdn-in
subscribecontext = isdn-in
call-limit = 10
callgroup = 2
pickupgroup = 2
meine capi.conf
Code:
[general]
; ----------------------------------------------
; /usr/lib/eicon/divas/chancapi.general
; ----------------------------------------------
nationalprefix=0        ; or for example "+49"
internationalprefix=00  ; or for example "+"
;subscriberprefix=+4969 ; prefix including area code (some lines need this)
rxgain=1.0       ;linear receive gain, 1.0 = no change, use Diva rxdgain and rxagc for gain control
txgain=1.0       ;linear transmit gain, 1.0 = no change, use Diva txdgain and txagc for gain control
language=de      ;set default language
;ulaw=yes        ;set this, if you live in u-law world instead of a-law

;jb.....         ;with Asterisk 1.4 you can configure jitterbuffer,
                 ;see Asterisk documentation for all jb* setting available.
;mohinterpret=default ;Asterisk 1.4: default music on hold class when placed on hold.


[ISDN1]
ntmode=no
isdnmode=msn
immediate=yes
incomingmsn=* ;Use Diva MSN settings
group=1
callgroup=2
pickupgroup=2
transfergroup=2
controller=1
softdtmf=off
relaxdtmf=off
faxdetect=off
faxdetecttime=0
accountcode=
context=isdn-in
holdtype=local
echocancelold=no
bridge=yes
devices=2
echocancel=yes
echocancelnlp=0
disallow=all
allow=alaw

[ISDN2]
ntmode=no
isdnmode=msn
immediate=yes
incomingmsn=* ;Use Diva MSN settings
group=1
callgroup=2
pickupgroup=2
transfergroup=2
controller=2
softdtmf=off
relaxdtmf=off
faxdetect=off
faxdetecttime=0
accountcode=
context=isdn-in
holdtype=local
echocancelold=no
bridge=yes
devices=2
echocancel=yes
echocancelnlp=0
disallow=all
allow=alaw

meine extensions.conf
Code:
[general]
language=de

[isdn-in]

; **** HINTS ****
exten => 11,hint,SIP/11
exten => 12,hint,SIP/12
exten => 13,hint,SIP/13

; **** Anrufe von und auf die SIP-Telefone ****
exten => _1X,1,Dial(SIP/${EXTEN})
exten => _1X,n,Hangup()

exten => meine MSN,1,Goto(11,1)

; **** Pickup *****
exten => _*8.,1,SET(GLOBAL(PICKUPMARK)=${EXTEN:2})
exten => _*8.,n,Pickup(${EXTEN:2}@PICKUPMARK)
 
Zuletzt bearbeitet:
Es scheint diese neue Funktion prüft nicht korrekt, ob ein Feld (in diesem Fall callerid-name) überhaupt gesetzt ist (was bei ISDN auch nicht der Fall ist).
Ich habe das in chan_capi jetzt mal auf ein leeres Feld gesetzt. Versuch es mal mit der aktuellen trunk Version aus dem SVN (rev 759).

Armin
 
Pickup funktioniert einwandfrei

Hallo Armin,

ich habe die rev 759 ausprobiert.
Pickup funktioniert jetzt einwandfrei. Kein Crash mehr.

Pickup funktioniert wie folgt
1) das Pickup wird an die Snoms signalisiert.
2) Als Callerid wird im Display angezeigt:

- "externe Callerid -> #klingelnde Extension"

Alles bestens.
Vielen Dank und Grüsse
Thomas
 

Zurzeit aktive Besucher

Neueste Beiträge

Statistik des Forums

Themen
246,273
Beiträge
2,249,292
Mitglieder
373,862
Neuestes Mitglied
904lte
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.