Package: libacr38u
Version: 1.7.10-1
Severity: normal
Tags: upstream patch
Hello,
The driver resets the card using RESET_WITH_5_VOLTS_DEFAULT.
Some low voltage smart cards (Ex: Atmel AT88SC**CA family) will fail:
pcscd: eventhandler.c:443:EHStatusHandlerThread() Error powering up card.
If the card is reset with RESET_WITH_SPECIFIC_VOLTAGE - 0x00 (automatic voltage
detection), the card resets properly and the ATR can be read with any card.
This still applies to the new driver (1.7.11).
It is probably a good idea to forward this to upstream.
Regards,
Michael De Backer
-- System Information:
Debian Release: 6.0.1
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.32-5-amd64 (SMP w/2 CPU cores)
Locale: LANG=fr_BE.utf8, LC_CTYPE=fr_BE.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages libacr38u depends on:
ii libc6 2.11.2-10 Embedded GNU C Library: Shared lib
ii libpcsclite1 1.5.5-4 Middleware to access a smart card
ii libusb-0.1-4 2:0.1.12-16 userspace USB programming library
Versions of packages libacr38u recommends:
ii pcscd 1.5.5-4 Middleware to access a smart card
libacr38u suggests no packages.
--- ./AdmHndlr.c 2009-08-10 04:18:26.000000000 +0200
+++ ./AdmHndlr.c 2011-07-14 13:44:47.000000000 +0200
@@ -128,7 +128,7 @@
ULONG rv;
UCHAR emvOption[5];
UCHAR selectCardType[20];
- UCHAR powerReset[4];
+ UCHAR powerReset[5];
UCHAR resetCardType[20];
UCHAR ucResponse[MAX_BUFFER_SIZE];
ULONG ulSize;
@@ -182,8 +182,9 @@
powerReset[0] = 0x01;
powerReset[1] = 0x80;
powerReset[2] = 0x00;
- powerReset[3] = 0x00;
- rv = Adm_Transmit(Lun, powerReset, 4, pucAtr, pulAtrLen);
+ powerReset[3] = 0x01;
+ powerReset[4] = 0x00;
+ rv = Adm_Transmit(Lun, powerReset, 5, pucAtr, pulAtrLen);
}
else
{ /* Memory Card */
@@ -221,8 +222,9 @@
powerReset[0] = 0x01;
powerReset[1] = 0x80;
powerReset[2] = 0x00;
- powerReset[3] = 0x00;
- rv = Adm_Transmit(Lun, powerReset, 4, pucAtr, pulAtrLen);
+ powerReset[3] = 0x01;
+ powerReset[4] = 0x00;
+ rv = Adm_Transmit(Lun, powerReset, 5, pucAtr, pulAtrLen);
if (rv != STATUS_SUCCESS)
{
return rv;
@@ -522,7 +524,7 @@
ULONG rv;
ULONG ulSize = 0;
UCHAR selectCardType[20];
- UCHAR powerReset[4];
+ UCHAR powerReset[5];
UCHAR uc4428[20];
UCHAR ucResponse[MAX_BUFFER_SIZE];
#ifdef PCSC_DEBUG
@@ -541,8 +543,9 @@
powerReset[0] = 0x01;
powerReset[1] = 0x80;
powerReset[2] = 0x00;
- powerReset[3] = 0x00;
- rv = Adm_Transmit( Lun, powerReset, 4, ucResponse, &ulSize );
+ powerReset[3] = 0x01;
+ powerReset[4] = 0x00;
+ rv = Adm_Transmit( Lun, powerReset, 5, ucResponse, &ulSize );
if (rv != STATUS_SUCCESS) {
return rv;
}