diff --git a/openbsc/tests/Makefile.am b/openbsc/tests/Makefile.am
index c0e48df..c9afeed 100644
--- a/openbsc/tests/Makefile.am
+++ b/openbsc/tests/Makefile.am
@@ -4,6 +4,10 @@
 SUBDIRS += bsc-nat
 endif
 
+if BUILD_SMPP
+SUBDIRS += smpp
+endif
+
 
 # The `:;' works around a Bash 3.2 bug when the output is not writeable.
 $(srcdir)/package.m4: $(top_srcdir)/configure.ac
diff --git a/openbsc/tests/atlocal.in b/openbsc/tests/atlocal.in
index 0ce168b..bfbecd4 100644
--- a/openbsc/tests/atlocal.in
+++ b/openbsc/tests/atlocal.in
@@ -1 +1,2 @@
 enable_nat_test='@osmo_ac_build_nat@'
+enable_smpp_test='@osmo_ac_build_smpp@'
diff --git a/openbsc/tests/smpp/Makefile.am b/openbsc/tests/smpp/Makefile.am
new file mode 100644
index 0000000..eb25965
--- /dev/null
+++ b/openbsc/tests/smpp/Makefile.am
@@ -0,0 +1,12 @@
+AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -I$(top_srcdir)/src/libmsc
+AM_CFLAGS=-Wall -ggdb3 $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS) $(LIBOSMOSCCP_CFLAGS) $(LIBOSMOABIS_CFLAGS) $(COVERAGE_CFLAGS)
+AM_LDFLAGS = $(COVERAGE_LDFLAGS)
+
+EXTRA_DIST = smpp_test.ok smpp_test.err
+
+noinst_PROGRAMS = smpp_test
+
+smpp_test_SOURCES = smpp_test.c \
+	$(top_srcdir)/src/libmsc/smpp_utils.c
+smpp_test_LDADD = $(LIBOSMOCORE_LIBS) \
+	$(top_srcdir)/src/libcommon/libcommon.a
diff --git a/openbsc/tests/smpp/smpp_test.c b/openbsc/tests/smpp/smpp_test.c
new file mode 100644
index 0000000..62fa9d2
--- /dev/null
+++ b/openbsc/tests/smpp/smpp_test.c
@@ -0,0 +1,73 @@
+/*
+ * (C) 2013 by Holger Hans Peter Freyther
+ * 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 <stdlib.h>
+#include <stdio.h>
+
+#include <openbsc/debug.h>
+
+#include <osmocom/core/application.h>
+#include <osmocom/core/backtrace.h>
+
+#include "smpp_smsc.h"
+
+struct coding_test {
+	uint8_t dcs;
+	uint8_t coding;
+	int	mode;
+	int	res;
+};
+
+static struct coding_test codecs[] = {
+	{ .dcs = 0xf6		, .coding = 0x02, .mode = MODE_8BIT,	.res = 0  },
+	{ .dcs = 0xf2		, .coding = 0x01, .mode = MODE_7BIT,	.res = 0  },
+	{ .dcs = 0x02		, .coding = 0x01, .mode = MODE_7BIT,	.res = 0  },
+	{ .dcs = 0x06		, .coding = 0x02, .mode = MODE_8BIT,	.res = 0  },
+	{ .dcs = 0x0A		, .coding = 0x08, .mode = MODE_8BIT,	.res = 0  },
+	{ .dcs = 0x0E		, .coding = 0xFF, .mode = 0xFF,		.res = -1 },
+	{ .dcs = 0xE0		, .coding = 0xFF, .mode = 0xFF,		.res = -1 },
+};
+
+static void test_coding_scheme(void)
+{
+	int i;
+	printf("Testing coding scheme support\n");
+
+	for (i = 0; i < ARRAY_SIZE(codecs); ++i) {
+		uint8_t coding;
+		int mode, res;
+
+		res = smpp_determine_scheme(codecs[i].dcs, &coding, &mode);
+		OSMO_ASSERT(res == codecs[i].res);
+		if (res != -1) {
+			OSMO_ASSERT(mode == codecs[i].mode);
+			OSMO_ASSERT(coding == codecs[i].coding);
+		}
+	}
+}
+
+int main(int argc, char **argv)
+{
+	osmo_init_logging(&log_info);
+	log_set_use_color(osmo_stderr_target, 0);
+	log_set_print_filename(osmo_stderr_target, 0);
+
+	test_coding_scheme();
+	return EXIT_SUCCESS;
+}
diff --git a/openbsc/tests/smpp/smpp_test.err b/openbsc/tests/smpp/smpp_test.err
new file mode 100644
index 0000000..ec966ba
--- /dev/null
+++ b/openbsc/tests/smpp/smpp_test.err
@@ -0,0 +1,2 @@
+SMPP MO Unknown Data Coding 0x0e
+SMPP MO Unknown Data Coding 0xe0
diff --git a/openbsc/tests/smpp/smpp_test.ok b/openbsc/tests/smpp/smpp_test.ok
new file mode 100644
index 0000000..fd44804
--- /dev/null
+++ b/openbsc/tests/smpp/smpp_test.ok
@@ -0,0 +1 @@
+Testing coding scheme support
diff --git a/openbsc/tests/testsuite.at b/openbsc/tests/testsuite.at
index e649f03..ea3fa1c 100644
--- a/openbsc/tests/testsuite.at
+++ b/openbsc/tests/testsuite.at
@@ -40,6 +40,14 @@
 AT_CHECK([$abs_top_builddir/tests/bsc-nat/bsc_nat_test], [], [expout], [ignore])
 AT_CLEANUP
 
+AT_SETUP([smpp])
+AT_KEYWORDS([smpp])
+AT_CHECK([test "$enable_smpp_test" != no || exit 77])
+cat $abs_srcdir/smpp/smpp_test.ok > expout
+cat $abs_srcdir/smpp/smpp_test.err > experr
+AT_CHECK([$abs_top_builddir/tests/smpp/smpp_test], [], [expout], [experr])
+AT_CLEANUP
+
 AT_SETUP([si])
 AT_KEYWORDS([si])
 cat $abs_srcdir/si/si_test.ok > expout
