[Pcsclite-muscle] Dual Interface Reader
Dennis Rieks
dennis.rieks at agido.com
Mon Jan 29 07:03:13 PST 2018
Hello,
we are trying to access a smartcard using a dual interface reader
(Identiv uTrust 4501 F Dual Interface Reader). If the card is inserted
only partly, the contactless interface will detect the card fine. But
when the card is fully inserted into the reader, the contactless reader
will emit a card removed event and the contact reader a card inserted event.
Card inserted partly:
eventhandler.c:421:EHStatusHandlerThread() Card inserted into Identiv
uTrust 4701 F Dual Interface Reader [uTrust 4501 F CL Reader]
Card inserted fully:
eventhandler.c:421:EHStatusHandlerThread() Card inserted into Identiv
uTrust 4701 F Dual Interface Reader [uTrust 4501 F Contact Reader]
eventhandler.c:356:EHStatusHandlerThread() Card Removed From Identiv
uTrust 4701 F Dual Interface Reader [uTrust 4501 F CL Reader]
The problem is that if the card is not inserted slowly, the contactless
reader has no change to read the nfc card.
(Because we are currently using nfc cards only, the contact reader will
fail to power the chip: "winscard.c:339:SCardConnect() Error powering up
card", I think this is because no contact chip is present.)
Is there any way to access the nfc chip when the card is fully inserted?
Thank you very much!
Dennis
(Another strange thing: sometimes the device will be reported with name
4701f, at other places as 4501f)
Hardware Picture:
https://deribo.de/4701.jpg
Linux drivers:
v5.0.35 (from 2015...)
https://support.identiv.com/4701f/ <https://support.identiv.com/4701f/>
Output of --version:
/usr/sbin/pcscd --version
pcsc-lite version 1.8.23.
Copyright (C) 1999-2002 by David Corcoran <corcoran at musclecard.com
<mailto:corcoran at musclecard.com>>.
Copyright (C) 2001-2015 by Ludovic Rousseau <ludovic.rousseau at free.fr
<mailto:ludovic.rousseau at free.fr>>.
Copyright (C) 2003-2004 by Damien Sauveron <sauveron at labri.fr
<mailto:sauveron at labri.fr>>.
Report bugs to <pcsclite-muscle at lists.alioth.debian.org
<mailto:pcsclite-muscle at lists.alioth.debian.org>>.
Enabled features: Linux x86_64-pc-linux-gnu serial usb libudev
usbdropdir=/usr/local/lib/pcsc/drivers ipcdir=/var/run/pcscd
configdir=/usr/local/etc/reader.conf.d
Output of parse command:
idVendor: 0x04E6
iManufacturer: Identiv
idProduct: 0x5724
iProduct: Identiv uTrust 4501 F Dual Interface Reader
bcdDevice: 1.04 (firmware release?)
bLength: 9
bDescriptorType: 4
bInterfaceNumber: 0
bAlternateSetting: 0
bNumEndpoints: 3
bulk-IN, bulk-OUT and Interrupt-IN
bInterfaceClass: 0x0B [Chip Card Interface Device Class (CCID)]
bInterfaceSubClass: 0
bInterfaceProtocol: 0
bulk transfer, optional interrupt-IN (CCID)
iInterface: uTrust 4501 F Contact Reader
CCID Class Descriptor
bLength: 0x36
bDescriptorType: 0x21
bcdCCID: 1.10
bMaxSlotIndex: 0x00
bVoltageSupport: 0x07
5.0V
3.0V
1.8V
dwProtocols: 0x0000 0x0003
T=0
T=1
dwDefaultClock: 4.800 MHz
dwMaximumClock: 12.000 MHz
bNumClockSupported: 0 (will use whatever is returned)
IFD does not support GET CLOCK FREQUENCIES request: Resource
temporarily unavailable
dwDataRate: 12903 bps
dwMaxDataRate: 412903 bps
bNumDataRatesSupported: 0 (will use whatever is returned)
IFD does not support GET_DATA_RATES request: Resource temporarily
unavailable
dwMaxIFSD: 254
dwSynchProtocols: 0x00000000
dwMechanical: 0x00000000
No special characteristics
dwFeatures: 0x000104BA
....02 Automatic parameter configuration based on ATR data
....08 Automatic ICC voltage selection
....10 Automatic ICC clock frequency change according to parameters
....20 Automatic baud rate change according to frequency and Fi, Di
params
....80 Automatic PPS made by the CCID
..04.. Automatic IFSD exchange as first exchange (T=1)
01.... TPDU level exchange
dwMaxCCIDMessageLength: 271 bytes
bClassGetResponse: 0xFF
echoes the APDU class
bClassEnvelope: 0xFF
echoes the APDU class
wLcdLayout: 0x0000
bPINSupport: 0x00
bMaxCCIDBusySlots: 1
idVendor: 0x04E6
iManufacturer: Identiv
idProduct: 0x5724
iProduct: Identiv uTrust 4501 F Dual Interface Reader
bcdDevice: 1.04 (firmware release?)
bLength: 9
bDescriptorType: 4
bInterfaceNumber: 1
bAlternateSetting: 0
bNumEndpoints: 3
bulk-IN, bulk-OUT and Interrupt-IN
bInterfaceClass: 0x0B [Chip Card Interface Device Class (CCID)]
bInterfaceSubClass: 0
bInterfaceProtocol: 0
bulk transfer, optional interrupt-IN (CCID)
iInterface: uTrust 4501 F CL Reader
CCID Class Descriptor
bLength: 0x36
bDescriptorType: 0x21
bcdCCID: 1.10
bMaxSlotIndex: 0x00
bVoltageSupport: 0x01
5.0V
dwProtocols: 0x0000 0x0003
T=0
T=1
dwDefaultClock: 4.800 MHz
dwMaximumClock: 12.000 MHz
bNumClockSupported: 0 (will use whatever is returned)
IFD does not support GET CLOCK FREQUENCIES request: Resource
temporarily unavailable
dwDataRate: 12903 bps
dwMaxDataRate: 412903 bps
bNumDataRatesSupported: 0 (will use whatever is returned)
IFD does not support GET_DATA_RATES request: Resource temporarily
unavailable
dwMaxIFSD: 1024
dwSynchProtocols: 0x00000000
dwMechanical: 0x00000001
Card accept mechanism
dwFeatures: 0x000404BE
....02 Automatic parameter configuration based on ATR data
....04 Automatic activation of ICC on inserting
....08 Automatic ICC voltage selection
....10 Automatic ICC clock frequency change according to parameters
....20 Automatic baud rate change according to frequency and Fi, Di
params
....80 Automatic PPS made by the CCID
..04.. Automatic IFSD exchange as first exchange (T=1)
04.... Short and Extended APDU level exchange
dwMaxCCIDMessageLength: 1034 bytes
bClassGetResponse: 0xFF
echoes the APDU class
bClassEnvelope: 0xFF
echoes the APDU class
wLcdLayout: 0x0000
bPINSupport: 0x00
bMaxCCIDBusySlots: 1
output of LIBCCID_ifdLogLevel=0x000F pcscd --foreground --debug --apdu
--color:
00000000 debuglog.c:291:DebugLogSetLevel() debug level=debug
00000224 debuglog.c:312:DebugLogSetCategory() Debug options: APDU
[36m00000016 [0m [34mpcscdaemon.c:268:main() Force colored logs [0m
[36m00000282 [0m configfile.l:355:DBGetReaderList() Parsing conf file:
/etc/reader.conf.d
[36m00000036 [0m [34mpcscdaemon.c:569:main() pcsc-lite 1.8.14 daemon
ready. [0m
[36m00002455 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
[36m00000055 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
[36m00000054 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x045E, PID: 0x0745, path: /dev/bus/usb/001/002
[36m00000049 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x045E, PID: 0x0745, path: /dev/bus/usb/001/002
[36m00000048 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x045E, PID: 0x0745, path: /dev/bus/usb/001/002
[36m00000047 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
[36m00000050 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x0BDA, PID: 0x5411, path: /dev/bus/usb/001/003
[36m00000058 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x04E6, PID: 0x5724, path: /dev/bus/usb/001/005
[36m00000003 [0m [34mhotplug_libudev.c:435:HPAddDevice() Adding USB
device: Identiv uTrust 4701 F Dual Interface Reader [0m
[36m00000035 [0m [34mreaderfactory.c:1012:RFInitializeReader()
Attempting startup of Identiv uTrust 4701 F Dual Interface Reader
[uTrust 4501 F Contact Reader] (55041530200900) 00 00 using
/usr/lib64/pcsc/drivers/scmccid.bundle/Contents/Linux/libscmccid.so.5.0.35
[0m
[36m00000164 [0m [34mreaderfactory.c:897:RFBindFunctions() Loading IFD
Handler 3.0 [0m
Loading libscmccid 5.0.35
[36m00464453 [0m [34mreaderfactory.c:350:RFAddReader() Using the pcscd
polling thread [0m
[36m00204434 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x04E6, PID: 0x5724, path: /dev/bus/usb/001/005
[36m00000040 [0m [34mhotplug_libudev.c:435:HPAddDevice() Adding USB
device: Identiv uTrust 4701 F Dual Interface Reader [0m
[36m00000946 [0m [34mreaderfactory.c:680:RFSetReaderName() Support 200
simultaneous readers [0m
[36m00000044 [0m [34mreaderfactory.c:1012:RFInitializeReader()
Attempting startup of Identiv uTrust 4701 F Dual Interface Reader
[uTrust 4501 F CL Reader] (55041530200900) 01 00 using
/usr/lib64/pcsc/drivers/scmccid.bundle/Contents/Linux/libscmccid.so.5.0.35
[0m
[36m00000011 [0m [34mreaderfactory.c:811:RFLoadReader() Reusing already
loaded driver for
/usr/lib64/pcsc/drivers/scmccid.bundle/Contents/Linux/libscmccid.so.5.0.35
[0m
[36m00000048 [0m [34mreaderfactory.c:897:RFBindFunctions() Loading IFD
Handler 3.0 [0m
Loading libscmccid 5.0.35
[36m00412842 [0m [34mreaderfactory.c:350:RFAddReader() Using the pcscd
polling thread [0m
[36m00000642 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x0BDA, PID: 0x5411, path: /dev/bus/usb/001/003
[36m00000127 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x03EB, PID: 0x8A6E, path: /dev/bus/usb/001/007
[36m00000107 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x03EB, PID: 0x8A6E, path: /dev/bus/usb/001/007
[36m00000131 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x0BDA, PID: 0x5411, path: /dev/bus/usb/001/003
[36m00000111 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x04B8, PID: 0x0202, path: /dev/bus/usb/001/008
[36m00000105 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x0BDA, PID: 0x5411, path: /dev/bus/usb/001/003
[36m00000100 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
[36m00000100 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x05A3, PID: 0x9422, path: /dev/bus/usb/001/004
[36m00000097 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x05A3, PID: 0x9422, path: /dev/bus/usb/001/004
[36m00000107 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x05A3, PID: 0x9422, path: /dev/bus/usb/001/004
[36m00000151 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x05A3, PID: 0x9422, path: /dev/bus/usb/001/004
[36m00000104 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x05A3, PID: 0x9422, path: /dev/bus/usb/001/004
[36m00000116 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
[36m00000134 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x8087, PID: 0x0A2B, path: /dev/bus/usb/001/006
[36m00000099 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x8087, PID: 0x0A2B, path: /dev/bus/usb/001/006
[36m00000149 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x1D6B, PID: 0x0003, path: /dev/bus/usb/002/001
[36m00000096 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x1D6B, PID: 0x0003, path: /dev/bus/usb/002/001
[36m00000099 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x8564, PID: 0x1000, path: /dev/bus/usb/002/002
[36m00000095 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x1D6B, PID: 0x0003, path: /dev/bus/usb/002/001
[36m00000099 [0m hotplug_libudev.c:296:get_driver() Looking for a driver
for VID: 0x0BDA, PID: 0x0411, path: /dev/bus/usb/002/003
[36m02893410 [0m eventhandler.c:405:EHStatusHandlerThread() powerState:
POWER_STATE_POWERED
[36m00000041 [0m [34meventhandler.c:422:EHStatusHandlerThread() Card
inserted into Identiv uTrust 4701 F Dual Interface Reader [uTrust 4501 F
CL Reader] (55041530200900) 01 00 [0m
[36m00000023 [0m [34mCard ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00
01 00 00 00 00 6A [0m
[36m04107036 [0m eventhandler.c:411:EHStatusHandlerThread() powerState:
POWER_STATE_UNPOWERED
[36m00000044 [0m [34meventhandler.c:422:EHStatusHandlerThread() Card
inserted into Identiv uTrust 4701 F Dual Interface Reader [uTrust 4501 F
Contact Reader] (55041530200900) 00 00 [0m
[36m00000012 [0m [35meventhandler.c:438:EHStatusHandlerThread() Error
powering up card. [0m
[36m00037451 [0m [34meventhandler.c:357:EHStatusHandlerThread() Card
Removed From Identiv uTrust 4701 F Dual Interface Reader [uTrust 4501 F
CL Reader] (55041530200900) 01 00 [0m
[36m00362893 [0m [34meventhandler.c:357:EHStatusHandlerThread() Card
Removed From Identiv uTrust 4701 F Dual Interface Reader [uTrust 4501 F
Contact Reader] (55041530200900) 00 00 [0m
[36m00514484 [0m eventhandler.c:411:EHStatusHandlerThread() powerState:
POWER_STATE_UNPOWERED
[36m00000038 [0m [34meventhandler.c:422:EHStatusHandlerThread() Card
inserted into Identiv uTrust 4701 F Dual Interface Reader [uTrust 4501 F
Contact Reader] (55041530200900) 00 00 [0m
[36m00000012 [0m [35meventhandler.c:438:EHStatusHandlerThread() Error
powering up card. [0m
[36m00400354 [0m [34meventhandler.c:357:EHStatusHandlerThread() Card
Removed From Identiv uTrust 4701 F Dual Interface Reader [uTrust 4501 F
Contact Reader] (55041530200900) 00 00 [0m
[36m00514653 [0m eventhandler.c:411:EHStatusHandlerThread() powerState:
POWER_STATE_UNPOWERED
[36m00000034 [0m [34meventhandler.c:422:EHStatusHandlerThread() Card
inserted into Identiv uTrust 4701 F Dual Interface Reader [uTrust 4501 F
Contact Reader] (55041530200900) 00 00 [0m
[36m00000010 [0m [35meventhandler.c:438:EHStatusHandlerThread() Error
powering up card. [0m
[36m05611295 [0m [34meventhandler.c:357:EHStatusHandlerThread() Card
Removed From Identiv uTrust 4701 F Dual Interface Reader [uTrust 4501 F
Contact Reader] (55041530200900) 00 00 [0m
[36m00019779 [0m eventhandler.c:405:EHStatusHandlerThread() powerState:
POWER_STATE_POWERED
[36m00000036 [0m [34meventhandler.c:422:EHStatusHandlerThread() Card
inserted into Identiv uTrust 4701 F Dual Interface Reader [uTrust 4501 F
CL Reader] (55041530200900) 01 00 [0m
[36m00000022 [0m [34mCard ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00
01 00 00 00 00 6A [0m
[36m00565154 [0m [34meventhandler.c:357:EHStatusHandlerThread() Card
Removed From Identiv uTrust 4701 F Dual Interface Reader [uTrust 4501 F
CL Reader] (55041530200900) 01 00 [0m
More information about the pcsclite-muscle
mailing list