Discussion:
USB problem with ACR1222L reader
Patrick Rotsaert
2014-03-04 08:32:57 UTC
Permalink
Hi,

an application that works on a virtual machine (vmware), does not work on "real" hardware. O/S, software and libraries are exactly the same.
Error happens consistently at the same time.
After card insertion event, detected with SCardGetStatusChange(), a SCardControl() call to put a message on the reader's display returns the error SCARD_E_NOT_TRANSACTED
On the daemon side, following errors are produced many times: ccid_usb.c:1099:ReadUSB() Duplicate frame detected.
Since all software is the same on both virtual and real hardware, I'm suspecting that the problem lies on USB level, but I have no idea how to fix this.

I have attached 2 logs:
pcscd-ubuntu1204-barehw.log : the log with the errors
pcscd-ubuntu1204-vmware.log : for reference, the log without the errors.

Note: the log output is without the LIBCCID_ifdLogLevel=0x000F, because the reader is not even found with that setting.

Maybe worth mentioning: I have tried using the SCardControl function with a separate SCARDHANDLE (a separate device connection to the first reader) and also tried to use the same SCARDHANDLE returned from connecting the card. The result is the same.

CCID driver version:
dpkg -l | grep ccid
ii libacsccid1 1.0.5-1~precise1 PC/SC driver for ACS USB CCID smart card readers
ii libccid 1.4.5-1 PC/SC driver for USB CCID smart card readers

pcsc-lite version
dpkg -l | grep pcsc
ii libpcsclite1 1.7.4-2ubuntu2 Middleware to access a smart card using PC/SC (library)
ii pcscd 1.7.4-2ubuntu2 Middleware to access a smart card using PC/SC (daemon side)

smart card reader name
ACS ACR1222 3S PICC Reader 00 0[0-3]
Firmware: ACR1222L-U V312.05

the output of the command "/usr/sbin/pcscd --version"
pcsc-lite version 1.7.4.
Copyright (C) 1999-2002 by David Corcoran <***@linuxnet.com>.
Copyright (C) 2001-2011 by Ludovic Rousseau <***@free.fr>.
Copyright (C) 2003-2004 by Damien Sauveron <***@labri.fr>.
Report bugs to <***@lists.musclecard.com>.
Enabled features: Linux i686-pc-linux-gnu serial usb libudev usbdropdir=/usr/lib/pcsc/drivers ipcdir=/var/run/pcscd configdir=/etc/reader.conf.d

Platform
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 28
model name : Intel(R) Atom(TM) CPU Z510 @ 1.10GHz
stepping : 2
microcode : 0x211
cpu MHz : 600.000
cache size : 512 KB
fdiv_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe nx constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 xtpr pdcm movbe lahf_lm dtherm
bogomips : 2194.60
clflush size : 64
cache_alignment : 64
address sizes : 32 bits physical, 32 bits virtual
power management:

Operating system or GNU/Linux distribution name and version
Ubuntu Server 12.04 LTS i386

Smart card middleware name and version
N/A

Reader manufacturer name and reader model name
ACS ACR1222L
P/N ACR1222L-D1

Smart card name
Desfire, but irrelevant, happens with many kinds of contactless cards.
Ludovic Rousseau
2014-03-04 20:17:06 UTC
Permalink
Post by Patrick Rotsaert
Hi,
Hello,
Post by Patrick Rotsaert
an application that works on a virtual machine (vmware), does not work on "real" hardware. O/S, software and libraries are exactly the same.
In general the problem is the inverse. OK on a real hardware and
problem in a virtual machine.
Post by Patrick Rotsaert
Error happens consistently at the same time.
After card insertion event, detected with SCardGetStatusChange(), a SCardControl() call to put a message on the reader's display returns the error SCARD_E_NOT_TRANSACTED
On the daemon side, following errors are produced many times: ccid_usb.c:1099:ReadUSB() Duplicate frame detected.
Since all software is the same on both virtual and real hardware, I'm suspecting that the problem lies on USB level, but I have no idea how to fix this.
pcscd-ubuntu1204-barehw.log : the log with the errors
pcscd-ubuntu1204-vmware.log : for reference, the log without the errors.
Note: the log output is without the LIBCCID_ifdLogLevel=0x000F, because the reader is not even found with that setting.
That is very strange. A bug in the ACS driver?
Post by Patrick Rotsaert
dpkg -l | grep ccid
ii libacsccid1 1.0.5-1~precise1 PC/SC driver for ACS USB CCID smart card readers
ii libccid 1.4.5-1 PC/SC driver for USB CCID smart card readers
In both cases you are using ifd-acsccid.bundle driver.
You should report the bug to the driver maintainer, i.e. ACS.

Bye
--
Dr. Ludovic Rousseau
Loading...