Hi, I would very much appreciate some assistance if you can please.
I am trying to test T.38 passthrough with Asterisk 15.1.0 (distributed with FreePBX 14) using two Voip Fax endpoints. The clients that I am using are this product: http://www.t38faxvoip.com/fsp/ (Fax Voip Windows Fax Service Provider).
However, I am having troubles with the receiving client having its T.38 Reinvites being rejected by asterisk.
Here’s the packet no 22 from the receiver trace (see below).
Session Description Protocol
Session Description Protocol Version (v): 0
Owner/Creator, Session Id (o): - 1510559297 2 IN IP4 192.168.90.15
Session Name (s): FaxVoip FSP 2.2.1
Connection Information (c): IN IP4 192.168.90.15
Time Description, active time (t): 0 0
Media Description, name and address (m): image 5022 udptl t38
Media Attribute (a): sendrecv
Media Attribute (a): T38FaxVersion:0
Media Attribute (a): T38FaxRateManagement:transferredTCF
Media Attribute (a): T38FaxMaxBuffer:2000
Media Attribute (a): T38FaxMaxDatagram:1400
Media Attribute (a): T38FaxUdpEC:t38UDPRedundancy
Media Attribute (a): T38MaxBitRate:14400
In response at packet no 28 on receiver (from asterisk) is:
Session Initiation Protocol (488)
Status-Line: SIP/2.0 488 Not Acceptable Here
Message Header
Unfortunately this forum doesn’t allow me to attach the packet capture traces to show full context, so I will just post as text exported from wireshark.
The sender packet trace shown following:
No. Time Source Destination Protocol Length Info
1 0.000000 192.168.90.131 192.168.2.92 SIP 522 Request: OPTIONS sip:703@192.168.2.92:54106;rinstance=6c1278869d03f439 |
2 0.014320 192.168.2.92 192.168.90.131 SIP 647 Status: 200 OK |
3 4.918660 192.168.2.92 192.168.90.131 UDP 46 54106 → 5060 Len=4
4 20.708163 192.168.2.92 192.168.90.131 SIP/SDP 975 Request: INVITE sip:765@192.168.90.131 |
5 20.711369 192.168.90.131 192.168.2.92 SIP 633 Status: 401 Unauthorized |
6 20.712473 192.168.2.92 192.168.90.131 SIP 451 Request: ACK sip:765@192.168.90.131 |
7 20.713754 192.168.2.92 192.168.90.131 SIP/SDP 1271 Request: INVITE sip:765@192.168.90.131 |
8 20.717229 192.168.90.131 192.168.2.92 SIP 432 Status: 100 Trying |
9 21.409697 192.168.90.131 192.168.2.92 SIP 674 Status: 180 Ringing |
10 21.427231 192.168.90.131 192.168.2.92 SIP 674 Status: 180 Ringing |
11 21.714250 192.168.90.131 192.168.2.92 SIP/SDP 1007 Status: 200 OK |
12 21.724623 192.168.2.92 192.168.90.131 SIP 794 Request: ACK sip:192.168.90.131:5060 |
13 21.731808 192.168.90.131 192.168.2.92 SIP/SDP 1046 Request: INVITE sip:764@192.168.2.92:5069, in-dialog |
14 21.733323 192.168.2.92 192.168.90.131 SIP 449 Status: 100 Trying |
15 21.736443 192.168.2.92 192.168.90.131 RTP 214 PT=ITU-T G.711 PCMU, SSRC=0xFCF5D408, Seq=32268, Time=0
16 21.737826 192.168.2.92 192.168.90.131 SIP/SDP 1288 Request: INVITE sip:192.168.90.131:5060, in-dialog |
17 21.739013 192.168.2.92 192.168.90.131 SIP 458 Status: 491 Request Pending |
18 21.747916 192.168.90.131 192.168.2.92 SIP 505 Status: 491 Another INVITE transaction in progress |
19 21.748911 192.168.2.92 192.168.90.131 SIP 742 Request: ACK sip:192.168.90.131:5060 |
20 21.749688 192.168.90.131 192.168.2.92 SIP 491 Request: ACK sip:764@192.168.2.92:5069 |
21 21.755807 192.168.2.92 192.168.90.131 RTP 214 PT=ITU-T G.711 PCMU, SSRC=0xFCF5D408, Seq=32269, Time=160
22 21.776123 192.168.2.92 192.168.90.131 RTP 214 PT=ITU-T G.711 PCMU, SSRC=0xFCF5D408, Seq=32270, Time=320
23 21.796116 192.168.2.92 192.168.90.131 RTP 214 PT=ITU-T G.711 PCMU, SSRC=0xFCF5D408, Seq=32271, Time=480
24 21.815312 192.168.90.131 192.168.2.92 RTP 214 PT=ITU-T G.711 PCMU, SSRC=0x32E62899, Seq=23120, Time=0
...
34 21.915776 192.168.2.92 192.168.90.131 RTP 214 PT=ITU-T G.711 PCMU, SSRC=0xFCF5D408, Seq=32277, Time=1440
35 21.924522 192.168.90.131 192.168.2.92 SIP/SDP 1066 Request: INVITE sip:764@192.168.2.92:5069, in-dialog |
36 21.925849 192.168.2.92 192.168.90.131 SIP 449 Status: 100 Trying |
37 21.942354 192.168.2.92 192.168.90.131 T.38 48 UDP: UDPTLPacket Seq=00000 t30ind: no-signal
38 21.947057 192.168.2.92 192.168.90.131 SIP/SDP 971 Status: 200 OK |
39 22.142392 192.168.2.92 192.168.90.131 T.38 50 UDP: UDPTLPacket Seq=00001 t30ind: cng
40 22.192808 192.168.2.92 192.168.90.131 T.38 50 UDP: UDPTLPacket Seq=00001 t30ind: cng
41 22.263277 192.168.2.92 192.168.90.131 T.38 50 UDP: UDPTLPacket Seq=00001 t30ind: cng
42 22.313822 192.168.2.92 192.168.90.131 T.38 50 UDP: UDPTLPacket Seq=00001 t30ind: cng
43 22.364012 192.168.2.92 192.168.90.131 T.38 50 UDP: UDPTLPacket Seq=00001 t30ind: cng
44 22.415204 192.168.2.92 192.168.90.131 T.38 48 UDP: UDPTLPacket Seq=00001 t30ind: cng
45 22.447715 192.168.2.92 192.168.90.131 SIP/SDP 970 Status: 200 OK |
46 23.448397 192.168.2.92 192.168.90.131 SIP/SDP 970 Status: 200 OK |
47 25.460571 192.168.2.92 192.168.90.131 SIP/SDP 970 Status: 200 OK |
48 26.738044 192.168.90.131 192.168.2.92 RTCP 142 Sender Report Source description
49 29.459377 192.168.2.92 192.168.90.131 SIP/SDP 970 Status: 200 OK |
50 31.738192 192.168.90.131 192.168.2.92 RTCP 122 Receiver Report Source description
51 33.459086 192.168.2.92 192.168.90.131 SIP/SDP 970 Status: 200 OK |
52 34.922109 192.168.2.92 192.168.90.131 UDP 46 54106 → 5060 Len=4
53 36.738480 192.168.90.131 192.168.2.92 RTCP 122 Receiver Report Source description
54 37.457872 192.168.2.92 192.168.90.131 SIP/SDP 970 Status: 200 OK |
55 39.592796 192.168.2.92 192.168.90.131 SIP 901 Request: REGISTER sip:192.168.90.131 (1 binding) |
56 39.596166 192.168.90.131 192.168.2.92 SIP 634 Status: 401 Unauthorized |
57 39.600421 192.168.2.92 192.168.90.131 SIP 901 Request: REGISTER sip:192.168.90.131 (1 binding) |
58 39.604890 192.168.90.131 192.168.2.92 SIP 567 Status: 200 OK (1 binding) |
59 41.458583 192.168.2.92 192.168.90.131 SIP/SDP 970 Status: 200 OK |
60 41.738351 192.168.90.131 192.168.2.92 RTCP 122 Receiver Report Source description
61 45.457570 192.168.2.92 192.168.90.131 SIP/SDP 970 Status: 200 OK |
62 46.738726 192.168.90.131 192.168.2.92 RTCP 122 Receiver Report Source description
63 49.457406 192.168.2.92 192.168.90.131 SIP/SDP 970 Status: 200 OK |
64 50.785019 192.168.90.131 192.168.2.92 SIP 467 Request: OPTIONS sip:764@192.168.2.92:5069 |
65 50.789902 192.168.2.92 192.168.90.131 SIP 475 Status: 200 OK |
66 51.739880 192.168.90.131 192.168.2.92 RTCP 122 Receiver Report Source description
67 53.456803 192.168.2.92 192.168.90.131 SIP/SDP 970 Status: 200 OK |
68 53.941521 192.168.2.92 192.168.90.131 SIP 857 Request: BYE sip:192.168.90.131:5060 |
69 53.945587 192.168.90.131 192.168.2.92 SIP 466 Status: 200 OK |
70 56.738774 192.168.90.131 192.168.2.92 RTCP 122 Receiver Report Source description
71 59.999274 192.168.90.131 192.168.2.92 SIP 522 Request: OPTIONS sip:703@192.168.2.92:54106;rinstance=6c1278869d03f439 |
And the receiver packet capture in this image:
No. Time Source Destination Protocol Length Info
1 0.000000 192.168.90.131 192.168.90.15 SIP/SDP 1102 Request: INVITE sip:765@192.168.90.15:5069 |
2 0.001203 192.168.90.15 192.168.90.131 SIP 384 Status: 100 Trying |
3 0.011687 192.168.90.15 192.168.90.131 SIP 675 Status: 180 Ringing |
4 0.012359 192.168.90.131 192.168.90.15 SIP 502 Request: PRACK sip:765@192.168.90.15:5069 |
5 0.013121 192.168.90.15 192.168.90.131 SIP 391 Status: 200 OK |
6 0.297451 192.168.90.15 192.168.90.131 SIP/SDP 897 Status: 200 OK |
7 0.298324 192.168.90.131 192.168.90.15 SIP 468 Request: ACK sip:765@192.168.90.15:5069 |
8 0.324468 192.168.90.131 192.168.90.15 RTP 214 PT=ITU-T G.711 PCMU, SSRC=0x7B3F4121, Seq=26044, Time=0
9 0.343582 192.168.90.131 192.168.90.15 RTP 214 PT=ITU-T G.711 PCMU, SSRC=0x7B3F4121, Seq=26045, Time=160
...
21 0.484076 192.168.90.131 192.168.90.15 RTP 214 PT=ITU-T G.711 PCMU, SSRC=0x7B3F4121, Seq=26052, Time=1280
22 0.505251 192.168.90.15 192.168.90.131 SIP/SDP 993 Request: INVITE sip:asterisk@192.168.90.131:5060, in-dialog |
23 0.505317 192.168.90.131 192.168.90.15 T.38 214 UDP: UDPTLPacket Seq=32768 data:v27-4800:[UNKNOWN PER: too long integer(per_normally_small_nonnegative_whole_number)][Malformed Packet]
24 1.006349 192.168.90.15 192.168.90.131 SIP/SDP 993 Request: INVITE sip:asterisk@192.168.90.131:5060, in-dialog |
25 2.007111 192.168.90.15 192.168.90.131 SIP/SDP 993 Request: INVITE sip:asterisk@192.168.90.131:5060, in-dialog |
26 4.007732 192.168.90.15 192.168.90.131 SIP/SDP 993 Request: INVITE sip:asterisk@192.168.90.131:5060, in-dialog |
27 5.323627 192.168.90.131 192.168.90.15 RTCP 142 Sender Report Source description
28 5.506452 192.168.90.131 192.168.90.15 SIP 741 Status: 488 Not Acceptable Here |
29 5.507823 192.168.90.15 192.168.90.131 SIP 430 Request: ACK sip:asterisk@192.168.90.131:5060 |
30 5.514103 192.168.90.15 192.168.90.131 SIP/SDP 926 Request: INVITE sip:asterisk@192.168.90.131:5060, in-dialog |
31 6.013892 192.168.90.15 192.168.90.131 SIP/SDP 926 Request: INVITE sip:asterisk@192.168.90.131:5060, in-dialog |
32 7.039049 192.168.90.15 192.168.90.131 SIP/SDP 926 Request: INVITE sip:asterisk@192.168.90.131:5060, in-dialog |
33 9.038782 192.168.90.15 192.168.90.131 SIP/SDP 926 Request: INVITE sip:asterisk@192.168.90.131:5060, in-dialog |
34 10.323800 192.168.90.131 192.168.90.15 RTCP 122 Receiver Report Source description
35 10.515670 192.168.90.131 192.168.90.15 SIP 741 Status: 488 Not Acceptable Here |
36 10.517083 192.168.90.15 192.168.90.131 SIP 430 Request: ACK sip:asterisk@192.168.90.131:5060 |
37 15.323931 192.168.90.131 192.168.90.15 RTCP 122 Receiver Report Source description
38 19.900090 192.168.90.15 192.168.90.131 SIP 932 Request: REGISTER sip:192.168.90.131 (1 binding) |
39 19.900906 192.168.90.131 192.168.90.15 SIP 628 Status: 401 Unauthorized |
40 19.902874 192.168.90.15 192.168.90.131 SIP 932 Request: REGISTER sip:192.168.90.131 (1 binding) |
41 19.904930 192.168.90.131 192.168.90.15 SIP 562 Status: 200 OK (1 binding) |
42 20.324075 192.168.90.131 192.168.90.15 RTCP 122 Receiver Report Source description
43 25.324189 192.168.90.131 192.168.90.15 RTCP 122 Receiver Report Source description
44 25.484609 192.168.90.131 192.168.90.15 SIP 468 Request: OPTIONS sip:765@192.168.90.15:5069 |
45 25.485935 192.168.90.15 192.168.90.131 SIP 476 Status: 200 OK |
46 30.324322 192.168.90.131 192.168.90.15 RTCP 122 Receiver Report Source description
47 32.532417 192.168.90.131 192.168.90.15 SIP 492 Request: BYE sip:765@192.168.90.15:5069 |
48 32.533021 192.168.90.15 192.168.90.131 SIP 389 Status: 200 OK |
For interpreting the packet captures:
192.168.2.92 is the sender T.38 fax client
192.168.90.131 is the asterisk server
192.168.90.15 is the receiver T.38 fax client
The receiving fax client is configured to send a T.38 reinvite once it receives the CNG (Calling Fax Tone).
Note: Although I am using FreePBX I am directly working on the asterisk config (as I have shut down the amportal so it is no longer in control of the config files). (The reason I did this is that FreePBX provides no access (that I can see) to modify the t38_* attributes for endpoints although it does for trunks via its web UI - I think that is a separate matter).
Here is the relavant endpoint fragments included into pjsip.conf:
[765]
type=endpoint
aors=765
auth=765-auth
allow=ulaw,alaw,gsm,g726,g722
context=from-internal
callerid=765 <765>
dtmf_mode=rfc4733
aggregate_mwi=yes
use_avpf=no
rtcp_mux=no
ice_support=no
media_use_received_transport=no
trust_id_inbound=yes
timers=yes
media_encryption_optimistic=no
send_pai=yes
rtp_symmetric=yes
rewrite_contact=yes
force_rport=yes
language=en
t38_udptl=yes
t38_udptl_ec=redundancy
fax_detect=no
t38_udptl_nat=yes
[764]
type=endpoint
aors=764
auth=764-auth
allow=ulaw,alaw,gsm,g726,g722
context=from-internal
callerid=764 <764>
dtmf_mode=rfc4733
aggregate_mwi=yes
use_avpf=no
rtcp_mux=no
ice_support=no
media_use_received_transport=no
trust_id_inbound=yes
timers=yes
media_encryption_optimistic=no
send_pai=yes
rtp_symmetric=yes
rewrite_contact=yes
force_rport=yes
language=en
t38_udptl=yes
t38_udptl_ec=redundancy
fax_detect=no
t38_udptl_nat=yes
Here’s the output in a text file: “pjsip show endpoint config.txt”. (Ok, since I’m a new user the site will not allow me to upload the attachment)
Anyway, there it shows the values have been successfully loaded.
t38_udptl : true
t38_udptl_ec : redundancy
t38_udptl_ipv6 : false
t38_udptl_maxdatagram : 0
t38_udptl_nat : true
In udptl.conf I have the following:
[general]
udptlstart=16000
udptlend=65000
T38FaxUdpEC=t38UDPRedundancy
t38pt_udptl=yes
The following shows that the above udptl.conf is completely ignored. I do not know if this is critical to passthrough via PJSIP?
freepbx*CLI> udptl show config
UDPTL Global options
udptlstart: 4000
udptlend: 4999
udptlfecentries: 0
udptlfecspan: 0
use_even_ports: No
udptlchecksums: Yes
I found this in udptl.c (which is still the same on current master):
- Asterisk supports T.38 fax passthrough, origination and termination. It does
- not support gateway operation. The only channel driver that supports T.38 at
- this time is chan_sip.
I do not know whether to believe this since it may be outdated? There are instructions for using PJSIP with T.38 and asterisk here (in addition to chan_sip):
http://support.t38fax.com/support/solutions/articles/19000008280-asterisk
Anyway, there are a few issues here and I must say I’ve been looking at this all for some days and I’m at the end and really need some help please.
Thanks
Jared