diff --git a/channels/chan_brcm.c b/channels/chan_brcm.c
index 5a59a9b4cbe8fc9bfb63612da0ada223ca5042d9..303868295b9b76856146026d2780ac7d1cc13b4b 100644
--- a/channels/chan_brcm.c
+++ b/channels/chan_brcm.c
@@ -2005,6 +2005,7 @@ static int handle_dialtone_timeout(const void *data)
 			case DIALTONE_SPECIAL_CONDITION:
 			case DIALTONE_CONGESTION:
 			case DIALTONE_MWI_OFF:
+				// Include all 4 dial tones available for asterisk.set1.mwi_dialtone_state
 				p->dialtone = DIALTONE_UNOBTAINABLE;
 				p->dialtone_timeout_timer_id = ast_sched_add(sched, s->offhook_nu_timeoutmsec, handle_dialtone_timeout, p);
 				break;
@@ -2364,6 +2365,10 @@ static void handle_hookflash(struct brcm_subchannel *sub, struct brcm_subchannel
 			p->hf_detected = 0;
 			return;
 		}
+	} else if (sub->channel_state == CALLING && sub_peer->channel_state != ONHOLD){
+		//ignore the flash hook sending from endptmngr for DECT when got 183 from IVR system and interacting through DTMF
+		p->hf_detected = 0;
+		return;
 	}
 
 	if (p->dtmf_first < 0) {