diff --git a/openbsc/src/abis_nm.c b/openbsc/src/abis_nm.c
index 6864216..f2e68aa 100644
--- a/openbsc/src/abis_nm.c
+++ b/openbsc/src/abis_nm.c
@@ -416,7 +416,7 @@
 	/* queue OML messages */
 	if (llist_empty(&bts->abis_queue) && !bts->abis_nm_pend) {
 		bts->abis_nm_pend = OBSC_NM_W_ACK_CB(msg);
-		return _abis_nm_sendmsg(msg);
+		return _abis_nm_sendmsg(msg, 0);
 	} else {
 		msgb_enqueue(&bts->abis_queue, msg);
 		return 0;
@@ -985,7 +985,7 @@
 	while (!llist_empty(&bts->abis_queue)) {
 		msg = msgb_dequeue(&bts->abis_queue);
 		wait = OBSC_NM_W_ACK_CB(msg);
-		_abis_nm_sendmsg(msg);
+		_abis_nm_sendmsg(msg, 0);
 
 		if (wait)
 			break;
diff --git a/openbsc/src/abis_om2000.c b/openbsc/src/abis_om2000.c
index bde9341..dd4416b 100644
--- a/openbsc/src/abis_om2000.c
+++ b/openbsc/src/abis_om2000.c
@@ -40,6 +40,7 @@
 #include <openbsc/abis_nm.h>
 #include <openbsc/abis_om2000.h>
 #include <openbsc/signal.h>
+#include <openbsc/e1_input.h>
 
 #define OM_ALLOC_SIZE		1024
 #define OM_HEADROOM_SIZE	128
@@ -483,11 +484,47 @@
 				   "OM2000");
 }
 
+static char *om2k_mo_name(const struct abis_om2k_mo *mo)
+{
+	static char mo_buf[64];
+
+	memset(mo_buf, 0, sizeof(mo_buf));
+	snprintf(mo_buf, sizeof(mo_buf), "%s/%02x/%02x/%02x",
+		 get_value_string(om2k_mo_class_short_vals, mo->class),
+		 mo->bts, mo->assoc_so, mo->inst);
+	return mo_buf;
+}
+
 static int abis_om2k_sendmsg(struct gsm_bts *bts, struct msgb *msg)
 {
-	msg->trx = bts->c0;
+	struct abis_om2k_hdr *o2h;
+	int to_trx_oml;
 
-	return _abis_nm_sendmsg(msg);
+	msg->l2h = msg->data;
+	o2h = (struct abis_om2k_hdr *) msg->l2h;
+
+	switch (o2h->mo.class) {
+	case OM2K_MO_CLS_TRXC:
+	case OM2K_MO_CLS_TX:
+	case OM2K_MO_CLS_RX:
+	case OM2K_MO_CLS_TS:
+		/* Route through per-TRX OML Link to the appropriate TRX */
+		to_trx_oml = 1;
+		msg->trx = gsm_bts_trx_by_nr(bts, o2h->mo.inst);
+		if (!msg->trx) {
+			LOGP(DNM, LOGL_ERROR, "MO=%s Tx Dropping msg to "
+				"non-existing TRX\n", om2k_mo_name(&o2h->mo));
+			return -ENODEV;
+		}
+		break;
+	default:
+		/* Route through the IXU/DXU OML Link */
+		msg->trx = bts->c0;
+		to_trx_oml = 0;
+		break;
+	}
+
+	return _abis_nm_sendmsg(msg, to_trx_oml);
 }
 
 static void fill_om2k_hdr(struct abis_om2k_hdr *o2h, const struct abis_om2k_mo *mo,
@@ -501,17 +538,6 @@
 	memcpy(&o2h->mo, mo, sizeof(o2h->mo));
 }
 
-static char *om2k_mo_name(const struct abis_om2k_mo *mo)
-{
-	static char mo_buf[64];
-
-	memset(mo_buf, 0, sizeof(mo_buf));
-	snprintf(mo_buf, sizeof(mo_buf), "%s/%02x/%02x/%02x",
-		 get_value_string(om2k_mo_class_short_vals, mo->class),
-		 mo->bts, mo->assoc_so, mo->inst);
-	return mo_buf;
-}
-
 const struct abis_om2k_mo om2k_mo_cf = { OM2K_MO_CLS_CF, 0, 0xFF, 0 };
 const struct abis_om2k_mo om2k_mo_is = { OM2K_MO_CLS_IS, 0, 0xFF, 0 };
 
diff --git a/openbsc/src/e1_input.c b/openbsc/src/e1_input.c
index 916bb56..e5dd11b 100644
--- a/openbsc/src/e1_input.c
+++ b/openbsc/src/e1_input.c
@@ -255,7 +255,7 @@
 	return 0;
 }
 
-int _abis_nm_sendmsg(struct msgb *msg)
+int _abis_nm_sendmsg(struct msgb *msg, int to_trx_oml)
 {
 	struct e1inp_sign_link *sign_link;
 	struct e1inp_driver *e1inp_driver;
@@ -268,12 +268,12 @@
 		return -EINVAL;
 	}
 
-#if 0
 	/* Check for TRX-specific OML link first */
-	if (msg->trx->oml_link)
+	if (to_trx_oml) {
+		if (!msg->trx->oml_link)
+			return -ENODEV;
 		sign_link = msg->trx->oml_link;
-	else
-#endif
+	} else
 		sign_link = msg->trx->bts->oml_link;
 
 	e1i_ts = sign_link->ts;
diff --git a/openbsc/src/rs232.c b/openbsc/src/rs232.c
index bb940fe..7550571 100644
--- a/openbsc/src/rs232.c
+++ b/openbsc/src/rs232.c
@@ -54,7 +54,7 @@
 static int handle_ser_write(struct bsc_fd *bfd);
 
 /* callback from abis_nm */
-int _abis_nm_sendmsg(struct msgb *msg)
+int _abis_nm_sendmsg(struct msgb *msg, int to_trx_oml)
 {
 	struct serial_handle *sh = ser_handle;
 	u_int8_t *lapd;
