diff --git a/openbsc/src/libbsc/bts_sysmobts.c b/openbsc/src/libbsc/bts_sysmobts.c
new file mode 100644
index 0000000..9479206
--- /dev/null
+++ b/openbsc/src/libbsc/bts_sysmobts.c
@@ -0,0 +1,71 @@
+/* sysmocom sysmoBTS specific code */
+
+/* (C) 2010-2012 by Harald Welte <laforge@gnumonks.org>
+ *
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <arpa/inet.h>
+
+#include <osmocom/gsm/tlv.h>
+
+#include <openbsc/gsm_data.h>
+#include <openbsc/signal.h>
+#include <openbsc/abis_nm.h>
+#include <osmocom/abis/e1_input.h>
+#include <osmocom/gsm/tlv.h>
+#include <osmocom/core/msgb.h>
+#include <osmocom/core/talloc.h>
+#include <openbsc/gsm_data.h>
+#include <openbsc/abis_nm.h>
+#include <openbsc/abis_rsl.h>
+#include <openbsc/debug.h>
+#include <osmocom/abis/subchan_demux.h>
+#include <osmocom/abis/ipaccess.h>
+#include <osmocom/core/logging.h>
+
+extern int bts_ipa_nm_sig_cb(unsigned int subsys, unsigned int signal,
+			     void *handler_data, void *signal_data);
+
+extern struct gsm_bts_model bts_model_nanobts;
+
+static struct gsm_bts_model model_sysmobts;
+
+static int bts_model_sysmobts_start(struct gsm_network *net)
+{
+	model_sysmobts.features.data = &model_sysmobts._features_data[0];
+	model_sysmobts.features.data_len =
+				sizeof(model_sysmobts._features_data);
+
+	gsm_btsmodel_set_feature(&model_sysmobts, BTS_FEAT_GPRS);
+	gsm_btsmodel_set_feature(&model_sysmobts, BTS_FEAT_EGPRS);
+
+	osmo_signal_register_handler(SS_NM, bts_ipa_nm_sig_cb, NULL);
+
+	return 0;
+}
+
+int bts_model_sysmobts_init(void)
+{
+	memcpy(&model_sysmobts, &bts_model_nanobts, sizeof(model_sysmobts));
+
+	model_sysmobts.name = "sysmobts";
+	model_sysmobts.start = bts_model_sysmobts_start;
+	model_sysmobts.type = GSM_BTS_TYPE_OSMO_SYSMO;
+
+	return gsm_bts_model_register(&model_sysmobts);
+}
