diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index a7fdf16..38490a0 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -44,6 +44,7 @@
 import from IPA_Emulation all;
 import from IPA_Testing all;
 import from RSL_Emulation all;
+import from RTP_Emulation all;
 
 import from IPL4asp_Types all;
 import from TRXC_Types all;
@@ -93,6 +94,8 @@
 	integer mp_ctrl_port := 4238;
 	charstring mp_bsc_ctrl_ip := "127.0.0.1";
 	integer mp_bsc_ctrl_port := 4249;
+	charstring mp_rtpem_bind_ip := "127.0.0.1";
+	integer mp_rtpem_bind_port := 6766;
 	integer mp_tolerance_rxqual := 1;
 	integer mp_tolerance_rxlev := 3;
 	integer mp_tolerance_timing_offset_256syms := 0;
@@ -205,6 +208,10 @@
 
 	/* PCU Interface of BTS */
 	port PCUIF_CODEC_PT PCU;
+
+	var RTP_Emulation_CT vc_RTPEM;
+	port RTPEM_CTRL_PT RTPEM_CTRL;
+	port RTPEM_DATA_PT RTPEM_DATA;
 }
 
 private function f_init_rsl(charstring id) runs on test_CT {
@@ -2285,6 +2292,60 @@
 	g_first_meas_res := true;
 }
 
+/* Initialize and start the RTP emulation component for a ConnHdlr */
+friend function f_rtpem_activate(inout octetstring payload,
+				 RtpemConfig cfg := c_RtpemDefaultCfg,
+				 RtpemMode mode := RTPEM_MODE_BIDIR)
+runs on ConnHdlr {
+	/* Step 0: initialize, connect and start the emulation component */
+	vc_RTPEM := RTP_Emulation_CT.create(testcasename() & "-RTPEM");
+	map(vc_RTPEM:RTP, system:RTP);
+	map(vc_RTPEM:RTCP, system:RTCP);
+	connect(vc_RTPEM:CTRL, self:RTPEM_CTRL);
+	connect(vc_RTPEM:DATA, self:RTPEM_DATA);
+	vc_RTPEM.start(RTP_Emulation.f_main());
+
+	/* Step 1: configure the RTP parameters */
+	var integer payload_len := 0;
+	var octetstring hdr := ''O;
+
+	select (g_pars.chan_mode) {
+	case (tr_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM1)) /* TCH/FS */
+		{ payload_len := 33; hdr := 'D0'O; }
+	case (tr_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM1)) /* TCH/HS */
+		{ payload_len := 15; hdr := '00'O; }
+	case (tr_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM2)) /* TCH/EFS */
+		{ payload_len := 31; hdr := 'C0'O; }
+	case else { /* FIXME: also handle TCH/AFS and TCH/AHS */
+		setverdict(fail, "Unhandled RSL channel mode := ", g_pars.chan_mode);
+		Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
+		}
+	}
+
+	/* Pad the payload to conform the expected length */
+	payload := f_pad_oct(hdr & payload, payload_len, '00'O);
+	cfg.tx_fixed_payload := payload;
+	f_rtpem_configure(RTPEM_CTRL, cfg);
+
+	/* Step 2: bind the RTP emulation to the configured address */
+	var PortNumber rtpem_bind_port := mp_rtpem_bind_port;
+	f_rtpem_bind(RTPEM_CTRL, mp_rtpem_bind_ip, rtpem_bind_port);
+
+	/* Step 3: send CRCX with the configured address/port to the IUT */
+	var RSL_Message rsl_pdu := f_rsl_transceive_ret(
+		ts_RSL_IPA_CRCX(g_chan_nr, f_inet_addr(mp_rtpem_bind_ip), rtpem_bind_port),
+		tr_RSL_IPA_CRCX_ACK(g_chan_nr, ?, ?, ?),
+		"IPA CRCX ACK");
+
+	/* Step 4: connect to the IUT's address/port parsed from CRCX ACK */
+	var HostName local_addr := f_inet_ntoa(rsl_pdu.ies[2].body.ipa_local_ip);
+	var PortNumber local_port := rsl_pdu.ies[3].body.ipa_local_port;
+	f_rtpem_connect(RTPEM_CTRL, local_addr, local_port);
+
+	/* Step 5: set the given RTP emulation mode */
+	f_rtpem_mode(RTPEM_CTRL, mode);
+}
+
 /* establish DChan, verify existance + contents of measurement reports */
 private function f_TC_meas_res_periodic(charstring id) runs on ConnHdlr {
 	f_l1_tune(L1CTL);
