diff --git a/bsc-nat/gen_links.sh b/bsc-nat/gen_links.sh
index 5da9d4e..471753e 100755
--- a/bsc-nat/gen_links.sh
+++ b/bsc-nat/gen_links.sh
@@ -52,7 +52,7 @@
 gen_links $DIR $FILES
 
 DIR=../library
-FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn BSSMAP_Templates.ttcn RAN_Emulation.ttcnpp MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc Osmocom_CTRL_Types.ttcn Osmocom_VTY_Functions.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn BSSAP_CodecPort.ttcn"
+FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn RLCMAC_CSN1_Types.ttcn BSSMAP_Templates.ttcn RAN_Emulation.ttcnpp MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc Osmocom_CTRL_Types.ttcn Osmocom_VTY_Functions.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn BSSAP_CodecPort.ttcn"
 gen_links $DIR $FILES
 
 ignore_pp_results
diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn
index 7c22415..8af9acc 100644
--- a/library/L3_Templates.ttcn
+++ b/library/L3_Templates.ttcn
@@ -20,6 +20,7 @@
 import from MobileL3_CC_Types all;
 import from MobileL3_GMM_SM_Types all;
 import from MobileL3_SMS_Types all;
+import from RLCMAC_CSN1_Types all;
 
 /* TS 24.007 Table 11.3 TI Flag */
 const BIT1 c_TIF_ORIG := '0'B;
@@ -2012,33 +2013,6 @@
 	cnSpecificDRXCycleLength := '0000'B /* SI value used */
 };
 
-template (value) AccessCapabilitiesStruct ts_AccesssCap := {
-	lengthIndicator := 0, /* overwritten */
-	accessCapabilities := {
-		rfPowerCapability := '001'B, /* FIXME */
-		presenceBitA5 := '0'B,
-		a5bits := omit,
-		esind := '1'B,
-		psbit := '0'B,
-		vgcs := '0'B,
-		vbs := '0'B,
-		presenceBitMultislot := '0'B,
-		multislotcap := omit,
-		accessCapAdditionsAfterRel97 := omit
-	},
-	spare_bits := omit
-}
-
-template (value) MSRACapabilityValuesRecord ts_RaCapRec(BIT4 att) := {
-	mSRACapabilityValues := {
-		mSRACapabilityValuesExclude1111 := {
-			accessTechnType := '0001'B, /* E-GSM */
-			accessCapabilities := ts_AccesssCap
-		}
-	},
-	presenceBitMSRACap := '0'B
-};
-
 template (value) MSRadioAccessCapabilityLV ts_MS_RaCapa := {
 	lengthIndicator := 0, /* overwritten */
 	msRadioAccessCapabilityV := {
diff --git a/library/RLCMAC_CSN1_Types.ttcn b/library/RLCMAC_CSN1_Types.ttcn
index 9ceb339..b545368 100644
--- a/library/RLCMAC_CSN1_Types.ttcn
+++ b/library/RLCMAC_CSN1_Types.ttcn
@@ -420,10 +420,9 @@
 		variant (tlli) "BYTEORDER(first)"
 	};
 
-	/* 12.30 MS Radio Access Capability 2 (feature bitmask)
-	 * (value part, see 3GPP TS 24.008, 10.5.5.12a) */
+	/* TS 44.060 sec 12.30 MS Radio Access Capability 2
+	 * (for value part, see 3GPP TS 24.008 sec 10.5.5.12a and table 10.5.146) */
 	type union MSRadioAccCap2 {
-		/* TODO: see table 10.5.146/3GPP TS 24.008 */
 		MSRadioAccessCapabilityV     msRadioAccessCapabilityV
 	};
 
@@ -676,10 +675,88 @@
 		}
 	}
 
-	template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_RES_REQ(
-		GprsTlli tlli, ChannelReqDescription ch_req_desc,
-		RlcAccessType acc_type := RLC_ACC_TYPE_TWO_PHASE
-	) := {
+	private function f_presence_bit_MultislotCap_GPRS(template (omit) MultislotCap_GPRS mscap_gprs) return BIT1 {
+		if (istemplatekind(mscap_gprs, "omit")) {
+			return '0'B;
+		}
+		return '1'B;
+	}
+	private function f_presence_bit_MultislotCap_EGPRS(template (omit) MultislotCap_EGPRS mscap_egprs) return BIT1 {
+		if (istemplatekind(mscap_egprs, "omit")) {
+			return '0'B;
+		}
+		return '1'B;
+	}
+	template (value) MSRACapabilityValuesRecord ts_RaCapRec(BIT4 att := '0001'B /* E-GSM */, template (omit) MultislotCap_GPRS mscap_gprs := omit, template (omit) MultislotCap_EGPRS mscap_egprs := omit) := {
+		mSRACapabilityValues := {
+			mSRACapabilityValuesExclude1111 := {
+				accessTechnType := att, /* E-GSM */
+				accessCapabilities := {
+					lengthIndicator := 0, /* overwritten */
+					accessCapabilities := {
+						rfPowerCapability := '001'B, /* FIXME */
+						presenceBitA5 := '0'B,
+						a5bits := omit,
+						esind := '1'B,
+						psbit := '0'B,
+						vgcs := '0'B,
+						vbs := '0'B,
+						presenceBitMultislot := '1'B,
+						multislotcap := {
+							presenceBitHscsd := '0'B,
+							hscsdmultislotclass := omit,
+							presenceBitGprs := f_presence_bit_MultislotCap_GPRS(mscap_gprs),
+							gprsmultislot := mscap_gprs,
+							presenceBitSms := '0'B,
+							multislotCap_SMS := omit,
+							multislotCapAdditionsAfterRel97 := {
+									presenceBitEcsdmulti := '0'B,
+									ecsdmultislotclass := omit,
+									presenceBitEgprsmulti := f_presence_bit_MultislotCap_EGPRS(mscap_egprs),
+									multislotCap_EGPRS := mscap_egprs,
+									presenceBitDtmGprsmulti := '0'B,
+									multislotCapdtmgprsmultislotsubclass := omit
+							}
+						},
+						accessCapAdditionsAfterRel97 := omit
+					},
+					spare_bits := omit
+				}
+			}
+		},
+		presenceBitMSRACap := '0'B
+	};
+
+	private function f_presence_bit_MSRadioAccessCapabilityV(template (omit) MSRadioAccessCapabilityV ms_rac) return BIT1 {
+		if (istemplatekind(ms_rac, "omit")) {
+			return '0'B;
+		}
+		return '1'B;
+	}
+
+	private function f_template_MSRadioAccessCapabilityV_to_MSRadioAccCap2(template (omit) MSRadioAccessCapabilityV ms_rac) return template (omit) MSRadioAccCap2 {
+		var template (omit) MSRadioAccCap2 ms_rac2 := omit;
+		if (istemplatekind(ms_rac, "omit")) {
+			return ms_rac2;
+		}
+		ms_rac2 := { msRadioAccessCapabilityV := ms_rac };
+		return ms_rac2;
+	}
+
+	private const ChannelReqDescription c_ChReqDesc_default := {
+		peak_tput_class := 0,
+		priority := 0,
+		rlc_mode := RLC_MODE_UNACKNOWLEDGED,
+		llc_pdu_type := LLC_PDU_IS_NOT_SACK_OR_ACK,
+		RlcOctetCount := 0
+	}
+
+	/* TS 44.060 sec 11.2.16 */
+	template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_RES_REQ(GprsTlli tlli,
+						     template (omit) MSRadioAccessCapabilityV ms_rac,
+						     ChannelReqDescription ch_req_desc := c_ChReqDesc_default,
+						     RlcAccessType acc_type := RLC_ACC_TYPE_TWO_PHASE)
+	:= {
 		msg_type := PACKET_RESOURCE_REQUEST,
 		u := {
 			resource_req := {
@@ -687,8 +764,8 @@
 				acc_type := acc_type,
 				id_type := '1'B,
 				id := { tlli := tlli },
-				ms_rac2_presence := '0'B,
-				ms_rac2 := omit,
+				ms_rac2_presence := f_presence_bit_MSRadioAccessCapabilityV(ms_rac),
+				ms_rac2 := f_template_MSRadioAccessCapabilityV_to_MSRadioAccCap2(ms_rac),
 				ch_req_desc := ch_req_desc,
 				change_mark_presence := '0'B,
 				change_mark := omit,
diff --git a/library/RLCMAC_Types.ttcn b/library/RLCMAC_Types.ttcn
index dbcf4ae..97b89da 100644
--- a/library/RLCMAC_Types.ttcn
+++ b/library/RLCMAC_Types.ttcn
@@ -445,6 +445,32 @@
 		}
 	}
 
+	template RlcmacDlBlock tr_RLCMAC_UL_PACKET_ASS(template uint3_t usf := ?) := {
+		ctrl := {
+			mac_hdr := {
+				payload_type := (MAC_PT_RLCMAC_NO_OPT, MAC_PT_RLCMAC_OPT),
+				rrbp:= ?,
+				rrbp_valid := ?,
+				usf := usf
+			},
+			opt := *,
+			payload := {
+				msg_type := PACKET_UL_ASSIGNMENT,
+				u := {
+					ul_assignment := {
+						page_mode := ?,
+						persistence_levels_present := ?,
+						persistence_levels := *,
+						identity := ?,
+						is_egprs := ?,  /* msg escape */
+						gprs := *
+					}
+				}
+			}
+		}
+	}
+
+
 	/* Receive Template for Uplink ACK/NACK */
 	template RlcmacDlBlock tr_RLCMAC_UL_ACK_NACK(template uint5_t ul_tfi, template GprsTlli tlli := ?) := {
 		ctrl := {
diff --git a/mme/gen_links.sh b/mme/gen_links.sh
index f22f1ca..469b92f 100755
--- a/mme/gen_links.sh
+++ b/mme/gen_links.sh
@@ -56,7 +56,7 @@
 DIR=../library
 FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn Native_Functions.ttcn Native_FunctionDefs.cc "
 FILES+="SGsAP_Templates.ttcn SGsAP_CodecPort.ttcn SGsAP_CodecPort_CtrlFunct.ttcn SGsAP_CodecPort_CtrlFunctDef.cc SGsAP_Emulation.ttcn DNS_Helpers.ttcn "
-FILES+="L3_Templates.ttcn "
+FILES+="L3_Templates.ttcn RLCMAC_CSN1_Types.ttcn "
 FILES+="S1AP_CodecPort.ttcn S1AP_CodecPort_CtrlFunctDef.cc S1AP_CodecPort_CtrlFunct.ttcn S1AP_Emulation.ttcn "
 FILES+="NAS_Templates.ttcn GTPv2_PrivateExtensions.ttcn GTPv2_Templates.ttcn "
 FILES+="DIAMETER_Types.ttcn DIAMETER_CodecPort.ttcn DIAMETER_CodecPort_CtrlFunct.ttcn DIAMETER_CodecPort_CtrlFunctDef.cc DIAMETER_Emulation.ttcn DIAMETER_Templates.ttcn "
diff --git a/msc/gen_links.sh b/msc/gen_links.sh
index 7aaba2b..329a7d1 100755
--- a/msc/gen_links.sh
+++ b/msc/gen_links.sh
@@ -93,7 +93,7 @@
 DIR=../library
 FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn MNCC_Types.ttcn MNCC_EncDec.cc MNCC_CodecPort.ttcn mncc.h MNCC_Emulation.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc "
 FILES+="IPA_Types.ttcn IPA_Emulation.ttcnpp IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc GSUP_Types.ttcn GSUP_Emulation.ttcn "
-FILES+="Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn L3_Templates.ttcn L3_Common.ttcn "
+FILES+="Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn L3_Templates.ttcn RLCMAC_CSN1_Types.ttcn L3_Common.ttcn "
 FILES+="RAN_Emulation.ttcnpp BSSAP_CodecPort.ttcn BSSMAP_Templates.ttcn RAN_Adapter.ttcnpp MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_Emulation.ttcn "
 FILES+="RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunctDef.cc "
 FILES+="MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunctDef.cc "
diff --git a/pcu/PCU_Tests_RAW.ttcn b/pcu/PCU_Tests_RAW.ttcn
index 1d13b8e..54412e3 100644
--- a/pcu/PCU_Tests_RAW.ttcn
+++ b/pcu/PCU_Tests_RAW.ttcn
@@ -26,6 +26,7 @@
 import from Osmocom_VTY_Functions all;
 import from TELNETasp_PortType all;
 
+import from MobileL3_GMM_SM_Types all;
 import from RLCMAC_CSN1_Types all;
 import from RLCMAC_Types all;
 
@@ -496,6 +497,20 @@
 	poll_fn := dl_fn + f_rrbp_fn_delay(dl_block.ctrl.mac_hdr.rrbp);
 }
 
+private function f_rx_rlcmac_dl_block_exp_pkt_ul_ass(out RlcmacDlBlock dl_block, out uint32_t poll_fn)
+runs on RAW_PCU_Test_CT {
+        var uint32_t dl_fn;
+
+        f_rx_rlcmac_dl_block(dl_block, dl_fn);
+        if (not match(dl_block, tr_RLCMAC_UL_PACKET_ASS())) {
+                setverdict(fail, "Failed to match Packet Uplink Assignment");
+                mtc.stop;
+        }
+
+        poll_fn := dl_fn + f_rrbp_fn_delay(dl_block.ctrl.mac_hdr.rrbp);
+}
+
+
 private function f_rx_rlcmac_dl_block_exp_pkt_pag_req(out RlcmacDlBlock dl_block)
 runs on RAW_PCU_Test_CT {
 	var uint32_t dl_fn;
@@ -1201,7 +1216,7 @@
 /* Test scenario where MS wants to send some data on PDCH against SGSN and it is
  * answered, so TBFs for uplink and later for downlink are created.
  */
-testcase TC_mo_ping_pong() runs on RAW_PCU_Test_CT {
+private function f_TC_mo_ping_pong(template (omit) MSRadioAccessCapabilityV ms_racap := omit, template (present) CodingScheme exp_cs_mcs := ?) runs on RAW_PCU_Test_CT {
 	var GsmRrMessage rr_imm_ass;
 	var PacketUlAssign ul_tbf_ass;
 	var PacketDlAssign dl_tbf_ass;
@@ -1235,6 +1250,18 @@
 		mtc.stop;
 	}
 
+	if (not istemplatekind(ms_racap, "omit")) {
+		/* Send PACKET RESOURCE REQUEST to upgrade to EGPRS
+		 * (see 3GPP TS 04.60 "7.1.3.1 Initiation of the Packet resource request procedure")
+		 */
+		f_tx_rlcmac_ul_block(ts_RLC_UL_CTRL_ACK(valueof(ts_RlcMacUlCtrl_PKT_RES_REQ(tlli, ms_racap))), 0);
+		f_rx_rlcmac_dl_block_exp_pkt_ul_ass(dl_block, sched_fn);
+		if (dl_block.ctrl.payload.u.ul_assignment.identity.tlli.tlli != tlli) {
+			setverdict(fail, "Wrong TLLI ", dl_block.ctrl.payload.u.ul_assignment.identity.tlli, " received vs exp ", tlli);
+			mtc.stop;
+		}
+	}
+
 	/* Send one UL block and make sure it is ACKED fine */
 	f_tx_rlcmac_ul_n_blocks(ul_tbf_ass, 1);
 	f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, sched_fn);
@@ -1256,13 +1283,33 @@
 
 	/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
 	f_sleep(X2002);
-	f_rx_rlcmac_dl_block_exp_data(dl_block, sched_fn, data, 0);
+	f_rx_rlcmac_dl_block_exp_data(dl_block, sched_fn, data, 0, exp_cs_mcs);
 
 	/* ACK the DL block */
 	f_acknackdesc_ack_block(ack_nack_desc, dl_block.data.mac_hdr.hdr_ext.bsn, '1'B);
 	f_tx_rlcmac_ul_block(ts_RLCMAC_DL_ACK_NACK(dl_block.data.mac_hdr.hdr_ext.tfi, ack_nack_desc), 0, sched_fn);
 }
 
+/* Test scenario where MS wants to send some data on PDCH against SGSN and it is
+ * answered, so TBFs for uplink and later for downlink are created.
+ */
+testcase TC_mo_ping_pong() runs on RAW_PCU_Test_CT {
+	var CodingScheme exp_cs_mcs := CS_1;
+	f_TC_mo_ping_pong(omit, exp_cs_mcs);
+}
+
+
+testcase TC_mo_ping_pong_with_ul_racap() runs on RAW_PCU_Test_CT {
+	var MultislotCap_GPRS mscap_gprs := {
+		gprsmultislotclass := '00011'B,
+		gprsextendeddynalloccap := '0'B
+	};
+	var MSRadioAccessCapabilityV ms_racap := { valueof(ts_RaCapRec('0001'B /* E-GSM */, mscap_gprs, omit)) };
+	var CodingScheme exp_cs_mcs := CS_2;
+
+	f_TC_mo_ping_pong(ms_racap, exp_cs_mcs);
+}
+
 /* Test scenario where SGSN wants to send some data against MS and it is
  * answered by the MS on PDCH, so TBFs for downlink and later for uplink are created.
  */
@@ -1724,6 +1771,7 @@
 	execute( TC_t3169() );
 	execute( TC_t3193() );
 	execute( TC_mo_ping_pong() );
+	execute( TC_mo_ping_pong_with_ul_racap() );
 	execute( TC_mt_ping_pong() );
 	execute( TC_mt_ping_pong_with_dl_racap() );
 	execute( TC_imm_ass_dl_block_retrans() );
