The
AlcorMicro AU9560
smart card reader has problems with high speed smart cards.
The reported problem
The same problem is already reported in different places:
Example of cards in reported problems
The reader is always the same but used with different cards.
The card must have a
TA1
> 0x95. To know the TA1 of your smart card you need to get and
parse the card's ATR, for example using pcsc_scan program from
pcsc-tools.
The problem
The reader declares it can support card/reader communication speed up to
688 172 bps.
See
dwMaxDataRate
field in
AlcorMicro_AU9560.txt.
It is fast but I have
4.5 % of readers in my list
that declare to be faster (not including contactless readers).
But speeds above ~200 000 bps are problematic with the AlcorMicro AU9560.
It works fine, until an APDU exchange fails with a "Hardware error" (for
example) message from the reader:
00000009 APDU: 00 A4 00 00 02 3F 00 00
00000007 ifdhandler.c:1333:IFDHTransmitToICC() usb:058f/9540:libudev:0:/dev/bus/usb/001/002 (lun: 0)
00000006 commands.c:1670:CmdXfrBlockAPDU_extended() T=0 (extended): 8 bytes
00000017 -> 000000 6F 08 00 00 00 00 0E 00 00 00 00 A4 00 00 02 3F 00 00
02734396 <- 000000 80 00 00 00 00 00 0E 41 FB 00
00000025 commands.c:1563:CCID_Receive Hardware error
00000009 APDU: 00 A4 00 00 02 3F 00 00
Where are the bogus readers?
The AlcorMicro AU9560 is not a stand alone USB reader. It must be integrated
in a laptop. For example it is present in these laptop models:
- Lenovo Thinkpad P17
- Lenovo Thinkpad L15
- Lenovo X1 Extreme Gen 2
- HP Zbook
- HP EliteBook.
I guess the same AlcorMicro AU9560 reader is present in a lot of other Lenovo
or HP laptops and also laptops from other brands.
Patch
I worked on a patch to remove the highest speeds so that the CCID driver will
negotiate a lower speed that is still supported by the reader.
Problem with the patch
My patch works fine with one card I have (NXP JCOP 4). But it generates problems with another card (Acos-ID).
The error occurs when the driver set the communication speed. The Set
Parameters commands fails and the driver gets a "Card absent or mute" error.
00000004 [140396399142464] commands.c:2324:SetParameters() length: 7 bytes
00000006 [140396399142464] -> 000000 61 07 00 00 00 00 07 01 00 00 95 10 FF 46 00 FE 00
01646726 [140396415927872] ccid_usb.c:1532:InterruptRead() after (0) (2)
00621370 [140396399142464] <- 000000 82 00 00 00 00 00 07 41 FE 00
00000025 [140396399142464] commands.c:2351:SetParameters Card absent or mute
00000005 [140396399142464] prothandler.c:141:PHSetProtocol() Set PTS failed (612)
I suspect the problem to be specific to this card. But I am not sure. That is why I need your help to test with as much possible combinations as possible.
Your help is welcome
If your have:
- a laptop with the AlcorMicro AU9560 smart card reader
- a fast enough smart card (i.e. TA1 > 0x95)
then you can help me.
The AlcorMicro AU9560 and the AlcorMicro AU9540 both use the same USB
idProduct value of 0x9540 even if the two readers are a bit different. So even
if you have a AU9560 the PC/SC name will be "Alcor Micro AU9540 xx yy". If you
do not know what reader you have just suppose you have a AU9560.
You can check the 2 conditions above (AlcorMicro and TA1 value) using the
pcsc_scan tools. See
$ pcsc_scan
Using reader plug'n play mechanism
Scanning present readers...
0: Alcor Micro AU9540 00 00
Sat Dec 17 11:02:51 2022
Reader 0: Alcor Micro AU9540 00 00
Event number: 0
Card state: Card inserted, Shared Mode,
ATR: 3B DC 96 FF 81 11 FE 80 31 C8 54 43 56 35 07 73 FF A1 C0 3C
ATR: 3B DC 96 FF 81 11 FE 80 31 C8 54 43 56 35 07 73 FF A1 C0 3C
+ TS = 3B --> Direct Convention
+ T0 = DC, Y(1): 1101, K: 12 (historical bytes)
TA(1) = 96 --> Fi=512, Di=32, 16 cycles/ETU
250000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 312500 bits/s
TC(1) = FF --> Extra guard time: 255 (special value)
TD(1) = 81 --> Y(i+1) = 1000, Protocol T = 1
-----
TD(2) = 11 --> Y(i+1) = 0001, Protocol T = 1
-----
TA(3) = FE --> IFSC: 254
+ Historical bytes: 80 31 C8 54 43 56 35 07 73 FF A1 C0
[...]
+ TCK = 3C (correct checksum)
Possibly identified card (using /home/rousseau/.cache/smartcard_list.txt):
3B DC 96 FF 81 11 FE 80 31 C8 54 43 56 35 07 73 FF A1 C0 3C
NXP JCOP 4, J3R200P0X3U/0ZA16CP NXD6.2 (JavaCard)
Please do:
-
download, build and install the patched version of the CCID driver from
https://ccid.apdu.fr/files/ccid-1.5.1-3ac3a1a.tar.bz2
- test it fixes the problems you had with the previous CCID driver
-
test it does not create new problems that were not present with the
previous CCID driver
- if a new problem appears I would like you to report it including:
- the exact computer model you use
- the name and ATR of the smart card you use
-
a complete pcscd trace as documented in
How to get support
You can report your results using different channels:
Conclusion
Your help will greatly improve support of this reader commonly found in
laptops.
Thank you.
[Update: Jan, 20th 2023]
The patch is now included in the CCID driver and will be present in the CCID release 1.5.2 (to be released later).