diff --git a/src/osmo-bts-litecell15/lc15_l1_if.c b/src/osmo-bts-litecell15/lc15_l1_if.c
index 1df7941..670263f 100644
--- a/src/osmo-bts-litecell15/lc15_l1_if.c
+++ b/src/osmo-bts-litecell15/lc15_l1_if.c
@@ -161,8 +161,11 @@
 	case GsmL1_Sapi_Pacch:
 		rc = pcu_rx_rts_req_pdtch(fl1h->trx_no, rts_ind->u8Tn,
 			rts_ind->u32Fn, rts_ind->u8BlockNbr);
+		break;
 	case GsmL1_Sapi_Ptcch:
-		// FIXME
+		rc = pcu_rx_rts_req_ptcch(fl1h->trx_no, rts_ind->u8Tn,
+			rts_ind->u32Fn, rts_ind->u8BlockNbr);
+		break;
 	default:
 		break;
 	}
diff --git a/src/osmo-bts-oc2g/oc2g_l1_if.c b/src/osmo-bts-oc2g/oc2g_l1_if.c
index f9768ae..a02e962 100644
--- a/src/osmo-bts-oc2g/oc2g_l1_if.c
+++ b/src/osmo-bts-oc2g/oc2g_l1_if.c
@@ -162,8 +162,11 @@
 	case GsmL1_Sapi_Pacch:
 		rc = pcu_rx_rts_req_pdtch(fl1h->trx_no, rts_ind->u8Tn,
 			rts_ind->u32Fn, rts_ind->u8BlockNbr);
+		break;
 	case GsmL1_Sapi_Ptcch:
-		// FIXME
+		rc = pcu_rx_rts_req_ptcch(fl1h->trx_no, rts_ind->u8Tn,
+			rts_ind->u32Fn, rts_ind->u8BlockNbr);
+		break;
 	default:
 		break;
 	}
diff --git a/src/osmo-bts-sysmo/sysmo_l1_if.c b/src/osmo-bts-sysmo/sysmo_l1_if.c
index 5d127dd..9b310cc 100644
--- a/src/osmo-bts-sysmo/sysmo_l1_if.c
+++ b/src/osmo-bts-sysmo/sysmo_l1_if.c
@@ -144,8 +144,11 @@
 	case GsmL1_Sapi_Pacch:
 		rc = pcu_rx_rts_req_pdtch(fl1h->trx_no, rts_ind->u8Tn,
 			rts_ind->u32Fn, rts_ind->u8BlockNbr);
+		break;
 	case GsmL1_Sapi_Ptcch:
-		// FIXME
+		rc = pcu_rx_rts_req_ptcch(fl1h->trx_no, rts_ind->u8Tn,
+			rts_ind->u32Fn, rts_ind->u8BlockNbr);
+		break;
 	default:
 		break;
 	}
diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp
index 883cb22..9c7724c 100644
--- a/src/pcu_l1_if.cpp
+++ b/src/pcu_l1_if.cpp
@@ -185,24 +185,21 @@
 	msgb_free(msg);
 }
 
-void pcu_l1if_tx_ptcch(msgb *msg, uint8_t trx, uint8_t ts, uint16_t arfcn,
-	uint32_t fn, uint8_t block_nr)
+void pcu_l1if_tx_ptcch(uint8_t trx, uint8_t ts, uint16_t arfcn,
+		       uint32_t fn, uint8_t block_nr,
+		       uint8_t *data, size_t data_len)
 {
 	struct gprs_rlcmac_bts *bts = bts_main_data();
 
 	if (bts->gsmtap_categ_mask & (1 << PCU_GSMTAP_C_DL_PTCCH))
-		gsmtap_send(bts->gsmtap, arfcn, ts, GSMTAP_CHANNEL_PTCCH, 0, fn, 0, 0, msg->data, msg->len);
+		gsmtap_send(bts->gsmtap, arfcn, ts, GSMTAP_CHANNEL_PTCCH, 0, fn, 0, 0, data, data_len);
 #ifdef ENABLE_DIRECT_PHY
 	if (bts->trx[trx].fl1h) {
-		l1if_pdch_req(bts->trx[trx].fl1h, ts, 1, fn, arfcn, block_nr,
-			msg->data, msg->len);
-		msgb_free(msg);
+		l1if_pdch_req(bts->trx[trx].fl1h, ts, 1, fn, arfcn, block_nr, data, data_len);
 		return;
 	}
 #endif
-	pcu_tx_data_req(trx, ts, PCU_IF_SAPI_PTCCH, arfcn, fn, block_nr,
-			msg->data, msg->len);
-	msgb_free(msg);
+	pcu_tx_data_req(trx, ts, PCU_IF_SAPI_PTCCH, arfcn, fn, block_nr, data, data_len);
 }
 
 void pcu_l1if_tx_agch(bitvec * block, int plen)
@@ -361,6 +358,25 @@
 	return gprs_rlcmac_rcv_rts_block(bts_main_data(),
 					trx, ts, fn, block_nr);
 }
+extern "C" int pcu_rx_rts_req_ptcch(uint8_t trx, uint8_t ts,
+	uint32_t fn, uint8_t block_nr)
+{
+	struct gprs_rlcmac_bts *bts = bts_main_data();
+	struct gprs_rlcmac_pdch *pdch;
+
+	/* Prevent buffer overflow */
+	if (trx >= ARRAY_SIZE(bts->trx) || ts >= 8)
+		return -EINVAL;
+
+	/* Make sure PDCH time-slot is enabled */
+	pdch = &bts->trx[trx].pdch[ts];
+	if (!pdch->m_is_enabled)
+		return -EAGAIN;
+
+	pcu_l1if_tx_ptcch(trx, ts, bts->trx[trx].arfcn, fn, block_nr,
+			  pdch->ptcch_msg, GSM_MACBLOCK_LEN);
+	return 0;
+}
 
 static int pcu_rx_rts_req(struct gsm_pcu_if_rts_req *rts_req)
 {
@@ -377,13 +393,8 @@
 			rts_req->fn, rts_req->block_nr);
 		break;
 	case PCU_IF_SAPI_PTCCH:
-		/* FIXME */
-		{
-			struct msgb *msg = msgb_alloc(GSM_MACBLOCK_LEN, "l1_prim");
-			memset(msgb_put(msg, GSM_MACBLOCK_LEN), 0x2b, GSM_MACBLOCK_LEN);
-			pcu_l1if_tx_ptcch(msg, rts_req->trx_nr, rts_req->ts_nr,
-				rts_req->arfcn, rts_req->fn, rts_req->block_nr);
-		}
+		pcu_rx_rts_req_ptcch(rts_req->trx_nr, rts_req->ts_nr,
+			rts_req->fn, rts_req->block_nr);
 		break;
 	default:
 		LOGP(DL1IF, LOGL_ERROR, "Received PCU RTS request with "
diff --git a/src/pcu_l1_if.h b/src/pcu_l1_if.h
index cb2a6df..888ad28 100644
--- a/src/pcu_l1_if.h
+++ b/src/pcu_l1_if.h
@@ -154,8 +154,9 @@
 #ifdef __cplusplus
 void pcu_l1if_tx_pdtch(msgb *msg, uint8_t trx, uint8_t ts, uint16_t arfcn, 
         uint32_t fn, uint8_t block_nr);
-void pcu_l1if_tx_ptcch(msgb *msg, uint8_t trx, uint8_t ts, uint16_t arfcn, 
-        uint32_t fn, uint8_t block_nr);
+void pcu_l1if_tx_ptcch(uint8_t trx, uint8_t ts, uint16_t arfcn,
+		       uint32_t fn, uint8_t block_nr,
+		       uint8_t *data, size_t data_len);
 void pcu_l1if_tx_agch(bitvec * block, int len);
 
 void pcu_l1if_tx_pch(bitvec * block, int plen, const char *imsi);
@@ -174,6 +175,8 @@
 #endif
 int pcu_rx_rts_req_pdtch(uint8_t trx, uint8_t ts,
 	uint32_t fn, uint8_t block_nr);
+int pcu_rx_rts_req_ptcch(uint8_t trx, uint8_t ts,
+	uint32_t fn, uint8_t block_nr);
 
 int pcu_rx_data_ind_pdtch(uint8_t trx, uint8_t ts, uint8_t *data,
 	uint8_t len, uint32_t fn, struct pcu_l1_meas *meas);
