RFC2833 DTMF volume problem

Hello Forum,

I’m using Asterisk 16 (Debian 10) and encounter a strange DTMF issue that I can’t solve.

The setup:
Server with Dialogic card generating DTMF <- ISDN -> Patton SmartNode <- SIP -> Asterisk

The behaviour is the same for all generated telephone-events:
the telephone-event coming from the Smartnode has a volume of five:

RFC 2833 RTP Event
  Event ID: DTMF Zero 0 (0)
  0... .... = End of Event: False
  .0.. .... = Reserved: False
  ..00 0101 = Volume: 5
  Event Duration: 440

When Asterisk is sending this event to our provider the Volume has been changed to 10:

RFC 2833 RTP Event
  Event ID: DTMF Zero 0 (0)
  0... .... = End of Event: False
  .0.. .... = Reserved: False
  ..00 0101 = Volume: 10
  Event Duration: 800

I read in another post that the volume is hardcoded in Asterisk. I tried changing the e_vol variable in

.../pjmedia/streams.c

but the volume inside the package trace is still 10.

Can you please give me a hint where to modify the DTMF volume or convince asterisk to keep the DTMF volume of the original package?

Thanks a lot in advance,
Martin

Asterisk does not forward volume information with the DTMF digit. DTMF packets are produced in res_rtp_asterisk in the DTMF functions[1]. I do not know what to modify to influence the volume.

[1] https://github.com/asterisk/asterisk/blob/master/res/res_rtp_asterisk.c#L3941

1 Like

It’s no problem to use a hardcoded value but I would be glad when I could raise it to at least five to probably solve an issue with DTMF transmission. Thanks a lot for the link bit I also could not identify a value that sounds like volume.

Hello,

I found it, it is the bitshift

( 0xa << 16 )

Modifying this to

( 0x5 << 16 )

solves my problem. Thanks a lot for pointing me to the right file.

Martin

1 Like