Important!

Blog moved to https://blog.apdu.fr/

I moved my blog from https://ludovicrousseau.blogspot.com/ to https://blog.apdu.fr/ . Why? I wanted to move away from Blogger (owne...

Thursday, June 17, 2021

PySCard 2.0.1 released

I just released a new version 2.0.1 of pyscard. PySCard is a python module adding smart cards support (PC/SC) to Python.

The PySCard project is available at:

 

Changes:

 2.0.1 (June 2021)

  • Add .reconnect() method to high-level API
  • Handle removal of the last reader on Windows
  • Fix support of macOS Big Sur
  • Use Python3 by default
  • Handle bogus ACS ACR122U PICC reader

Friday, June 4, 2021

A reader for 96 smart cards? sysmoSIMBANK

In a previous article "Accessing a lot of smart cards?" I presented a reader with 8 slots.

The same company, sysmocom, was also working or a reader with 96 slots. The reader is now available.

sysmoSIMBANK

The product web page contains technical details and documentation.

The sysmoSIMBANK familly has two members:

  • 96 slots in 2U 19” rack mount form-factor

  • 192 slots in 4U 19” rack mount form-factor

The 96 slots reader is composed of 12 sysmoOCTSIM readers of 8 slots each so a total of 12 x 8 = 96 slots.

 On the USB bus the reader looks like 12 sysmoOCTSIM CCID devices connected by some USB hubs.

# lsusb -t
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 1: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
                |__ Port 3: Dev 12, If 2, Class=CDC Data, Driver=cdc_acm, 12M
                |__ Port 3: Dev 12, If 0, Class=Chip/SmartCard, Driver=, 12M
                |__ Port 3: Dev 12, If 3, Class=Application Specific Interface, Driver=, 12M
                |__ Port 3: Dev 12, If 1, Class=Communications, Driver=cdc_acm, 12M
                |__ Port 1: Dev 7, If 1, Class=Communications, Driver=cdc_acm, 12M
                |__ Port 1: Dev 7, If 2, Class=CDC Data, Driver=cdc_acm, 12M
                |__ Port 1: Dev 7, If 0, Class=Chip/SmartCard, Driver=, 12M
                |__ Port 1: Dev 7, If 3, Class=Application Specific Interface, Driver=, 12M
                |__ Port 4: Dev 15, If 2, Class=CDC Data, Driver=cdc_acm, 12M
                |__ Port 4: Dev 15, If 0, Class=Chip/SmartCard, Driver=, 12M
                |__ Port 4: Dev 15, If 3, Class=Application Specific Interface, Driver=, 12M
                |__ Port 4: Dev 15, If 1, Class=Communications, Driver=cdc_acm, 12M
                |__ Port 2: Dev 9, If 3, Class=Application Specific Interface, Driver=, 12M
                |__ Port 2: Dev 9, If 1, Class=Communications, Driver=cdc_acm, 12M
                |__ Port 2: Dev 9, If 2, Class=CDC Data, Driver=cdc_acm, 12M
                |__ Port 2: Dev 9, If 0, Class=Chip/SmartCard, Driver=, 12M
            |__ Port 2: Dev 5, If 0, Class=Hub, Driver=hub/4p, 480M
                |__ Port 1: Dev 8, If 3, Class=Application Specific Interface, Driver=, 12M
                |__ Port 1: Dev 8, If 1, Class=Communications, Driver=cdc_acm, 12M
                |__ Port 1: Dev 8, If 2, Class=CDC Data, Driver=cdc_acm, 12M
                |__ Port 1: Dev 8, If 0, Class=Chip/SmartCard, Driver=, 12M
                |__ Port 2: Dev 11, If 2, Class=CDC Data, Driver=cdc_acm, 12M
                |__ Port 2: Dev 11, If 0, Class=Chip/SmartCard, Driver=, 12M
                |__ Port 2: Dev 11, If 3, Class=Application Specific Interface, Driver=, 12M
                |__ Port 2: Dev 11, If 1, Class=Communications, Driver=cdc_acm, 12M
                |__ Port 3: Dev 14, If 2, Class=CDC Data, Driver=cdc_acm, 12M
                |__ Port 3: Dev 14, If 0, Class=Chip/SmartCard, Driver=, 12M
                |__ Port 3: Dev 14, If 3, Class=Application Specific Interface, Driver=, 12M
                |__ Port 3: Dev 14, If 1, Class=Communications, Driver=cdc_acm, 12M
                |__ Port 4: Dev 17, If 0, Class=Chip/SmartCard, Driver=, 12M
                |__ Port 4: Dev 17, If 1, Class=Communications, Driver=cdc_acm, 12M
                |__ Port 4: Dev 17, If 2, Class=CDC Data, Driver=cdc_acm, 12M
                |__ Port 4: Dev 17, If 3, Class=Application Specific Interface, Driver=, 12M
            |__ Port 3: Dev 6, If 0, Class=Hub, Driver=hub/4p, 480M
                |__ Port 2: Dev 13, If 2, Class=CDC Data, Driver=cdc_acm, 12M
                |__ Port 2: Dev 13, If 0, Class=Chip/SmartCard, Driver=, 12M
                |__ Port 2: Dev 13, If 3, Class=Application Specific Interface, Driver=, 12M
                |__ Port 2: Dev 13, If 1, Class=Communications, Driver=cdc_acm, 12M
                |__ Port 3: Dev 16, If 3, Class=Application Specific Interface, Driver=, 12M
                |__ Port 3: Dev 16, If 1, Class=Communications, Driver=cdc_acm, 12M
                |__ Port 3: Dev 16, If 2, Class=CDC Data, Driver=cdc_acm, 12M
                |__ Port 3: Dev 16, If 0, Class=Chip/SmartCard, Driver=, 12M
                |__ Port 1: Dev 10, If 2, Class=CDC Data, Driver=cdc_acm, 12M
                |__ Port 1: Dev 10, If 0, Class=Chip/SmartCard, Driver=, 12M
                |__ Port 1: Dev 10, If 3, Class=Application Specific Interface, Driver=, 12M
                |__ Port 1: Dev 10, If 1, Class=Communications, Driver=cdc_acm, 12M
                |__ Port 4: Dev 18, If 3, Class=Application Specific Interface, Driver=, 12M
                |__ Port 4: Dev 18, If 1, Class=Communications, Driver=cdc_acm, 12M
                |__ Port 4: Dev 18, If 2, Class=CDC Data, Driver=cdc_acm, 12M
                |__ Port 4: Dev 18, If 0, Class=Chip/SmartCard, Driver=, 12M

Each sysmoOCTSIM is composed of 4 interfaces and one interface is the CCID reader (Class=Chip/SmartCard). Here we see 3 USB hubs each connected to 4 sysmoOCTSIM. So a total of 12 sysmoOCTSIM readers.


pcsc_scan output

With 96 readers the output of the pcsc_scan command is impressive.

Using reader plug'n play mechanism
Scanning present readers...
0: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 00
1: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 01
2: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 02
3: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 03
4: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 04
5: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 05
6: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 06
7: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 07
8: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 00
9: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 01
10: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 02
11: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 03
12: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 04
13: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 05
14: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 06
15: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 07
16: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 00
17: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 01
18: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 02
19: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 03
20: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 04
21: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 05
22: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 06
23: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 07
24: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 00
25: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 01
26: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 02
27: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 03
28: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 04
29: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 05
30: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 06
31: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 07
32: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 00
33: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 01
34: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 02
35: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 03
36: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 04
37: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 05
38: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 06
39: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 07
40: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 00
41: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 01
42: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 02
43: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 03
44: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 04
45: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 05
46: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 06
47: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 07
48: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 00
49: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 01
50: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 02
51: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 03
52: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 04
53: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 05
54: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 06
55: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 07
56: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 00
57: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 01
58: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 02
59: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 03
60: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 04
61: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 05
62: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 06
63: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 07
64: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 00
65: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 01
66: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 02
67: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 03
68: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 04
69: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 05
70: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 06
71: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 07
72: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 00
73: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 01
74: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 02
75: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 03
76: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 04
77: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 05
78: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 06
79: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 07
80: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 00
81: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 01
82: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 02
83: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 03
84: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 04
85: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 05
86: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 06
87: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 07
88: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 00
89: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 01
90: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 02
91: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 03
92: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 04
93: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 05
94: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 06
95: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 07
 
Fri Jun  4 18:13:48 2021
  Reader 0: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 00
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
  Reader 1: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 01
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B FF 95 00 FF C0 0A 1F 43 80 31 E0 73 36 21 13 57 4A 33 20 07 33 41 41 1F
  Reader 2: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 02
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F C7 80 31 E0 73 FE 21 13 67 98 07 02 01 01 01 01 45
  Reader 3: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 03
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9A 94 00 92 02 75 93 11 00 01 02 02 19
  Reader 4: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 04
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9D 94 80 1F C3 80 63 AF 03 A0 73 1A 21 1B 83 0F 90 00 F5
  Reader 5: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 05
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 94 80 1F C7 80 31 E0 73 FE 21 1B 64 07 07 31 00 82 90 00 F2
  Reader 6: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 06
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F C7 80 31 E0 73 FE 21 1B 65 24 01 09 01 00 81 05 7B
  Reader 7: sysmocom sysmoOCTSIM [CCID] (835a971733353553202020341b1f15ff) 00 07
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F C7 80 31 A0 73 BE 21 13 67 43 20 07 18 00 00 01 A5
  Reader 8: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 00
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
  Reader 9: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 01
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 99 18 00 11 88 22 33 44 55 66 77 60
  Reader 10: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 02
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 99 18 00 11 88 22 33 44 55 66 77 60
  Reader 11: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 03
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 99 18 00 11 88 22 33 44 55 66 77 60
  Reader 12: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 04
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 99 18 00 11 88 22 33 44 55 66 77 60
  Reader 13: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 05
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 99 18 00 11 88 22 33 44 55 66 77 60
  Reader 14: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 06
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 99 18 00 11 88 22 33 44 55 66 77 60
  Reader 15: sysmocom sysmoOCTSIM [CCID] (6b44014933353553202020341b3815ff) 01 07
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 99 18 00 11 88 22 33 44 55 66 77 60
  Reader 16: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 00
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
  Reader 17: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 01
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 99 18 00 11 88 22 33 44 55 66 77 60
  Reader 18: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 02
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 99 18 00 11 88 22 33 44 55 66 77 60
  Reader 19: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 03
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9A 94 00 92 02 75 93 11 00 01 02 02 10
  Reader 20: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 04
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9A 94 00 92 02 75 93 11 00 01 02 02 10
  Reader 21: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 05
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9A 94 00 92 02 75 93 11 00 01 02 02 19
  Reader 22: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 06
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9A 94 00 92 02 75 93 11 00 01 02 02 19
  Reader 23: sysmocom sysmoOCTSIM [CCID] (9582a74433353553202020341b3315ff) 02 07
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 3D 94 00 2B 04 02 56 00 00 86 60 54 A0 80 00 07
  Reader 24: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 00
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
  Reader 25: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 01
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 1C 94 47 44 23 01 00 01 00 00 03 01 00 00
  Reader 26: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 02
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 1C 94 47 44 23 01 00 01 00 00 03 01 00 00
  Reader 27: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 03
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 1C 94 47 44 23 01 00 01 00 00 03 01 00 00
  Reader 28: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 04
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 1C 94 47 44 23 01 00 01 00 00 03 01 00 00
  Reader 29: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 05
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 16 94 D0 00 2B 06 F0 00
  Reader 30: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 06
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 3D 94 00 2B 04 02 56 00 00 86 60 54 A0 80 00 07
  Reader 31: sysmocom sysmoOCTSIM [CCID] (11850ae933353553202020341b3415ff) 03 07
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 1C 94 47 44 23 01 00 01 00 00 03 01 00 00
  Reader 32: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 00
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
  Reader 33: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 01
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 3F 94 00 80 69 AF 03 45 00 CD 00 00 00 0E 83 18 9F 16
  Reader 34: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 02
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 16 94 D0 00 2B 06 F0 00
  Reader 35: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 03
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 1C 94 47 44 23 01 00 01 00 00 03 01 00 00
  Reader 36: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 04
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 1C 94 47 44 23 01 00 01 00 00 03 01 00 00
  Reader 37: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 05
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 16 94 D0 00 2B 06 F0 00
  Reader 38: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 06
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 1C 94 47 44 23 01 00 01 00 00 03 01 00 00
  Reader 39: sysmocom sysmoOCTSIM [CCID] (b4360eaa3335355320202034433215ff) 04 07
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 3D 94 00 2B 04 02 56 00 00 86 60 54 A0 80 00 07
  Reader 40: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 00
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
  Reader 41: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 01
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 3F 94 00 80 69 AF 03 45 00 CD 00 00 00 0E 83 18 9F 16
  Reader 42: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 02
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 1C 94 47 44 23 01 00 01 00 00 03 01 00 00
  Reader 43: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 03
  Event number: 0
  Card state: Card removed, 
  Reader 44: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 04
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 1C 94 47 44 23 01 00 01 00 00 03 01 00 00
  Reader 45: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 05
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 16 94 D0 00 2B 06 F0 00
  Reader 46: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 06
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 3D 94 00 2B 04 02 56 00 00 86 60 54 A0 80 00 07
  Reader 47: sysmocom sysmoOCTSIM [CCID] (f9604bd73335355320202034122c15ff) 05 07
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 3F 94 00 80 69 AF 03 45 00 CD 00 00 00 0E 83 18 9F 16
  Reader 48: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 00
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
  Reader 49: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 01
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9E 94 80 1F C3 80 31 E0 73 FE 21 1B 66 D0 00 2B 18 02 00 37
  Reader 50: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 02
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 1C 94 47 44 23 01 00 01 00 00 03 01 00 00
  Reader 51: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 03
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 3D 94 00 2B 04 02 56 00 00 86 60 54 A0 80 00 07
  Reader 52: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 04
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9E 94 80 1F C3 80 31 E0 73 FE 21 1B 66 D0 00 2B 18 02 00 37
  Reader 53: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 05
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9E 94 80 1F C3 80 31 E0 73 FE 21 1B 66 D0 00 2B 18 02 00 37
  Reader 54: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 06
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 3D 94 00 2B 04 02 56 00 00 86 60 54 A0 80 00 07
  Reader 55: sysmocom sysmoOCTSIM [CCID] (67c6627c33353553202020341a0515ff) 06 07
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9E 94 80 10 C3 80 31 E0 73 FE 21 1B 66 D0 00 2B 18 02 00
  Reader 56: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 00
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
  Reader 57: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 01
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9E 94 80 1F C3 80 31 E0 73 FE 21 1B 66 D0 00 2B 18 02 00 37
  Reader 58: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 02
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 3D 94 00 2B 04 02 56 00 00 86 60 54 A0 80 00 07
  Reader 59: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 03
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F C3 80 31 E0 73 FE 21 1B B3 E2 02 7E 83 0F 90 00 82
  Reader 60: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 04
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9E 95 80 1F C7 80 31 E0 73 FE 21 1B 66 D0 01 7B 91 0D 00 E5
  Reader 61: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 05
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 95 80 1F C7 80 31 A0 73 BE 21 13 67 D0 02 04 09 01 00 00 05
  Reader 62: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 06
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 16 96 41 73 74 72 69 64
  Reader 63: sysmocom sysmoOCTSIM [CCID] (c8bf40c433353553202020341b1215ff) 07 07
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 7D 94 00 00 55 55 53 0A 74 86 93 0B 24 7C 4D 54 68
  Reader 64: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 00
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
  Reader 65: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 01
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 1C 94 47 44 23 01 00 01 00 00 03 01 00 00
  Reader 66: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 02
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F C7 80 31 E0 73 FE 21 1B 65 7E 01 09 01 02 81 05 23
  Reader 67: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 03
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B AA 00 40 14 47 47 32 45 54 35 53 34 38 30
  Reader 68: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 04
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F C7 80 31 A0 73 BE 21 13 67 43 20 07 18 00 00 01 A5
  Reader 69: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 05
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9E 95 80 1F C7 80 31 E0 73 FE 21 1B 66 D0 01 6C 04 0D 00 67
  Reader 70: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 06
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9E 94 80 10 C3 80 31 E0 73 FE 21 1B 66 D0 00 2B 18 02 00
  Reader 71: sysmocom sysmoOCTSIM [CCID] (183c363033353553202020341b2b15ff) 08 07
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 99 18 00 11 88 22 33 44 55 66 77 60
  Reader 72: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 00
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
  Reader 73: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 01
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9E 96 80 1F C3 80 31 E0 73 FE 21 1B 66 D0 01 6C 04 0D 00 60
  Reader 74: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 02
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F C7 80 31 E0 73 FE 21 13 67 93 30 01 07 02 01 03 7D
  Reader 75: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 03
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9E 95 80 1F C7 80 31 E0 73 FE 21 1B 66 D0 01 6C 04 0D 00 67
  Reader 76: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 04
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 95 80 1F C7 80 31 E0 73 FE 21 1B 63 E2 0A AA 83 0F 90 00 89
  Reader 77: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 05
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B FF 95 00 00 C0 0A 1F 43 80 31 E0 73 36 21 13 57 4A 33 0E 02 31 41 00 88
  Reader 78: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 06
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 3F 94 00 80 69 AF 03 07 06 68 00 7F 0A 0E 83 3E 9F 16
  Reader 79: sysmocom sysmoOCTSIM [CCID] (5dea892433353553202020341b0f15ff) 09 07
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 99 94 00 91 16 91 08 00 01 25 01 00
  Reader 80: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 00
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
  Reader 81: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 01
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9E 96 80 1F C7 80 31 E0 73 FE 21 1B 66 D0 01 7B 5C 0E 00 28
  Reader 82: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 02
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F 43 80 31 E0 73 36 21 13 57 4A 33 0E 0C 31 41 00 AF
  Reader 83: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 03
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B FF 95 00 00 C0 0A 1F 43 80 31 E0 73 36 21 13 57 4A 33 0E 02 31 41 00 88
  Reader 84: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 04
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 3F 95 00 80 69 AF 03 0F 02 80 FF FF 06 0E 83 3E 9F 16
  Reader 85: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 05
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F C7 80 31 E0 73 FE 21 11 63 07 52 12 83 07 90 00 8D
  Reader 86: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 06
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B BC 94 00 40 14 47 47 33 53 30 35 31 53 31 30 31 30
  Reader 87: sysmocom sysmoOCTSIM [CCID] (9a5f16b433353553202020341b4115ff) 0A 07
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 95 80 1F C7 80 31 E0 73 FE 21 13 57 4A 33 05 2D 32 34 00 BC
  Reader 88: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 00
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
  Reader 89: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 01
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9F 96 80 1F C7 80 31 E0 73 F6 21 13 67 4D 45 01 00 32 01 01 EB
  Reader 90: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 02
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 3D 95 00 80 67 AF 03 0F 01 7C 06 0E 83 3E 9F 16
  Reader 91: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 03
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9E 95 80 1F C7 80 31 E0 73 FE 21 1B 66 D0 01 6C 04 0D 00 67
  Reader 92: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 04
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 99 18 00 11 88 22 33 44 55 66 77 60
  Reader 93: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 05
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 7D 94 00 00 55 55 53 0A 74 86 93 0B 24 7C 4D 54 68
  Reader 94: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 06
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 99 18 00 11 88 22 33 44 55 66 77 60
  Reader 95: sysmocom sysmoOCTSIM [CCID] (196a76f633353553202020341b3b15ff) 0B 07
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 7D 94 00 00 55 55 53 0A 74 86 93 0B 24 7C 4D 54 68

You can see that not all the cards are identical. Some are faster (TA1=96) than other (TA1=95 or TA1=94).

The PC/SC reader name is composed of the constant part "sysmocom sysmoOCTSIM [CCID]", then the USB serial number of the sysmoOCTSIM (like "(196a76f633353553202020341b3b15ff)"), followed by the reader number and slot number.

We have 12 readers so from number 00 to 0B (0x0B = 11). Each sysmoOCTSIM has 8 slots so the slot number is from 00 to 07.

The maximum would be 256 readers with 256 slots each so a total of 65536 cards.

See "What is in a PC/SC reader name?" for more details about PC/SC reader names.


Performances

The 12 internal sysmoOCTSIM readers are independant readers so can be accessed simultaneously. Because of a limitation of my CCID driver with multi-slots readers I discussed in "Accessing a lot of smart cards?" it is not possible to access 2 slots of the same reader at the same time. The accesses to slots of a same reader are serialized even if the reader could allow simultaneous accesses.

I used the same code as in "Accessing a lot of smart cards?" to test the performances. I used only the first slot of each of the 12 sysmoOCTSIM reader

Results

I used the time(1) command to measure the time. Example with 1 card:
$ time make -j 0.test > /dev/null 

real    0m1.203s
user    0m0.249s
sys 0m0.053s
The measures are:
# of cards real user sys
11s 203ms0s 249ms0s 53ms
21s 246ms0s 578ms0s 95ms
31s 274ms0s 904ms0s 191ms
41s 332ms1s 372ms0s 219ms
51s 455ms1s 691ms0s 293ms
61s 549ms1s 951ms0s 510ms
71s 646ms2s 551ms0s 424ms
81s 832ms3s 14ms0s 538ms
91s 906ms3s 390ms0s 645ms
102s 79ms3s 676ms0s 883ms
112s 232ms4s 269ms0s 830ms
122s 419ms4s 599ms1s 73ms

We get the graph:


The system has a 4-core CPU so it is expected that the "real" time is/can be lower than the "user" time.

What is important is that the "real" time grows much slower than the number of readers. The time should even be constant in all cases since the 12 readers can work in parallel, but I guess we have a contention on the USB bus since all the accesses are using the same USB connection. So some serialization has to be done at the USB level.

You can note that to handle 12 cards is it only 2.01 times slower than to handle 1 card. We have a speedup of 6 here.

The reader also has 3 Gigabit Ethernet interfaces (RJ45) so the USB limitation may not be a problem. Note that my CCID driver does not know how to talk to this reader using a network protocol.


Conclusion

Both pcsc-lite and my CCID driver work fine with 96 slots/cards. That is good to know because that is not a setup I used to test and debug the software. I guess it is not a very common setup 😀.

I have no problem making "advertising" for sysmocom products because the company is on the Free Software side of the force. All the software they provide, including the sysmoSIMBANK reader firmware, is Free Software (GNU GPL v2+) and I am happy to give them some visibility.

Thanks to sysmocom for giving me access to the reader.