diff --git a/include/openbsc/gsm_04_11.h b/include/openbsc/gsm_04_11.h
index 1c04467..7167a55 100644
--- a/include/openbsc/gsm_04_11.h
+++ b/include/openbsc/gsm_04_11.h
@@ -46,8 +46,28 @@
 	u_int8_t *user_data;
 };
 
+/* SMS deliver PDU */
+struct sms_deliver {
+	u_int8_t *smsc;
+	u_int8_t mti:2;
+	u_int8_t rd:1;
+	u_int8_t vpf:2;
+	u_int8_t srr:1;
+	u_int8_t udhi:1;
+	u_int8_t rp:1;
+	u_int8_t msg_ref;
+	u_int8_t *orig_addr;
+	u_int8_t pid;
+	u_int8_t dcs;
+	u_int8_t vp;
+	u_int8_t ud_len;
+	u_int8_t *user_data;
+};
+
 struct msgb;
 
 int gsm0411_rcv_sms(struct msgb *msg);
 
+int gsm0411_send_sms(struct gsm_lchan *lchan, struct sms_deliver *sms);
+
 #endif
diff --git a/src/gsm_04_08.c b/src/gsm_04_08.c
index a1a8f37..c367102 100644
--- a/src/gsm_04_08.c
+++ b/src/gsm_04_08.c
@@ -193,6 +193,8 @@
 
 	gsm48_sendmsg(msg);
 
+	gsm0411_send_sms(lchan, 0);
+
 	return gsm48_cc_tx_setup(lchan);
 }
 
diff --git a/src/gsm_04_11.c b/src/gsm_04_11.c
index fb86929..76a5cdd 100644
--- a/src/gsm_04_11.c
+++ b/src/gsm_04_11.c
@@ -73,6 +73,12 @@
 	return text;
 }
 
+static u_int8_t gsm0411_tpdu_from_sms(u_int8_t *tpdu, struct sms_deliver *sms)
+{
+	u_int8_t len = 0;
+
+}
+
 static int gsm411_sms_submit_from_msgb(struct msgb *msg)
 {
 	u_int8_t *smsp = msgb_sms(msg);
@@ -216,3 +222,45 @@
 	return rc;
 }
 
+/* Test TPDU */
+static u_int8_t tpdu_test[] = {
+	0x00, 0x01, 0x00, 0x04, 0x81, 0x32, 0x24, 0x00, 0x00, 0x24, 0xD7, 0x32, 0x7B, 0xFC, 0x6E, 0x97, 0x41, 0xF4, 0x37, 0x88, 0x8E, 0x2E, 0x83, 0x64, 0xB5, 0xE1, 0x0C, 0x74, 0x9C, 0x36, 0x41, 0xF4, 0xF2, 0x9C, 0x0E, 0x72, 0x97, 0xE9, 0xF7, 0xB7, 0x7C, 0x0D
+};
+
+int gsm0411_send_sms(struct gsm_lchan *lchan, struct sms_deliver *sms)
+{
+	struct msgb *msg = gsm411_msgb_alloc();
+	struct gsm48_hdr *gh;
+	struct gsm411_rp_hdr *rp;
+	u_int8_t *data, *tpdu, smslen;
+
+	msg->lchan = lchan;
+
+	gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh));
+	gh->proto_discr = GSM48_PDISC_SMS;
+	gh->msg_type = GSM411_MT_CP_DATA;
+
+	rp = (struct gsm411_rp_hdr *)msgb_put(msg, sizeof(*rp));
+	rp->msg_type = GSM411_MT_RP_DATA_MT;
+	rp->msg_ref = 42; /* FIXME: Choose randomly */
+	/* No OA or DA for now */
+	data = (u_int8_t *)msgb_put(msg, 1);
+	data[0] = 0;
+	data = (u_int8_t *)msgb_put(msg, 1);
+	data[0] = 0;
+
+	/* FIXME: Hardcoded for now */
+	smslen = gsm0411_tpdu_from_sms(tpdu, sms);
+
+	data = (u_int8_t *)msgb_put(msg, sizeof(tpdu_test));
+
+	//memcpy(data, tpdu, smslen);
+	memcpy(data, tpdu_test, sizeof(tpdu_test));
+
+	free(tpdu);
+
+	DEBUGP(DSMS, "TX: SMS SUBMIT\n");
+
+	return gsm0411_sendmsg(msg);
+}
+
diff --git a/tests/gsm0408/gsm0408_test.c b/tests/gsm0408/gsm0408_test.c
index 8705741..659a03b 100644
--- a/tests/gsm0408/gsm0408_test.c
+++ b/tests/gsm0408/gsm0408_test.c
@@ -78,3 +78,4 @@
 void db_create_subscriber(void) {}
 void rsl_chan_release(void) {}
 void msgb_alloc(void) {}
+void gsm0411_send_sms(void) {}
diff --git a/tests/sms/sms_test.c b/tests/sms/sms_test.c
index ebecb56..be166e4 100644
--- a/tests/sms/sms_test.c
+++ b/tests/sms/sms_test.c
@@ -85,4 +85,6 @@
 		gsm0411_rcv_sms(msg);
 		msgb_free(msg);
 	}
+
+	gsm0411_send_sms(0, 0);
 }
