I have a problem with DTMF on SIM800L. Use arduino nano and SIM800L GPRS GSM module MicroSIM card core board quad band TTL serial port|porte gsm|gsm gprsgprs module - AliExpress .
Just enable DTMF on SIM800 with AT+DDET=1 and show all information from GSM modem to serial monitor. When I call and enter a digyts ftom phone, the modem happens to miss som digyts. For example, I press "2" several times and get half of those few presses. It's the same with the other numbers. I miss less often if I keep pressing a number for more time, but then it happen to receive it twice. To avoid a problem on the side of the Arduino, I attached an oscilloscope to the TX of the GSM module and made sure that I did not miss anything, just occasionally the GSM module does not send anything. I connect speaker to hear what happens on the DTMF, EVERY PRESS (tone) is heard but somehow with interference. I also connect a capacitor filter as described in modem specification (which I think was unnecessary), but unsuccessfully. The modem still miss to send or hear correct DTMF digits.
I have made some progress. When I specify to use only 2G network from the phone, DTMF works flawlessly.
If I turn off the Internet data from the phone, but the network is not set to use only 2G network, there is no result - the problem reappears. I'm not sure what the attitude is. It is likely that a channel for DTMF is created at a higher frequency (2100) which is not supported by the modem. It's weird if that's the case. Shouldn't a mobile operator make inquiries to the modems between which it builds a connection so that there are no inconsistencies or?