diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 09a7a15..cfb49dc 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -751,7 +751,8 @@
 		timing_offset_256syms := mp_timing_offset_256syms_exp,
 		bs_power_level := 0,
 		ms_power_level := mp_ms_power_level_exp,
-		ms_actual_ta := mp_ms_actual_ta_exp
+		ms_actual_ta := mp_ms_actual_ta_exp,
+		facch_enabled := false
 	},
 	spec := omit,
 	encr := omit,
@@ -1788,8 +1789,17 @@
 	var L1ctlDlMessage l1_dl;
 	[] L1CTL.receive(tr_L1CTL_TRAFFIC_IND(g_chan_nr)) -> value l1_dl {
 		log("TCH received: ", l1_dl.payload.traffic_ind.data);
-		L1CTL.send(ts_L1CTL_TRAFFIC_REQ(g_chan_nr, l1_dl.dl_info.link_id,
-						l1_dl.payload.traffic_ind.data));
+
+		/* occasionaly inject FACCH frames into the uplink */
+		if (g_pars.l1_pars.facch_enabled == true and l1_dl.dl_info.frame_nr mod 5 == 0) {
+			var octetstring pl := '010301'O;
+			L1CTL.send(ts_L1CTL_DATA_REQ(g_chan_nr, ts_RslLinkID_DCCH(0),
+				   f_pad_oct(pl, 23, '2B'O)));
+		} else {
+			L1CTL.send(ts_L1CTL_TRAFFIC_REQ(g_chan_nr, l1_dl.dl_info.link_id,
+				   l1_dl.payload.traffic_ind.data));
+		}
+
 		repeat;
 		}
 }
@@ -1811,7 +1821,8 @@
 	int16_t timing_offset_256syms,
 	uint4_t bs_power_level,
 	uint5_t ms_power_level,
-	uint8_t ms_actual_ta
+	uint8_t ms_actual_ta,
+	boolean facch_enabled
 }
 
 /* Convert tiing offset from 1/256th symbol to RSL Timing Offset */
@@ -2976,7 +2987,7 @@
 	Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
 }
 
-testcase TC_meas_res_speech_tchf() runs on test_CT {
+function f_TC_meas_res_speech_tchf(boolean facch_enabled) runs on test_CT {
 	var template RSL_IE_ChannelMode ch_mode;
 	var ConnHdlr vc_conn;
 	var ConnHdlrPars pars;
@@ -2984,13 +2995,23 @@
 	ch_mode := ts_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM1);
 	for (var integer tn := 1; tn <= 1; tn := tn + 1) {
 		pars := valueof(t_Pars(t_RslChanNr_Bm(tn), ch_mode));
+		pars.l1_pars.facch_enabled := facch_enabled;
 		vc_conn := f_start_handler(refers(f_TC_meas_res_periodic), pars,
 					   pcu_comp := false, trxc_comp := true);
 		vc_conn.done;
 	}
 	Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
 }
-testcase TC_meas_res_speech_tchh() runs on test_CT {
+
+testcase TC_meas_res_speech_tchf() runs on test_CT {
+	 f_TC_meas_res_speech_tchf(false);
+}
+
+testcase TC_meas_res_speech_tchf_facch() runs on test_CT {
+	 f_TC_meas_res_speech_tchf(true);
+}
+
+function f_TC_meas_res_speech_tchh(boolean facch_enabled) runs on test_CT {
 	var template RSL_IE_ChannelMode ch_mode;
 	var ConnHdlr vc_conn;
 	var ConnHdlrPars pars;
@@ -2998,12 +3019,22 @@
 	ch_mode := ts_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM1);
 	for (var integer ss := 0; ss <= 1; ss := ss + 1) {
 		pars := valueof(t_Pars(t_RslChanNr_Lm(5, ss), ch_mode));
+		pars.l1_pars.facch_enabled := facch_enabled;
 		vc_conn := f_start_handler(refers(f_TC_meas_res_periodic), pars,
 					   pcu_comp := false, trxc_comp := true);
 		vc_conn.done;
 	}
 	Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
 }
+
+testcase TC_meas_res_speech_tchh() runs on test_CT {
+	 f_TC_meas_res_speech_tchh(false)
+}
+
+testcase TC_meas_res_speech_tchh_facch() runs on test_CT {
+	 f_TC_meas_res_speech_tchh(true)
+}
+
 testcase TC_meas_res_speech_tchh_toa256() runs on test_CT {
 	var template RSL_IE_ChannelMode ch_mode;
 	var ConnHdlr vc_conn;
@@ -7185,7 +7216,9 @@
 	execute( TC_rach_load_idle_below_thresh() );
 	execute( TC_rach_load_count() );
 	execute( TC_meas_res_speech_tchf() );
+	execute( TC_meas_res_speech_tchf_facch() );
 	execute( TC_meas_res_speech_tchh() );
+	execute( TC_meas_res_speech_tchh_facch() );
 	execute( TC_meas_res_speech_tchh_toa256() );
 	execute( TC_meas_res_sign_tchf() );
 	execute( TC_meas_res_sign_tchh() );
