diff --git a/src/e1_test_dieter.c b/src/e1_test_dieter.c
new file mode 100644
index 0000000..6277556
--- /dev/null
+++ b/src/e1_test_dieter.c
@@ -0,0 +1,82 @@
+#include <stdint.h>
+#include <unistd.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#include <osmocom/core/utils.h>
+#include <osmocom/core/logging.h>
+#include <osmocom/core/application.h>
+#include <osmocom/gsm/gsm_utils.h>
+
+#include "osmo_e1.h"
+
+static struct osmo_e1_instance inst;
+static struct log_info log_info = {};
+
+static void data_cb(struct osmo_e1_instance_ts *e1t, struct msgb *msg)
+{
+	printf("Rx TS %02u: %s\n", e1t->ts_nr, msgb_hexdump(msg));
+	msgb_free(msg);
+}
+
+static void notify_cb(struct osmo_e1_instance *e1i, enum osmo_e1_notify_event evt,
+			bool present, void *data)
+{
+	fprintf(stdout, "NOTIFY: %s %s\n", osmo_e1_notify_event_name(evt), present ? "PRESENT" : "ABSENT");
+}
+
+static void read_file(const char *fname)
+{
+	int fd;
+
+	fd = open(fname, O_RDONLY);
+	if (fd < 0)
+		exit(23);
+	while (1) {
+		int rc;
+		uint8_t buf[32];
+
+		rc = read(fd, buf, sizeof(buf));
+		if (rc <= 0)
+			return;
+		if (rc < sizeof(buf))
+			exit(24);
+		//printf("FRAME: %s\n", osmo_hexdump(buf, sizeof(buf)));
+		osmo_e1_rx_frame(&inst, buf);
+	}
+}
+
+int main(int argc, char **argv)
+{
+	int i;
+
+	osmo_init_logging2(NULL, &log_info);
+	osmo_e1_init();
+
+	osmo_e1_instance_init(&inst, "e1_test", &notify_cb, true, NULL);
+	for (i = 1; i < 32; i++) {
+		struct osmo_e1_instance_ts *e1t = osmo_e1_instance_ts(&inst, i);
+		enum osmo_e1_ts_mode mode;
+		bool enable;
+		switch (i) {
+		case 2:
+			mode = OSMO_E1_TS_HDLC_CRC;
+			enable = true;
+			break;
+		case 5:
+		case 6:
+		case 7:
+		case 8:
+		default:
+			mode = OSMO_E1_TS_RAW;
+			enable = false;
+			break;
+		}
+		osmo_e1_ts_config(e1t, &data_cb, 64, enable, mode);
+	}
+
+	read_file("Insite_to_Racal_E1.bin");
+}
