diff --git a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c
index ca60e30352..3d2a23ceef 100755
--- a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c
+++ b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c
@@ -1721,8 +1721,8 @@ static FIO_CHANNEL_DESTROY_FUNCTION(wanpipe_channel_destroy)
 		/* enable HW DTMF. As odd as it seems. Why enable when the channel is being destroyed and won't be used anymore?
 		 * because that way we can transfer the DTMF state back to the driver, if we're being restarted we will set again
 		 * the FEATURE_DTMF flag and use HW DTMF, if we don't enable here, then on module restart we won't see
-		 * HW DTMF available and will use software */
-		if (ftdm_channel_test_feature(ftdmchan, FTDM_CHANNEL_FEATURE_DTMF_DETECT)) {
+		 * HW DTMF available and will use software (except for GSM cards which enable hw dtmf on the signaling module) */
+		if (ftdmchan->span->trunk_type != FTDM_TRUNK_GSM && ftdm_channel_test_feature(ftdmchan, FTDM_CHANNEL_FEATURE_DTMF_DETECT)) {
 			wanpipe_tdm_api_t tdm_api;
 			int err;
 			memset(&tdm_api, 0, sizeof(tdm_api));