Emergency DTMF help needed

I have my asterisk up and running smoothly. However, I have set up a system whereby a user from Italy can call a local number there and that connects (via SIP) to my Asterisk box here in the US. I have also set up DISA so that they can then dial a local number here. However, I notice that the DTMF tones are not recognized properly – for example: when they enter the password, i.e., 8497, the Asterisk sees it as 884497 and authentication fails.

I don’t have this problem for callers from the US.

Anyone have any idea what I might do to correct this? I’ve changed the codecs allowed among all available – gsm, or inband, or rfc2833 – but that doesn’t seem to work.

Any suggestions greatly appreciated.l

first off, a codec is a way of compressing voice. Options are (among others) alaw, ulaw, ilbc, g729, etc.

DTMFmode is how SIP transmits DTMF (dialing) tones. Choices are Inband (sends tones as sound in the audio stream; only works with ulaw or alaw codec), RFC2833 (tones are sent along with audio as RTP data), or Info (tones are sent as SIP INFO messages along the control channel).

You almost never want the dtmfmode to be inband, becuase the tones are subject to audio degredation. Any codec other than ulaw or alaw will degrade the tones, making them useless.

In my experience Info works best with Asterisk, but not all providers support it. If setting dtmfmode=info makes it stop recognizing dtmf at all, then your provider doesnt support sip info.

FYI, you probably have it set to RFC. Quick question- are you running an older version of asterisk (1.0.x)? If so, upgrade to 1.2. However, the problem could also be with your voip provider in italy.

IronHelix, thanks for your informative reply and clearing up the codecs vs. dtmf issue.

I appreciate it.

Well, I think this must be an issue with the provider in Italy, although this is the second time I’ve had such issues with Italian providers, first with mytcom.it and now with messagenet.it. Since I don’t speak Italian, it is difficult sometimes to communicate with them about my needs. Oh well. Such is life.

I am running CVS Head built on 2005-10-07. No mention of “version” when I type “show version” on the CLI.

I like to use CVS Head because it has features I need (such as MeetMe features which seems lacking in the stable versions).

So what “version” is Head? Or is it versionless?



Head (now Trunk since they switched to SVN) isn’t a version at all. It is their current internal version, and as bugfixes and features and other contributions are added to the code, the changes go into HEAD/trunk. Once they think they got it working right, they take a copy of the current HEAD/trunk, and assign a tag to it like 1.2.0. They then make a tar.gz package out of that code and upload it to FTP. You can get the same code by asking CVS or SVN for a particular version number, it stores every change ever made to the code. (for example, if you wanted to download asterisk as it was two weeks before 1.0.0 was released, CVS/SVN would let you have it)

Asterisk is still under heavy development and alot has changed even in two months. Stable version 1.2.1 was just released (days ago), I suggest giving it a shot. Remember, you may have to clear out module folders (/var/lib/asterisk/modules and /var/include/asterisk as i recall) before you switch to stable, not sure if that applies for switching to 1.2 stable.

Personally, I’ve found SIP INFO to be the most reliable method of transmitting DTMF tones. See if your provider(s) are willing to switch you to SIP INFO.


That’s very useful information.

I’ll give it a try.