diff --git a/src/libbsc/abis_nm.c b/src/libbsc/abis_nm.c
index e3c4408..b2cfa53 100644
--- a/src/libbsc/abis_nm.c
+++ b/src/libbsc/abis_nm.c
@@ -678,6 +678,14 @@
 	return 0;
 }
 
+static int abis_nm_rx_opstart_ack(struct msgb *mb)
+{
+	struct abis_om_fom_hdr *foh = msgb_l3(mb);
+	DEBUGPFOH(DNM, foh, "Opstart ACK\n");
+	osmo_signal_dispatch(SS_NM, S_NM_OPSTART_ACK, foh);
+	return 0;
+}
+
 bool all_trx_rsl_connected_unlocked(const struct gsm_bts *bts)
 {
 	const struct gsm_bts_trx *trx;
@@ -802,7 +810,7 @@
 		ret = abis_nm_rx_lmt_event(mb);
 		break;
 	case NM_MT_OPSTART_ACK:
-		DEBUGPFOH(DNM, foh, "Opstart ACK\n");
+		abis_nm_rx_opstart_ack(mb);
 		break;
 	case NM_MT_SET_CHAN_ATTR_ACK:
 		DEBUGPFOH(DNM, foh, "Set Channel Attributes ACK\n");
@@ -1896,6 +1904,7 @@
 	if (bts->type == GSM_BTS_TYPE_BS11)
 		msgb_tlv_put(msg, 0x59, 1, &zero);
 
+	DEBUGPFOH(DNM, foh, "%s(): sending %s\n", __func__, msgb_hexdump(msg));
 	return abis_nm_sendmsg(bts, msg);
 }
 
diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c
index 429d3c7..92b8c27 100644
--- a/src/libbsc/bsc_init.c
+++ b/src/libbsc/bsc_init.c
@@ -354,7 +354,6 @@
 
 	for (i = 0; i < ARRAY_SIZE(trx->ts); i++) {
 		generate_ma_for_ts(&trx->ts[i]);
-		dyn_ts_init(&trx->ts[i]);
 	}
 }
 
diff --git a/src/libbsc/bts_ipaccess_nanobts.c b/src/libbsc/bts_ipaccess_nanobts.c
index d94a878..3eb7e0e 100644
--- a/src/libbsc/bts_ipaccess_nanobts.c
+++ b/src/libbsc/bts_ipaccess_nanobts.c
@@ -294,6 +294,46 @@
 	return 0;
 }
 
+static struct gsm_bts_trx_ts *gsm_bts_trx_ts(struct gsm_network *net,
+					     int bts_nr, int trx_nr, int ts_nr)
+{
+	struct gsm_bts *bts;
+	struct gsm_bts_trx *trx;
+	bts = gsm_bts_num(net, bts_nr);
+	if (!bts)
+		return NULL;
+	trx = gsm_bts_trx_by_nr(bts, trx_nr);
+	if (!trx)
+		return NULL;
+	if (ts_nr < 0 || ts_nr > ARRAY_SIZE(trx->ts))
+		return NULL;
+	return &trx->ts[ts_nr];
+}
+
+static void nm_rx_opstart_ack_chan(struct abis_om_fom_hdr *foh)
+{
+	struct gsm_bts_trx_ts *ts;
+	ts = gsm_bts_trx_ts(bsc_gsmnet, foh->obj_inst.bts_nr, foh->obj_inst.trx_nr, foh->obj_inst.ts_nr);
+	if (!ts) {
+		LOGP(DNM, LOGL_ERROR, "%s Channel OPSTART ACK for non-existent TS\n",
+		     abis_nm_dump_foh(foh));
+		return;
+	}
+
+	dyn_ts_init(ts);
+}
+
+static void nm_rx_opstart_ack(struct abis_om_fom_hdr *foh)
+{
+	switch (foh->obj_class) {
+	case NM_OC_CHANNEL:
+		nm_rx_opstart_ack_chan(foh);
+		break;
+	default:
+		break;
+	}
+}
+
 /* Callback function to be called every time we receive a signal from NM */
 static int bts_ipa_nm_sig_cb(unsigned int subsys, unsigned int signal,
 		     void *handler_data, void *signal_data)
@@ -307,6 +347,9 @@
 	case S_NM_STATECHG_OPER:
 	case S_NM_STATECHG_ADM:
 		return nm_statechg_event(signal, signal_data);
+	case S_NM_OPSTART_ACK:
+		nm_rx_opstart_ack(signal_data);
+		return 0;
 	default:
 		break;
 	}
