diff --git a/sms_cp_err/README b/sms_cp_err/README
new file mode 100644
index 0000000..c8d63da
--- /dev/null
+++ b/sms_cp_err/README
@@ -0,0 +1,4 @@
+This attempts to re-produce a CP-ERROR/CP-ACK loop than can be experienced..
+
+This test is not finished! It is meant to be used to re-produce an
+issue in the SMC/SMR code of OpenBSC.
diff --git a/sms_cp_err/SMSCPError.st b/sms_cp_err/SMSCPError.st
new file mode 100644
index 0000000..e5a5d74
--- /dev/null
+++ b/sms_cp_err/SMSCPError.st
@@ -0,0 +1,73 @@
+"
+ (C) 2012-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 .
+"
+
+PackageLoader fileInPackage: #FakeBTS.
+
+FakeBTS.OpenBSCTest subclass: SMSCPError [
+
+
+ SMSCPError class >> cpError [
+ ^ #(16rC9 16r10 16r51) asByteArray.
+ ]
+
+ startTest [
+ "1. Connect to the BTS"
+ self createAndConnectBTS: '1801/0/0'.
+
+ self
+ testCpError.
+ ]
+
+ testCpError [
+ | lchan cm tmsi |
+
+ tmsi := self allocateTmsi: '901010000001111'.
+
+ "2. Get a LCHAN"
+ lchan := self requireAnyChannel.
+
+ "3. Send a CM Service Request "
+ cm := GSM48CMServiceReq new.
+ cm mi tmsi: tmsi.
+ lchan sendGSM: cm toMessage.
+
+ "4. CP-DATA/RP-DATA PDU"
+ lchan sendGSM: self class cpError sapi: 3.
+
+ "Wait for the channel to be released.."
+ [
+ | msg |
+ "Check what happens as a response to this message now..."
+ [
+ msg := GSM48MSG decode: lchan nextSapi0Msg readStream.
+ (msg isKindOf: GSM48RRChannelRelease)
+ ifTrue: [lchan releaseAllSapis. ^true].
+ msg inspect.
+ ] on: Exception do: [Transcript nextPutAll: 'GSM decoding error'; nl.].
+ ] repeat.
+ ]
+]
+
+Eval [
+ | test |
+
+ test := SMSCPError new
+ startTest;
+ stopBts;
+ yourself.
+]