diff --git a/usb_application/smartcard_emulator.py b/usb_application/smartcard_emulator.py
new file mode 100644
index 0000000..aa40125
--- /dev/null
+++ b/usb_application/smartcard_emulator.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+
+import constants
+import array
+
+INS = 1
+CNT = 4
+
+class SmartCardEmulator:
+    def getATR(self):
+        return array.array('B', constants.ATR_SYSMOCOM2)
+
+    def send_receive_cmd(self, cmd):
+        if len(cmd) == 5:         # Received cmd from phone
+            if cmd[INS] == 0xA4:
+                resp = [cmd[INS]]       # Respond with INS byte
+            elif cmd[INS] == 0xC0:
+                data = [0x00, 0x00, 0x00, 0x00,
+                        0x7F, 0x20, 0x02, 0x00,
+                        0x00, 0x00, 0x00, 0x00,
+                        0x09, 0x91, 0x00, 0x17,
+                        0x04, 0x00, 0x83, 0x8A,
+                        0x83, 0x8A]
+                SW = [0x90, 0x00]
+                resp = [cmd[INS]] + data + SW       # Respond with INS byte
+                #state = WAIT_RST
+            else:
+                print("Unknown cmd")
+                resp = [0x60, 0x00]
+        elif len(cmd) == 2:
+            resp = [0x9F, 0x16]
+        else:
+            resp = [0x60, 0x00]
+
+        print("Cmd, resp: ")
+        print("".join("%02x " % b for b in cmd))
+        print("".join("%02x " % b for b in resp))
+
+        return array.array('B', resp)
+
+    def reset_card():
+        pass
+
+    def close(self):
+        pass
