diff --git a/src/e1_input.c b/src/e1_input.c
index 14352d0..7fbf179 100644
--- a/src/e1_input.c
+++ b/src/e1_input.c
@@ -223,6 +223,7 @@
 {
 	struct e1inp_sign_link *sign_link;
 	struct e1inp_driver *e1inp_driver;
+	struct e1inp_ts *e1i_ts;
 
 	msg->l2h = msg->data;
 
@@ -232,15 +233,17 @@
 	}
 
 	sign_link = msg->trx->rsl_link;
+	e1i_ts = sign_link->ts;
+	if (!bsc_timer_pending(&e1i_ts->sign.tx_timer)) {
+		/* notify the driver we have something to write */
+		e1inp_driver = sign_link->ts->line->driver;
+		e1inp_driver->want_write(e1i_ts);
+	}
 	msgb_enqueue(&sign_link->tx_list, msg);
 
 	/* dump it */
 	write_pcap_packet(PCAP_OUTPUT, sign_link->sapi, sign_link->tei, msg);
 
-	/* notify the driver we have something to write */
-	e1inp_driver = sign_link->ts->line->driver;
-	e1inp_driver->want_write(sign_link->ts);
-
 	return 0;
 }
 
@@ -248,6 +251,7 @@
 {
 	struct e1inp_sign_link *sign_link;
 	struct e1inp_driver *e1inp_driver;
+	struct e1inp_ts *e1i_ts;
 
 	msg->l2h = msg->data;
 
@@ -257,15 +261,17 @@
 	}
 
 	sign_link = msg->trx->bts->oml_link;
+	e1i_ts = sign_link->ts;
+	if (!bsc_timer_pending(&e1i_ts->sign.tx_timer)) {
+		/* notify the driver we have something to write */
+		e1inp_driver = sign_link->ts->line->driver;
+		e1inp_driver->want_write(e1i_ts);
+	}
 	msgb_enqueue(&sign_link->tx_list, msg);
 
 	/* dump it */
 	write_pcap_packet(PCAP_OUTPUT, sign_link->sapi, sign_link->tei, msg);
 
-	/* notify the driver we have something to write */
-	e1inp_driver = sign_link->ts->line->driver;
-	e1inp_driver->want_write(sign_link->ts);
-
 	return 0;
 }
 
diff --git a/src/input/misdn.c b/src/input/misdn.c
index d6ba63c..77da77c 100644
--- a/src/input/misdn.c
+++ b/src/input/misdn.c
@@ -171,6 +171,27 @@
 	return ret;
 }
 
+static int ts_want_write(struct e1inp_ts *e1i_ts)
+{
+	/* We never include the mISDN B-Channel FD into the
+	 * writeset, since it doesn't support poll() based
+	 * write flow control */		
+	if (e1i_ts->type == E1INP_TS_TYPE_TRAU)
+		return 0;
+
+	e1i_ts->driver.misdn.fd.when |= BSC_FD_WRITE;
+
+	return 0;
+}
+
+static void timeout_ts1_write(void *data)
+{
+	struct e1inp_ts *e1i_ts = (struct e1inp_ts *)data;
+
+	/* trigger write of ts1, due to tx delay timer */
+	ts_want_write(e1i_ts);
+}
+
 static int handle_ts1_write(struct bsc_fd *bfd)
 {
 	struct e1inp_line *line = bfd->data;
@@ -183,10 +204,12 @@
 	u_int8_t *l2_data;
 	int ret;
 
+	bfd->when &= ~BSC_FD_WRITE;
+
 	/* get the next msg for this timeslot */
 	msg = e1inp_tx_ts(e1i_ts, &sign_link);
 	if (!msg) {
-		bfd->when &= ~BSC_FD_WRITE;
+		/* no message after tx delay timer */
 		return 0;
 	}
 
@@ -211,8 +234,10 @@
 		fprintf(stderr, "%s sendto failed %d\n", __func__, ret);
 	msgb_free(msg);
 
-	/* FIXME: this has to go */
-	usleep(100000);
+	/* set tx delay timer for next event */
+	e1i_ts->sign.tx_timer.cb = timeout_ts1_write;
+	e1i_ts->sign.tx_timer.data = e1i_ts;
+	bsc_schedule_timer(&e1i_ts->sign.tx_timer, 0, 50000);
 
 	return ret;
 }
@@ -349,19 +374,6 @@
 	return ret;
 }
 
-static int ts_want_write(struct e1inp_ts *e1i_ts)
-{
-	/* We never include the mISDN B-Channel FD into the
-	 * writeset, since it doesn't support poll() based
-	 * write flow control */		
-	if (e1i_ts->type == E1INP_TS_TYPE_TRAU)
-		return 0;
-
-	e1i_ts->driver.misdn.fd.when |= BSC_FD_WRITE;
-
-	return 0;
-}
-
 struct e1inp_driver misdn_driver = {
 	.name = "mISDNuser",
 	.want_write = ts_want_write,
