[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