diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index e06f496..21ec0ff 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -2761,8 +2761,7 @@
 runs on test_CT return charstring {
 	var charstring cmd, resp;
 	cmd := "show timeslot "&int2str(bts_nr)&" "&int2str(trx_nr)&" "&int2str(ts_nr);
-	resp := f_vty_transceive_ret(BSCVTY, cmd);
-	return regexp(resp, "*\((*)\)*", 0);
+	return f_vty_transceive_match_regexp_retry(BSCVTY, cmd, "*\((*)\)*", 0, 4, 1.0);
 }
 
 private function f_ts_dyn_mode_assert(integer bts_nr, integer trx_nr, integer ts_nr,
diff --git a/library/Osmocom_VTY_Functions.ttcn b/library/Osmocom_VTY_Functions.ttcn
index 86f58f1..4f795ad 100644
--- a/library/Osmocom_VTY_Functions.ttcn
+++ b/library/Osmocom_VTY_Functions.ttcn
@@ -1,5 +1,6 @@
 module Osmocom_VTY_Functions {
 	import from TELNETasp_PortType all;
+	import from Osmocom_Types all;
 
 	modulepar {
 		charstring mp_prompt_prefix := "OpenBSC";
@@ -153,5 +154,27 @@
 	}
 }
 
+function f_vty_transceive_match_regex(TELNETasp_PT pt, charstring cmd, charstring regex, integer groupno) return charstring
+{
+	var charstring resp := f_vty_transceive_ret(pt, cmd);
+	return regexp(resp, regex, groupno);
+}
+
+function f_vty_transceive_match_regexp_retry(TELNETasp_PT pt, charstring cmd, charstring regex,
+					     integer groupno, integer num_attempts, float retry_delay) return charstring
+{
+	 while (num_attempts > 0) {
+		var charstring ret := f_vty_transceive_match_regex(pt, cmd, regex, groupno);
+		if (ret != "") {
+			return ret;
+		}
+		f_sleep(retry_delay);
+		num_attempts := num_attempts - 1;
+	}
+
+	setverdict(fail, "No matching VTY response for regular expression '", regex,
+		   "' after ", num_attempts, " attempts." );
+	mtc.stop;
+}
 
 }
