DTMF not detected and false capturing

I am doing a project where user will press 1-0 & * , # buttons during call and Quetel M66 has to utilize the button presses for the functioning using DTMF tone detection.

I tried using s32 RIL_ToneDet_Open( CB_ToneDet cb_ToneDet_hdl ) function where Detected DTMF’s are dealt inside the cb_ToneDet_hdl function.

`s32 RIL_ToneDet_Open( CB_ToneDet cb_ToneDet_hdl )
s32 ret = RIL_AT_FAILED;
char strAT[200];

callback_ToneDet = cb_ToneDet_hdl;

Ql_memset(strAT, 0, sizeof(strAT));
Ql_sprintf(strAT, "AT+QTONEDET=1\r\n");
ret = Ql_RIL_SendATCmd( strAT, Ql_strlen(strAT), NULL, NULL, 0 ) ;
RIL_DTMF_DEBUG( DBG_Buffer, "<-- Send AT:%s, ret = %d -->\r\n", strAT, ret );

return ret;


There are 2 issues I am facing currently with this :

  1. There are false DTMF codes detected particularly 57(9) and 70(2300Hz frequency) when no keys are pressed. These DTMF are detected after 2-3 seconds of playing an audio .amr file, which stops the playing file.

  2. The *(42) and #(35) key presses from user are not captured by module even when DTMF detection is ON. These 2 keys are not detected by M66 . Other keys 1 to 0 are detected seamlessly :

I want to make use of * as well as # key.

I am new to the field of DTMF and IVRS, and I didn’t get whatever has mentioned in the User manual of AT commands given by Quectel regarding 1400Hz and 2300Hz and different Modes of AT+QTONEDET command.

Can anyone explain in brief as well as guide me in order to move ahead with the issues?

Could you tell me the software version of the module?(excute ATI to check)
1)Are * and # undetectable every time?
2)Is playing AMR audio files performed on the module side?

I will inform you the version of software on the module shortly.

1)Yes , * and # are undetectable every time I use the module.
2) Yes the AMR audio files are playing on Module side.

Application : IVRS based Motor ON/OFF control using Quectel M66

So whenever user calls , the Module picks up the call and plays the audio AMR file which I have
put in it. But suddenly, DTMF 70(Related to 2300Hz) as well as DTMF 57(DTMF of button ‘9’) are randomly captured by module and it creates false presses which user didn’t press or intended.
I have also utilized button press ‘9’ for an activity as part of Motor ON/OFF control, so it gets triggered without User’s press when automatic DTMF of 9 and 2300 Hz are captured by module.

I have used a module of M66 for testing, and the problem has not been reproduced, * and # all can be detected.
I suggest that you can use the mobile phone and M66 module to establish a call to do the test,If this works,please check if the * and # pressed by the user is actually issued or not.

Hello, Thanks for confirmation.
I have my mobile phone for testing . I call to the module and I tried pressing 1 to 0 buttons, here each button press is captured in DTMF tone.
Although * and # presses , which are pressed on mobile phone(Appear on the screen after typing), are not captured via DTMF tone detection function of M66.
Will you share what method / function did you use to program the M66 in order to detect the DTMF tones?
I have used the function mentioned in the first post (above) related to this issue.

I have mailed regarding the same to the local Quectel Support here.

Thank you.

Depending on the method you use, that should be fine.And you also have this problem by use the mobile phone and M66 module to establish a call to do the test,The software version of the module may be required. I can use the same version as yours for testing.
You can also directly communicate with our local technical support, their support is more convenient. :slightly_smiling_face:

1 Like

Module hardware:

Module Firmware on which I am programming currently:
M66FAR02A07BT (Given By quectel)

What AT commands do you set/Send in order to start DTMF tone detection on Your side?
Please Provide the Commands and how to use them in order to set the module in the same configuration as yours.

Thank you

I use the same software version as yours to set up a call between the module and the phone. The phone sends * and #, and the module can detect it.
I only set at+qdonedet=1 on the module side.

YES, Even I am sending “AT + QTONEDET = 1”.
Don’t know what’s the issue.
One thing I can confirm is that this is not an issue on Mobile phone as I used 4-5 different mobile phones to check if * and # are detected or not, the module does not detect them during any of the mobile calls.

You can try updating the software version(M66FAR02A07BT) and then just set at+qtonedet=1.
Then set up a call between the phone and the module and do the test.
If the module still cannot detect * and #, it is suggested that you can grab the log and send it to the local technical support.

Will you please guide me about how to update the software Version(M66FAR02A07BT)?

Thank you.

I have sent the software package and method to you by email, please check the email,thanks.

1 Like

Yes, you can try once by updating the software, hope that works! You can also visit reliance electric motor.

Hello, I am also facing similar issue.
Key 2 is been detected pressed in DTMF while playing an .AMR file causing to change the menu automatically.
Kindly Help.