diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 58c7118..287d869 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -12,6 +12,7 @@
 import from Osmocom_CTRL_Adapter all;
 
 import from RSL_Types all;
+import from IPA_Types all;
 import from IPA_Emulation all;
 import from RSL_Emulation all;
 
@@ -20,6 +21,9 @@
 import from TRXC_CodecPort all;
 import from TRXC_CodecPort_CtrlFunct all;
 
+import from L3_Templates all;
+import from MobileL3_CommonIE_Types all;
+
 /* The tests assume a BTS with the following timeslot configuration:
  * TS0 : Combined CCCH + SDCCH/4
  * TS1 .. TS 4: TCH/F
@@ -75,11 +79,62 @@
 	ConnL1Pars l1_pars
 }
 
+/* Default SYSTEM INFORMATION 3 */
+template (value) GsmRrMessage ts_SI3_default := {
+	header := t_RrHeader(SYSTEM_INFORMATION_TYPE_3, 0),
+	payload := {
+		si3 := {
+			cell_id := 23,
+			lai := {
+				mcc_mnc := '262F42'H,
+				lac := 42
+			},
+			ctrl_chan_desc := {
+				msc_r99 := true,
+				att := true,
+				bs_ag_blks_res := 1,
+				ccch_conf := CCHAN_DESC_1CCCH_COMBINED,
+				si22_ind := false,
+				cbq3 := CBQ3_IU_MODE_NOT_SUPPORTED,
+				spare := '00'B,
+				bs_pa_mfrms := 0, /* 2 multiframes */
+				t3212 := 1 /* 6 minutes */
+			},
+			cell_opts := {
+				dn_ind := false,
+				pwrc := false,
+				dtx := MS_MAY_USE_UL_DTX,
+				radio_link_tout_div4 := 4/4
+			},
+			cell_sel_pars := {
+				cell_resel_hyst_2dB := 0,
+				ms_txpwr_max_cch := 0,
+				acs := '0'B,
+				neci := true,
+				rxlev_access_min := 0
+			},
+			rach_ctrl_pars := {
+				max_retrans := RACH_MAX_RETRANS_1,
+				tx_integer := '0000'B, /* 3 slots */
+				cell_bar_access := false,
+				re_not_allowed := true,
+				acc := '1111111111111111'B
+			},
+			rest_octets := ''O
+		}
+	}
+}
 
 /* global init function */
 function f_init(charstring id) runs on test_CT {
 	f_init_rsl(id);
 	RSL_CCHAN.receive(ASP_IPA_Event:{up_down := ASP_IPA_EVENT_UP});
+
+	/* Send SI3 to the BTS, it is needed for various computations */
+	var GsmRrMessage si3 := valueof(ts_SI3_default);
+	log("Sending SI3 ", si3);
+	var octetstring si3_enc := enc_GsmRrMessage(si3);
+	RSL_CCHAN.send(ts_RSL_UD(ts_RSL_BCCH_INFO(RSL_SYSTEM_INFO_3, si3_enc)));
 }
 
 type function void_fn(charstring id) runs on ConnHdlr;
@@ -99,6 +154,17 @@
 	return vc_conn;
 }
 
+template ASP_RSL_Unitdata ts_RSL_UD(template RSL_Message rsl, IpaStreamId sid := IPAC_PROTO_RSL_TRX0) := {
+	streamId := sid,
+	rsl := rsl
+}
+
+template ASP_RSL_Unitdata tr_RSL_UD(template RSL_Message rsl,
+				    template IpaStreamId sid := IPAC_PROTO_RSL_TRX0) := {
+	streamId := sid,
+	rsl := rsl
+}
+
 private altstep as_Tguard() runs on ConnHdlr {
 	[] g_Tguard.timeout {
 		setverdict(fail, "Tguard timeout");
diff --git a/library/GSM_RR_Types.ttcn b/library/GSM_RR_Types.ttcn
index 4d1efd7..a8b6db2 100644
--- a/library/GSM_RR_Types.ttcn
+++ b/library/GSM_RR_Types.ttcn
@@ -366,6 +366,68 @@
 		uint3_t		non_drx_timer
 	} with { variant "" };
 
+	/* 44.018 10.5.2.3 */
+	type enumerated CellOptions_DTX {
+		MS_MAY_USE_UL_DTX	('00'B),
+		MS_SHALL_USE_UL_DTX	('01'B),
+		MS_SHALL_NOT_USE_UL_DTX	('10'B)
+	} with { variant "FIELDLENGTH(2)" };
+	type record CellOptions {
+		boolean		dn_ind,
+		boolean		pwrc,
+		CellOptions_DTX	dtx,
+		uint4_t		radio_link_tout_div4
+	} with { variant "" };
+
+	/* 44.018 10.5.2.4 */
+	type record CellSelectionPars {
+		uint3_t		cell_resel_hyst_2dB,
+		uint5_t		ms_txpwr_max_cch,
+		BIT1		acs,
+		boolean		neci,
+		uint6_t		rxlev_access_min
+	} with { variant "" };
+
+	/* 44.018 10.5.2.29 */
+	type enumerated RachCtrlPar_MR {
+		RACH_MAX_RETRANS_1	('00'B),
+		RACH_MAX_RETRANS_2	('01'B),
+		RACH_MAX_RETRANS_4	('10'B),
+		RACH_MAX_RETRANS_7	('11'B)
+	} with { variant "FIELDLENGTH(2)" };
+	type record RachControlPars {
+		RachCtrlPar_MR	max_retrans,
+		BIT4		tx_integer,
+		boolean		cell_bar_access,
+		boolean		re_not_allowed,
+		BIT16		acc
+	} with { variant "" };
+
+	/* 44.018 10.5.2.11 */
+	type enumerated CtrlChanDesc_CC {
+		CCHAN_DESC_1CCCH_NOT_COMBINED	('000'B),
+		CCHAN_DESC_1CCCH_COMBINED	('001'B),
+		CCHAN_DESC_2CCCH_NOT_COMBINED	('010'B),
+		CCHAN_DESC_3CCCH_NOT_COMBINED	('100'B),
+		CCHAN_DESC_4CCCH_NOT_COMBINED	('110'B)
+	} with { variant "FIELDLENGTH(3)" };
+	type enumerated CBQ3 {
+		CBQ3_IU_MODE_NOT_SUPPORTED	('00'B),
+		CBQ3_IU_MODE_MS_BARRED		('01'B),
+		CBQ3_IU_MODE_NOT_BARRED		('10'B)
+	} with { variant "FIELDLENGTH(2)" };
+	type record CtrlChanDesc {
+		boolean		msc_r99,
+		boolean		att,
+		uint3_t		bs_ag_blks_res,
+		CtrlChanDesc_CC	ccch_conf,
+		boolean		si22_ind,
+		CBQ3		cbq3,
+		BIT2		spare,
+		uint3_t		bs_pa_mfrms, /* off by 2 */
+		uint8_t		t3212
+	} with { variant "" };
+
 	/* 24.008 10.5.5.15 */
 	type record RoutingAreaIdentification {
 		LocationAreaIdentification	lai,
@@ -577,6 +639,16 @@
 		RestOctets			rest_octets
 	} with { variant "" };
 
+	/* 9.1.35 */
+	type record SystemInformationType3 {
+		CellIdentity			cell_id,
+		LocationAreaIdentification	lai,
+		CtrlChanDesc			ctrl_chan_desc,
+		CellOptions			cell_opts,
+		CellSelectionPars		cell_sel_pars,
+		RachControlPars			rach_ctrl_pars,
+		RestOctets			rest_octets
+	} with { variant (rest_octets) "FIELDLENGTH(4)" };
 
 	type union RrUnion {
 /*
@@ -584,13 +656,13 @@
 		SystemInformationType2		si2,
 		SystemInformationType2bis	si2bis,
 		SystemInformationType2ter	si2ter,
-		SystemInformationType3		si3,
 		SystemInformationType4		si4,
 		SystemInformationType5		si5,
 		SystemInformationType5bis	si5bis,
 		SystemInformationType5ter	si5ter,
 		SystemInformationType6		si6,
 */
+		SystemInformationType3		si3,
 		ImmediateAssignment		imm_ass,
 		ImmediateAssignmentReject	imm_ass_rej,
 		PagingRequestType1		pag_req_1,
diff --git a/library/General_Types.ttcn b/library/General_Types.ttcn
index b404fe1..83b2a42 100644
--- a/library/General_Types.ttcn
+++ b/library/General_Types.ttcn
@@ -75,6 +75,7 @@
   type bitstring BIT16 length(16) with { variant "FIELDLENGTH(16)" };
   type bitstring BIT24 length(24) with { variant "FIELDLENGTH(24)" };
   type bitstring BIT31 length(31) with { variant "FIELDLENGTH(31)" };
+  type bitstring BIT32 length(32) with { variant "FIELDLENGTH(32)" };
   type bitstring BIT56 length(56) with { variant "FIELDLENGTH(56)" };
 
   //****************************************************
diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn
index d3e021d..a614122 100644
--- a/library/L3_Templates.ttcn
+++ b/library/L3_Templates.ttcn
@@ -2093,6 +2093,8 @@
 	return f_concat_pad(12, '49123'H, suffix);
 }
 
+external function enc_MobileIdentityLV(in MobileIdentityLV si) return octetstring
+	with { extension "prototype(convert) encode(RAW)" };
 
 
 }
