diff --git a/line-dect.c b/line-dect.c
index d505734f5668f87988a391cc02247a4ab5bfc36c..6ea562dfcf07cd44450e425bef62b7a7c259f200 100644
--- a/line-dect.c
+++ b/line-dect.c
@@ -69,6 +69,12 @@ int ubus_process_queued_reqs_to_dectmngr(void) {
 				return -1;
 			}
 			break;
+		case ACTION_SIG_BUSY_TONE:
+			if(ubus_call_dectmngr(voicemngr_line_to_dectmngr_line(req->line), 0, 2, req->caller_id, req->pcm_id, req)) {
+				free(req);
+				return -1;
+			}
+			break;
 		case ACTION_SIG_ANSWERED:
 			if(ubus_call_dectmngr(voicemngr_line_to_dectmngr_line(req->line), 2, 0, req->caller_id, req->pcm_id, req)) {
 				free(req);
diff --git a/line.c b/line.c
index 5ec9f99c3b9543c0bd6f42a98b6ca1b45296f3e7..84841ade7a60898cedc85fc13f7109bc31266c83 100644
--- a/line.c
+++ b/line.c
@@ -92,6 +92,46 @@ static int perhaps_simulate_busy(int line, struct voice_ubus_req_t *ubus_req)
 
 	return 1;
 }
+//----------------------------------------------------------------------------------
+// DECT handset tone trigger
+static int dect_tone_play(int line, int pcm, enum VOICE_SIGNAL signal, const char *data, struct voice_ubus_req_t *ubus_req)
+{
+	struct line_req_t *line_req = NULL;
+	ENDPT_DBG("%s: line=%d, pcm=%d, data=%s\n", __func__, line, pcm, data);
+	pcm_states_dump(__func__, line);
+
+	assert(ubus_req);
+	line_req = calloc(1, sizeof(struct line_req_t));
+	if(!line_req) {
+		ENDPT_DBG("%s: out of memory\n", __func__);
+		return -1;
+	}
+	line_req->line = line;
+	line_req->connection_id = -1;
+	line_req->pcm_id = pcm;
+	switch(signal) {
+		case VOICE_SIG_UNOBTAINABLE:
+		case VOICE_SIG_BUSY:
+		case VOICE_SIG_NETBUSY:
+			line_req->action = ACTION_SIG_BUSY_TONE; //only busy tone available
+			break;
+		default:
+			free(line_req);
+			return -1;
+	}
+
+	ENDPT_DBG("%s: line %d set pcm to %d\n", __func__, line, line_req->pcm_id);
+	memcpy(&line_req->ubus, ubus_req, sizeof(struct voice_ubus_req_t));
+
+	assert(lines[line].type == VOICE_LINE_DECT);
+	assert(line_req);
+	if(ubus_queue_req_to_dectmngr(line_req) || ubus_process_queued_reqs_to_dectmngr())
+		return -1;
+	ubus_defer_request(line_req->ubus.ctx, line_req->ubus.reqIn, &line_req->ubus.reqOut);
+	line_req->ubus.reqIn = NULL;
+
+	return 0;
+}
 
 //----------------------------------------------------------------------------------
 // Asterisk wants to make a FXS phone or DECT handset ring probably with a caller ID
@@ -266,19 +306,25 @@ int line_signal(int line, const char *signame, const char *data, struct voice_ub
 			break;
 
 		case VOICE_SIG_UNOBTAINABLE:
-		case VOICE_SIG_BUSY:
 			if (lines[line].type == VOICE_LINE_DECT) {
+				pcm_states_dump(__func__, line);
 				send_dect_event_to_asterisk(line, dect_event_map[DECT_EVT_RELEASE]);
 			} else {
 				res = voice_line_signal(line, -1, sig->signal, atoi(data), NULL);
 			}
 			break;
-
+		case VOICE_SIG_BUSY:
 		case VOICE_SIG_NETBUSY:
 			if (lines[line].type == VOICE_LINE_DECT) {
-				send_dect_event_to_asterisk(line, dect_event_map[DECT_EVT_RELEASE]);
+				pcm_states_dump(__func__, line);
+				if (get_callid_state(lines[line].pcm_callid[PCM_0])==CALLID_ESTABLISHED && get_callid_state(lines[line].pcm_callid[PCM_1])==CALLID_ESTABLISHED){
+					send_dect_event_to_asterisk(line, dect_event_map[DECT_EVT_RELEASE]);
+				} else if (get_callid_state(lines[line].pcm_callid[PCM_0]) == CALLID_ESTABLISHED || get_callid_state(lines[line].pcm_callid[PCM_1]) == CALLID_ESTABLISHED){
+				// play tone on DECT
+					res = dect_tone_play(line, get_callid_state(lines[line].pcm_callid[PCM_0]) == CALLID_ESTABLISHED ? PCM_0 : PCM_1, sig->signal, data, ubus_req);
+				}
 			} else {
-				res = voice_line_signal(line, -1, sig->signal, atoi(data), NULL);
+				res = voice_line_signal(line, -1, VOICE_SIG_BUSY, atoi(data), NULL);
 			}
 			break;
 
diff --git a/line.h b/line.h
index 17c1253653aa1abf0db766099ee3c5d034cf40b8..3951ab1feb08ef0d6abb8916fd813b20f0d46292 100644
--- a/line.h
+++ b/line.h
@@ -11,6 +11,7 @@ enum line_action_t {
 	ACTION_CONN_CLOSE,
 	ACTION_SIG_RING,
 	ACTION_SIG_ANSWERED,
+	ACTION_SIG_BUSY_TONE,
 };
 
 // In UBUS request to voicemngr we need to define what this request is about