diff --git a/firmware/ice40-riscv/common/console.c b/firmware/ice40-riscv/common/console.c
new file mode 100644
index 0000000..c5a9136
--- /dev/null
+++ b/firmware/ice40-riscv/common/console.c
@@ -0,0 +1,76 @@
+/*
+ * console.c
+ *
+ * Copyright (C) 2019-2020  Sylvain Munaut <tnt@246tNt.com>
+ * SPDX-License-Identifier: LGPL-3.0-or-later
+ */
+
+#include <stdint.h>
+
+#include "config.h"
+#include "mini-printf.h"
+
+
+struct wb_uart {
+	uint32_t data;
+	uint32_t clkdiv;
+} __attribute__((packed,aligned(4)));
+
+static volatile struct wb_uart * const uart_regs = (void*)(UART_BASE);
+
+
+static char _printf_buf[128];
+
+void console_init(void)
+{
+#ifdef BOARD_E1_TRACER
+	uart_regs->clkdiv = 22;	/* ~1 Mbaud with clk=24MHz */
+#else
+	uart_regs->clkdiv = 29;	/* ~1 Mbaud with clk=30.72MHz */
+#endif
+}
+
+char getchar(void)
+{
+	int32_t c;
+	do {
+		c = uart_regs->data;
+	} while (c & 0x80000000);
+	return c;
+}
+
+int getchar_nowait(void)
+{
+	int32_t c;
+	c = uart_regs->data;
+	return c & 0x80000000 ? -1 : (c & 0xff);
+}
+
+void putchar(char c)
+{
+	uart_regs->data = c;
+}
+
+void puts(const char *p)
+{
+	char c;
+	while ((c = *(p++)) != 0x00) {
+		if (c == '\n')
+			uart_regs->data = '\r';
+		uart_regs->data = c;
+	}
+}
+
+int printf(const char *fmt, ...)
+{
+        va_list va;
+        int l;
+
+        va_start(va, fmt);
+        l = mini_vsnprintf(_printf_buf, 128, fmt, va);
+        va_end(va);
+
+	puts(_printf_buf);
+
+	return l;
+}
