diff --git a/channels/chan_brcm.c b/channels/chan_brcm.c
index 98685ac1e913058ec3eda8c4ca1ba08214c870eb..315832d79e1a7f4aa139a96f3dc6036e37b059d9 100644
--- a/channels/chan_brcm.c
+++ b/channels/chan_brcm.c
@@ -1015,14 +1015,21 @@ static int brcm_call(struct ast_channel *chan, const char *dest, int timeout)
 			p->tech->signal_ringing_callerid_pending(p);
 			p->tech->signal_callerid(chan, sub);
 		}
+
 		if (has_call_in_sip_client(p->context)) {
 			sub->cw_timer_id = ast_sched_add(sched, cwtimeout*1000, cwtimeout_cb, sub);
-			ast_setstate(chan, AST_STATE_RINGING_CW);
-			ast_queue_control(chan, AST_CONTROL_RINGING_CW);
+			if (is_call_waiting_enabled(p->context)) {
+				ast_setstate(chan, AST_STATE_RINGING_CW);
+				ast_queue_control(chan, AST_CONTROL_RINGING_CW);
+			} else {
+				ast_setstate(chan, AST_STATE_RINGING);
+				ast_queue_control(chan, AST_CONTROL_RINGING);
+			}
 		} else {
 			ast_setstate(chan, AST_STATE_RINGING);
 			ast_queue_control(chan, AST_CONTROL_RINGING);
 		}
+
 		brcm_send_ubus_event("RINGING",p->line_id);
 	}
 	//ast_mutex_unlock(&sub->parent->lock);