M66 How to receive DTMF Tone?


I want to receive dtmf code from phone. M66 dtmf detection opened with command “AT+QTONEDET=1\r\n” ( I called it 1 time in Init ). İ am providing voice communication between the m66 and the phone. After then, i am monitoring data from ı2s and uart. But i cant see ascii character. In addition, there are values in the 2000-5000 range when press phone keypad.

Is every tone undetectable or just individual tone that can’t be detected?

I can’t detect any tone. Yes, I2S sounds the values of tones, but I can not observe ASCII characters through UART.


Try the following. It works for me.

First send the following AT commands

Then call below API

#include “ril.h”
#include “ril_telephony.h”


void dtmfHandler(s32 dtmfCode, s32 timems) {
APP_DEBUG(“dtmf: %c \r\n”, dtmfCode);


Thank you for answer.

Where do you call this function “RIL_ToneDet_Open(dtmfHandler)”. So 1kHz interrupt, ı2s callback, init function.

Just call RIL_ToneDet_Open once during app init. After you accept an incoming call, dtmfHandler will be called automatically (when you generate dtmf from phone).