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; }