diff --git a/include/osmocom/core/Makefile.am b/include/osmocom/core/Makefile.am
index e1b52d5..7c29ca1 100644
--- a/include/osmocom/core/Makefile.am
+++ b/include/osmocom/core/Makefile.am
@@ -60,6 +60,7 @@
 	utils.h \
 	write_queue.h \
 	sockaddr_str.h \
+	soft_uart.h \
 	time_cc.h \
 	use_count.h \
 	socket_compat.h \
diff --git a/include/osmocom/core/soft_uart.h b/include/osmocom/core/soft_uart.h
new file mode 100644
index 0000000..36a43fe
--- /dev/null
+++ b/include/osmocom/core/soft_uart.h
@@ -0,0 +1,85 @@
+#pragma once
+
+/*! \file soft_uart.h
+ *  Software UART implementation. */
+/*
+ * (C) 2022 by Harald Welte <laforge@gnumonks.org>
+ *
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <stdint.h>
+#include <osmocom/core/bits.h>
+#include <osmocom/core/msgb.h>
+
+enum osmo_soft_uart_parity_mode {
+	OSMO_SUART_PARITY_NONE,
+	OSMO_SUART_PARITY_EVEN,
+	OSMO_SUART_PARITY_ODD,
+	_OSMO_SUART_PARITY_NUM
+};
+
+enum osmo_soft_uart_flags {
+	OSMO_SUART_F_FRAMING_ERROR	= (1 << 0),
+	OSMO_SUART_F_PARITY_ERROR	= (1 << 1),
+	OSMO_SUART_F_BREAK		= (1 << 2),
+};
+
+#if 0
+enum osmo_soft_uart_status {
+	/* RTS, CTS, ... */
+	_fixme,
+};
+#endif
+
+/* configuration for a soft-uart */
+struct osmo_soft_uart_cfg {
+	/*! number of data bits (typically 5, 6, 7 or 8) */
+	uint8_t num_data_bits;
+	/*! number of stop bots (typically 1 or 2) */
+	uint8_t num_stop_bits;
+	/*! parity mode (none, even, odd) */
+	enum osmo_soft_uart_parity_mode parity_mode;
+	/*! size of receive buffer; UART will buffer up to that number of characters
+	 *  before calling the receive call-back */
+	unsigned int rx_buf_size;
+	/*! receive timeout; UART will flush receive buffer via the receive call-back
+	 * after indicated number of milli-seconds even if it is not full yet */
+	unsigned int rx_timeout_ms;
+
+	/*! opaque application-private data; passed to call-backs */
+	void *priv;
+
+	/*! receive call-back. Either rx_buf_size characters were received or rx_timeout_ms
+	 * expired, or an error flag was detected (related to last byte received).
+	 * 'flags' is a bit-mask of osmo_soft_uart_flags,  */
+	void (*rx_cb)(void *priv, struct msgb *rx_data, unsigned int flags);
+
+	/*! modem status line change call-back. gets bitmask of osmo_soft_uart_status */
+	void (*status_change_cb)(void *priv, unsigned int status);
+};
+
+struct osmo_soft_uart;
+
+struct osmo_soft_uart *osmo_soft_uart_alloc(void *ctx, const char *name);
+int osmo_soft_uart_configure(struct osmo_soft_uart *suart, const struct osmo_soft_uart_cfg *cfg);
+int osmo_soft_uart_enable(struct osmo_soft_uart *suart, bool rx, bool tx);
+
+int osmo_soft_uart_rx_ubits(struct osmo_soft_uart *suart, const ubit_t *ubits, size_t n_ubits);
+int osmo_soft_uart_tx_ubits(struct osmo_soft_uart *suart, ubit_t *ubits, size_t n_ubits);
+
+void osmo_soft_uart_tx(struct osmo_soft_uart *suart, struct msgb *tx_data);
+int osmo_soft_uart_set_status(struct osmo_soft_uart *suart, unsigned int status);
