[Asterisk-video] Unable to complete negociation on 3G calls
Julien Leboeuf
jleboeuf at neocom.fr
Thu Jun 25 08:48:15 CDT 2009
Hello,
I'm also trying to set up a 3G-H324M gateway on Asterisk with fontventa
librairies but it doesn't seem to be willing to work.
Contacting you is kind of my last hope since I read almost every thing
there is to read on the subject..
My config is :
CentOS 5.3 x64, Asterisk 1.6.0.10 (amr + LLC patched), libpri 1.4.10
(LLC patched), last sources from fontventa, Digium Card TE420; 3G Phone
Nokia N70 (said to work)
In app_h324m.c, I commented "ast_cli_register(&cli_debug);" otherwise
segmentation fault on start.
In h324m.cpp, I also commented "TIFFReverseBits(buffer,len);" since it
makes asterisk crash at the beginning of a 3G call.
A shame since h245.log is a lot more talkative with TIFFRevers... on.
Sometimes at Asterisk startup, I get this message :
/usr/sbin/safe_asterisk: line 146: 30356 Segmentation Fault (core
dumped) nice -n $PRIORITY ${ASTSBINDIR}/asterisk -f ${CLIARGS}
${ASTARGS} >&/dev/${TTY} < /dev/${TTY}
Asterisk ended with exit status 139
Asterisk exited on signal 11.
Automatically restarting Asterisk.
mpg123: no process killed
....but Asterisk seems to work anyway.
My problem is that in h324m_loopback() funtion,
frame=H324MSessionGetFrame(id) always returns NULL, hence I got no
video, no audio...
Here is my PRI debug :
< Protocol Discriminator: Q.931 (8) len=41
< Call Ref: len= 2 (reference 3358/0xD1E) (Originator)
< Message type: SETUP (5)
< [04 03 88 90 a6]
< Bearer Capability (len= 5) [ Ext: 1 Q.931 Std: 0 Info transfer
capability: Unrestricted digital information (8)
< Ext: 1 Trans mode/rate: 64kbps,
circuit-mode (16)
< User information layer 1: H.223/H.245
Multimedia (38)
< [18 03 a9 83 82]
< Channel ID (len= 5) [ Ext: 1 IntID: Implicit PRI Spare: 0
Exclusive Dchan: 0
< ChanSel: As indicated in following octets
< Ext: 1 Coding: 0 Number Specified Channel Type: 3
< Ext: 1 Channel: 2 ]
< [6c 0b 21 83 36 36 34 37 39 32 39 30 34]
< Calling Number (len=13) [ Ext: 0 TON: National Number (2) NPI:
ISDN/Telephony Numbering Plan (E.164/E.163) (1)
< Presentation: Presentation allowed of
network provided number (3) '664792904' ]
< [70 05 81 33 30 30 37]
< Called Number (len= 7) [ Ext: 1 TON: Unknown Number Type (0) NPI:
ISDN/Telephony Numbering Plan (E.164/E.163) (1) '3007' ]
< [7c 03 88 90 a6]
< Low-layer Compatability (len= 5) [ Ext: 1 Q.931 Std: 0 Info transfer
capability: Unrestricted digital information (8)
< Ext: 1 Trans mode/rate: 64kbps,
circuit-mode (16)
< User information layer 1: H.223/H.245
Multimedia (38)
< [a1]
< Sending Complete (len= 1)
-- Making new call for cr 3358
-- Processing Q.931 Call Setup
-- Processing IE 4 (cs0, Bearer Capability)
-- Processing IE 24 (cs0, Channel Identification)
-- Processing IE 108 (cs0, Calling Party Number)
-- Processing IE 112 (cs0, Called Party Number)
-- Processing IE 124 (cs0, Low-layer Compatibility)
receive_low_layer_compatibility
LLC User layer 1: H.223/H.245 Multimedia (38)
-- Processing IE 161 (cs0, Sending Complete)
q931.c:3751 q931_receive: call 3358 on channel 2 enters state 6 (Call
Present)
q931.c:2998 q931_call_proceeding: call 3358 on channel 2 enters state 9
(Incoming Call Proceeding)
> Protocol Discriminator: Q.931 (8) len=10
> Call Ref: len= 2 (reference 3358/0xD1E) (Terminator)
> Message type: CALL PROCEEDING (2)
> [18 03 a9 83 82]
> Channel ID (len= 5) [ Ext: 1 IntID: Implicit PRI Spare: 0
Exclusive Dchan: 0
> ChanSel: As indicated in following octets
> Ext: 1 Coding: 0 Number Specified Channel
Type: 3
> Ext: 1 Channel: 2 ]
-- Accepting call from '+33664792904' to '3007' on channel 0/2, span 1
-- Executing [3007 at from-t2:1] Answer("DAHDI/2-1", "") in new stack
q931.c:3133 q931_connect: call 3358 on channel 2 enters state 8 (Connect
Request)
> Protocol Discriminator: Q.931 (8) len=10
> Call Ref: len= 2 (reference 3358/0xD1E) (Terminator)
> Message type: CONNECT (7)
> [18 03 a9 83 82]
> Channel ID (len= 5) [ Ext: 1 IntID: Implicit PRI Spare: 0
Exclusive Dchan: 0
> ChanSel: As indicated in following octets
> Ext: 1 Coding: 0 Number Specified Channel
Type: 3
> Ext: 1 Channel: 2 ]
-- Executing [3007 at from-t2:2] h324m_loopback("DAHDI/2-1", "") in new
stack
-- Session cree
-- Session initialisee
< Protocol Discriminator: Q.931 (8) len=5
< Call Ref: len= 2 (reference 3358/0xD1E) (Originator)
< Message type: CONNECT ACKNOWLEDGE (15)
q931.c:3911 q931_receive: call 3358 on channel 2 enters state 10 (Active)
-- Remote UNIX connection
-- Remote UNIX connection disconnected
-- Remote UNIX connection
-- Remote UNIX connection disconnected
< Protocol Discriminator: Q.931 (8) len=9
< Call Ref: len= 2 (reference 3358/0xD1E) (Originator)
< Message type: DISCONNECT (69)
< [08 02 87 90]
< Cause (len= 4) [ Ext: 1 Coding: CCITT (ITU) standard (0) Spare: 0
Location: International network (7)
< Ext: 1 Cause: Normal Clearing (16), class = Normal
Event (1) ]
-- Processing IE 8 (cs0, Cause)
q931.c:4026 q931_receive: call 3358 on channel 2 enters state 12
(Disconnect Indication)
-- Channel 0/2, span 1 got hangup request, cause 16
-- Session terminee
-- Session detruite
NEW_HANGUP DEBUG: Calling q931_hangup, ourstate Disconnect Indication,
peerstate Disconnect Request
q931.c:3149 q931_release: call 3358 on channel 2 enters state 19
(Release Request)
> Protocol Discriminator: Q.931 (8) len=9
> Call Ref: len= 2 (reference 3358/0xD1E) (Terminator)
> Message type: RELEASE (77)
> [08 02 81 90]
> Cause (len= 4) [ Ext: 1 Coding: CCITT (ITU) standard (0) Spare: 0
Location: Private network serving the local user (1)
> Ext: 1 Cause: Normal Clearing (16), class = Normal
Event (1) ]
-- Hungup 'DAHDI/2-1'
< Protocol Discriminator: Q.931 (8) len=5
< Call Ref: len= 2 (reference 3358/0xD1E) (Originator)
< Message type: RELEASE COMPLETE (90)
q931.c:3966 q931_receive: call 3358 on channel 2 enters state 0 (Null)
NEW_HANGUP DEBUG: Calling q931_hangup, ourstate Null, peerstate Null
NEW_HANGUP DEBUG: Destroying the call, ourstate Null, peerstate Null
I don't get disconnected automatically, I hangup myself... the phone is
waiting video endlessly.
Here is my dialplan :
exten => _3007,1,Answer()
exten => _3007,n,h324m_loopback()
exten => _3007,n,HangUp()
I also tried h324m_gw_answer() and videoloopback(), but it gets blocked
at h324m_gw_answer().
Here, my h245.log :
-Init call
-Sending
request terminalCapabilitySet {
sequenceNumber = 1
protocolIdentifier = 0.0.8.245.0.8
multiplexCapability = h223Capability {
transportWithI_frames = FALSE
videoWithAL1 = FALSE
videoWithAL2 = TRUE
videoWithAL3 = FALSE
audioWithAL1 = FALSE
audioWithAL2 = TRUE
audioWithAL3 = FALSE
dataWithAL1 = FALSE
dataWithAL2 = FALSE
dataWithAL3 = FALSE
maximumAl2SDUSize = 1120
maximumAl3SDUSize = 1120
maximumDelayJitter = 0
h223MultiplexTableCapability = basic <<null>>
maxMUXPDUSizeCapability = FALSE
nsrpSupport = TRUE
mobileOperationTransmitCapability = {
modeChangeCapability = FALSE
h223AnnexA = FALSE
h223AnnexADoubleFlag = FALSE
h223AnnexB = TRUE
h223AnnexBwithHeader = FALSE
}
}
capabilityTable = 4 entries {
[0]={
capabilityTableEntryNumber = 1
capability = receiveAndTransmitVideoCapability
h263VideoCapability {
qcifMPI = 2
maxBitRate = 520
unrestrictedVector = FALSE
arithmeticCoding = FALSE
advancedPrediction = FALSE
pbFrames = FALSE
temporalSpatialTradeOffCapability = FALSE
errorCompensation = FALSE
}
}
[1]={
capabilityTableEntryNumber = 2
capability = receiveAndTransmitAudioCapability
genericAudioCapability {
capabilityIdentifier = standard 0.0.8.245.1.1.1
maxBitRate = 122
collapsing = 1 entries {
[0]={
parameterIdentifier = standard 0
parameterValue = unsignedMin 1
}
}
}
}
[2]={
capabilityTableEntryNumber = 3
capability = receiveAndTransmitAudioCapability g7231 {
maxAl_sduAudioFrames = 1
silenceSuppression = TRUE
}
}
[3]={
capabilityTableEntryNumber = 4
capability = receiveAndTransmitUserInputCapability iA5String
<<null>>
}
}
capabilityDescriptors = 1 entries {
[0]={
capabilityDescriptorNumber = 1
simultaneousCapabilities = 2 entries {
[0]=1 entries {
[0]=1
}
[1]=2 entries {
[0]=2
[1]=3
}
}
}
}
}
But with TIFFReverse on, the log like more like this :
[......]
indication vendorIdentification {
vendor = h221NonStandard {
t35CountryCode = 60
t35Extension = 0
manufacturerCode = 0
}
productNumber = 14 octets {
52 4d 2d 38 34 20 28 43 29 4e 6f 6b 69 00 RM-84 (C)Noki.
}
versionNumber = 21 octets {
56 20 33 2e 30 35 34 36 2e 32 2e 20 31 38 2d 31 V 3.0546.2.
18-1
31 2d 30 35 00 1-05.
}
}^M
request masterSlaveDetermination {
terminalType = 128
statusDeterminationNumber = 16370119
}^M
response terminalCapabilitySetAck {
sequenceNumber = 1
}^M
-SendClosingFlag^M
SRP_NSRP_RESPONSE
-SendClosingFlag^M
SRP_NSRP_RESPONSE
-SendClosingFlag^M
SRP_NSRP_RESPONSE
-SendClosingFlag^M
SRP_NSRP_RESPONSE
-SendClosingFlag^M
SRP_NSRP_RESPONSE
-Sending
request masterSlaveDetermination {
terminalType = 160
statusDeterminationNumber = 3321781
}^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
SRP_SRP_COMMAND
Retransmission
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
SRP_SRP_COMMAND
Retransmission
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
SRP_NSRP_RESPONSE
-SendClosingFlag^M
SRP_NSRP_RESPONSE
-SendClosingFlag^M
SRP_NSRP_RESPONSE
-SendClosingFlag^M
SRP_NSRP_RESPONSE
-Sending
response terminalCapabilitySetAck {
sequenceNumber = 1
}^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
SRP_SRP_COMMAND
response masterSlaveDeterminationAck {
decision = master <<null>>
}^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
-SendClosingFlag^M
[....]
till the crash of *...
And last thing.. during a call :
*CLI> core show channel DAHDI/3-1
-- General --
Name: DAHDI/3-1
Type: DAHDI
UniqueID: 1245937556.2
Caller ID: +33664792904
Caller ID Name: (N/A)
DNID Digits: 3007
Language: fr
State: Up (6)
Rings: 1
NativeFormats: 0x44 (ulaw|slin)
WriteFormat: 0x4 (ulaw)
ReadFormat: 0x4 (ulaw)
WriteTranscode: No
ReadTranscode: No
1st File Descriptor: 17
Frames in: 497
Frames out: 496
Time to Hangup: 0
Elapsed Time: 0h0m10s
Direct Bridge: <none>
Indirect Bridge: <none>
-- PBX --
Context: from-t2
Extension: 3007
Priority: 2
Call Group: 0
Pickup Group: 0
Application: h324m_loopback
Data: (Empty)
Blocking in: ast_waitfor_nandfds
Variables:
CALLEDTON=1
ANI2=0
TRANSFERCAPABILITY=DIGITAL
CDR Variables:
level 1: clid=+33664792904
level 1: src=+33664792904
level 1: dst=3007
level 1: dcontext=from-t2
level 1: channel=DAHDI/3-1
level 1: lastapp=h324m_loopback
level 1: start=2009-06-25 15:45:56
level 1: answer=2009-06-25 15:45:56
level 1: duration=9
level 1: billsec=9
level 1: disposition=ANSWERED
level 1: amaflags=DOCUMENTATION
level 1: uniqueid=1245937556.2
Can you catch something wrong ? What should I do ? Is using Asterisk
1.6.0.10 version, an hopeless choice ? or Centos x64 ?
I saw people succeding with the same Digium Card or with an Asterisk 1.6...
Thanks in advance.
More information about the asterisk-video
mailing list