laforge has submitted this change. ( 
https://gerrit.osmocom.org/c/simtrace2/+/23611 )

Change subject: cardem: choose a more reasonable default ATR
......................................................................

cardem: choose a more reasonable default ATR

PCSCd does not like invalid ATRs

Change-Id: I1eebfdc06be55931c2e80e2b515ac3a559737c38
---
M firmware/libcommon/source/card_emu.c
M host/src/simtrace2-cardem-pcsc.c
2 files changed, 38 insertions(+), 3 deletions(-)

Approvals:
  Jenkins Builder: Verified
  fixeria: Looks good to me, but someone else must approve
  laforge: Looks good to me, approved



diff --git a/firmware/libcommon/source/card_emu.c 
b/firmware/libcommon/source/card_emu.c
index cad24b8..269c7c6 100644
--- a/firmware/libcommon/source/card_emu.c
+++ b/firmware/libcommon/source/card_emu.c
@@ -1179,8 +1179,23 @@
        }
 }

-/* shortest ATR possible (uses default speed and no options) */
-static const uint8_t default_atr[] = { 0x3B, 0x00 };
+/* reasonable ATR offering all protocols and voltages
+ * smartphones might not care, but other readers do
+ *
+ * TS =                0x3B    Direct Convention
+ * T0 =                0x80    Y(1): b1000, K: 0 (historical bytes)
+ * TD(1) =     0x80    Y(i+1) = b1000, Protocol T=0
+ * ----
+ * TD(2) =     0x81    Y(i+1) = b1000, Protocol T=1
+ * ----
+ * TD(3) =     0x1F    Y(i+1) = b0001, Protocol T=15
+ * ----
+ * TA(4) =     0xC7    Clock stop: no preference - Class accepted by the card: 
(3G) A 5V B 3V C 1.8V
+ * ----
+ * Historical bytes
+ * TCK =       0x59    correct checksum
+ */
+static const uint8_t default_atr[] = { 0x3B, 0x80, 0x80, 0x81 , 0x1F, 0xC7, 
0x59 };

 static struct card_handle card_handles[NUM_SLOTS];

diff --git a/host/src/simtrace2-cardem-pcsc.c b/host/src/simtrace2-cardem-pcsc.c
index 883bad1..f11330c 100644
--- a/host/src/simtrace2-cardem-pcsc.c
+++ b/host/src/simtrace2-cardem-pcsc.c
@@ -52,6 +52,26 @@

 #define ATR_MAX_LEN 33

+
+/* reasonable ATR offering all protocols and voltages
+ * smartphones might not care, but other readers do
+ *
+ * TS =                0x3B    Direct Convention
+ * T0 =                0x80    Y(1): b1000, K: 0 (historical bytes)
+ * TD(1) =     0x80    Y(i+1) = b1000, Protocol T=0
+ * ----
+ * TD(2) =     0x81    Y(i+1) = b1000, Protocol T=1
+ * ----
+ * TD(3) =     0x1F    Y(i+1) = b0001, Protocol T=15
+ * ----
+ * TA(4) =     0xC7    Clock stop: no preference - Class accepted by the card: 
(3G) A 5V B 3V C 1.8V
+ * ----
+ * Historical bytes
+ * TCK =       0x59    correct checksum
+ */
+#define DEFAULT_ATR_STR "3B8080811FC759"
+
+
 static void atr_update_csum(uint8_t *atr, unsigned int atr_len)
 {
        uint8_t csum = 0;
@@ -274,7 +294,7 @@
        int rc;
        int c, ret = 1;
        int skip_atr = 0;
-       char *atr = "3b00";
+       char *atr = DEFAULT_ATR_STR;
        uint8_t real_atr[ATR_MAX_LEN];
        int atr_len;
        int keep_running = 0;

--
To view, visit https://gerrit.osmocom.org/c/simtrace2/+/23611
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: simtrace2
Gerrit-Branch: master
Gerrit-Change-Id: I1eebfdc06be55931c2e80e2b515ac3a559737c38
Gerrit-Change-Number: 23611
Gerrit-PatchSet: 2
Gerrit-Owner: laforge <lafo...@osmocom.org>
Gerrit-Reviewer: Hoernchen <ew...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanits...@sysmocom.de>
Gerrit-Reviewer: laforge <lafo...@osmocom.org>
Gerrit-MessageType: merged

Reply via email to