diff --git a/openbsc/src/bsc_init.c b/openbsc/src/bsc_init.c
index 13a9677..91fb4aa 100644
--- a/openbsc/src/bsc_init.c
+++ b/openbsc/src/bsc_init.c
@@ -1219,8 +1219,10 @@
 		if (!is_ipaccess_bts(bts))
 			rc = e1_reconfig_bts(bts);
 
-		if (rc < 0)
+		if (rc < 0) {
+			fprintf(stderr, "Error in E1 input driver setup\n");
 			exit (1);
+		}
 	}
 
 	/* initialize nanoBTS support omce */
diff --git a/openbsc/src/e1_config.c b/openbsc/src/e1_config.c
index f781b9e..dd81992 100644
--- a/openbsc/src/e1_config.c
+++ b/openbsc/src/e1_config.c
@@ -48,12 +48,19 @@
 
 	DEBUGP(DMI, "e1_reconfig_ts(%u,%u,%u)\n", ts->trx->bts->nr, ts->trx->nr, ts->nr);
 
-	if (!e1_link->e1_ts)
+	if (!e1_link->e1_ts) {
+		LOGP(DINP, LOGL_ERROR, "TS (%u/%u/%u) without E1 timeslot?\n",
+		     ts->nr, ts->trx->nr, ts->trx->bts->nr);
 		return 0;
+	}
 
 	line = e1inp_line_get(e1_link->e1_nr);
-	if (!line)
+	if (!line) {
+		LOGP(DINP, LOGL_ERROR, "TS (%u/%u/%u) referring to "
+		     "non-existing E1 line %u\n", ts->nr, ts->trx->nr,
+		     ts->trx->bts->nr, e1_link->e1_nr);
 		return -ENOMEM;
+	}
 
 	switch (ts->pchan) {
 	case GSM_PCHAN_TCH_F:
@@ -77,19 +84,29 @@
 	struct e1inp_sign_link *rsl_link;
 	int i;
 
-	if (!e1_link->e1_ts)
+	if (!e1_link->e1_ts) {
+		LOGP(DINP, LOGL_ERROR, "TRX (%u/%u) RSL link without "
+		     "timeslot?\n", trx->bts->nr, trx->nr);
 		return -EINVAL;
+	}
 
 	/* RSL Link */
 	line = e1inp_line_get(e1_link->e1_nr);
-	if (!line)
+	if (!line) {
+		LOGP(DINP, LOGL_ERROR, "TRX (%u/%u) RSL link referring "
+		     "to non-existing E1 line %u\n", trx->bts->nr,
+		     trx->nr, e1_link->e1_nr);
 		return -ENOMEM;
+	}
 	sign_ts = &line->ts[e1_link->e1_ts-1];
 	e1inp_ts_config(sign_ts, line, E1INP_TS_TYPE_SIGN);
 	rsl_link = e1inp_sign_link_create(sign_ts, E1INP_SIGN_RSL,
 					  trx, trx->rsl_tei, SAPI_RSL);
-	if (!rsl_link)
+	if (!rsl_link) {
+		LOGP(DINP, LOGL_ERROR, "TRX (%u/%u) RSL link creation "
+		     "failed\n", trx->bts->nr, trx->nr);
 		return -ENOMEM;
+	}
 	if (trx->rsl_link)
 		e1inp_sign_link_destroy(trx->rsl_link);
 	trx->rsl_link = rsl_link;
@@ -110,19 +127,28 @@
 
 	DEBUGP(DMI, "e1_reconfig_bts(%u)\n", bts->nr);
 
-	if (!e1_link->e1_ts)
+	if (!e1_link->e1_ts) {
+		LOGP(DINP, LOGL_ERROR, "BTS %u OML link without timeslot?\n",
+		     bts->nr);
 		return -EINVAL;
+	}
 
 	/* OML link */
 	line = e1inp_line_get(e1_link->e1_nr);
-	if (!line)
+	if (!line) {
+		LOGP(DINP, LOGL_ERROR, "BTS %u OML link referring to "
+		     "non-existing E1 line %u\n", bts->nr, e1_link->e1_nr);
 		return -ENOMEM;
+	}
 	sign_ts = &line->ts[e1_link->e1_ts-1];
 	e1inp_ts_config(sign_ts, line, E1INP_TS_TYPE_SIGN);
 	oml_link = e1inp_sign_link_create(sign_ts, E1INP_SIGN_OML,
 					  bts->c0, bts->oml_tei, SAPI_OML);
-	if (!oml_link)
+	if (!oml_link) {
+		LOGP(DINP, LOGL_ERROR, "BTS %u OML link creation failed\n",
+		     bts->nr);
 		return -ENOMEM;
+	}
 	if (bts->oml_link)
 		e1inp_sign_link_destroy(bts->oml_link);
 	bts->oml_link = oml_link;
