diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index cc38433..09a7a15 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -7072,6 +7072,67 @@
 	Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
 }
 
+private function f_TC_speech_no_rtp(charstring id) runs on ConnHdlr {
+	var template L1ctlDlMessage tr_bad_frame;
+	var L1ctlDlMessage l1_dl;
+	timer T := 8.0;
+
+	f_l1_tune(L1CTL);
+	RSL.clear;
+
+	f_est_dchan();
+
+	/* There may be a few errors right after the channel activation */
+	f_sleep(2.0); /* ... so let's give the L1 some time to stabilize */
+	L1CTL.clear;
+
+	/* A universal template for bad Downlink frame: {DATA,TRAFFIC}.ind */
+	tr_bad_frame := tr_L1CTL_TRAFFIC_IND(g_chan_nr, tr_RslLinkID_DCCH(0));
+	tr_bad_frame.header.msg_type := (L1CTL_DATA_IND, L1CTL_TRAFFIC_IND);
+	tr_bad_frame.dl_info.fire_crc := (1..255); /* != 0 */
+	tr_bad_frame.payload := ?;
+
+	T.start;
+	alt {
+	/* OS#4823: DATA.ind or TRAFFIC.ind with bad CRC most likely means that
+	 * the IUT is sending *dummy bursts*, so the L1 fails to decode them. */
+	[] L1CTL.receive(tr_bad_frame) -> value l1_dl {
+		setverdict(fail, "Received {DATA,TRAFFIC}.ind with bad CRC: ", l1_dl);
+		}
+	[] as_l1_sacch();
+	[] L1CTL.receive { repeat; }
+	[] T.timeout {
+		/* We're done, break the loop */
+		setverdict(pass);
+		}
+	}
+
+	f_rsl_chan_deact();
+	f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);
+}
+testcase TC_speech_no_rtp_tchf() runs on test_CT {
+	var ConnHdlr vc_conn;
+	var ConnHdlrPars pars;
+
+	f_init();
+
+	/* TS1, TCH/F, V1 (FR codec) */
+	pars := valueof(t_Pars(ts_RslChanNr_Bm(1), ts_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM1)));
+	vc_conn := f_start_handler(refers(f_TC_speech_no_rtp), pars);
+	vc_conn.done;
+}
+testcase TC_speech_no_rtp_tchh() runs on test_CT {
+	var ConnHdlr vc_conn;
+	var ConnHdlrPars pars;
+
+	f_init();
+
+	/* TS5, TCH/H, V1 (HR codec) */
+	pars := valueof(t_Pars(ts_RslChanNr_Lm(5, 0), ts_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM1)));
+	vc_conn := f_start_handler(refers(f_TC_speech_no_rtp), pars);
+	vc_conn.done;
+}
+
 /* test generation of RLL ERR IND based on Um errors (TS 48.058 3.9) */
 /*	protocol error as per 44.006 */
 /*	link layer failure (repetition of I-frame N200 times without ACK */
@@ -7259,6 +7320,9 @@
 
 	execute( TC_ms_pwr_ctrl_constant() );
 	execute( TC_ms_pwr_ctrl_pf_ewma() );
+
+	execute( TC_speech_no_rtp_tchf() );
+	execute( TC_speech_no_rtp_tchh() );
 }
 
 
