nfc-tools / ifdnfc

PC/SC IFD Handler based on libnfc
GNU General Public License v3.0
34 stars 9 forks source link

ifdnfc-activate fails with multiple PC/SC devices. #2

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. use 2 card readers. For example an Cyberjack e-com an an PN533 based device.

What is the expected output? What do you see instead?
expected:
./ifdnfc-activate 
Activating ifdnfc with "pn53x_usb:002:019"...
IFD-NFC is active using pn53x_usb:002:019.
get:
/ifdnfc-activate 
Activating ifdnfc with "pn53x_usb:002:019"...
Internal error.

What version of the product are you using? On what operating system?
Version: Last from Git.
OS: Fedora 20

Please provide any additional information below.
ifdnfc-activate will not search for the right reader.
It will only use the first reader. In this case the cyberjack.
By remove the first device, it will work.
Debug output of the pcscd when it fails:
03896083 winscard_msg_srv.c:230:ProcessEventsServer() Common channel packet 
arrival
00000061 winscard_msg_srv.c:242:ProcessEventsServer() 
ProcessCommonChannelRequest detects: 14
00000013 pcscdaemon.c:111:SVCServiceRunLoop() A new context thread creation is 
requested: 14
00000106 winscard_svc.c:301:ContextThread() Thread is started: dwClientID=14, 
threadContext @0x15dbe20
00000028 winscard_svc.c:319:ContextThread() Received command: CMD_VERSION from 
client 14
00000010 winscard_svc.c:331:ContextThread() Client is protocol version 4:3
00000006 winscard_svc.c:351:ContextThread() CMD_VERSION rv=0x0 for client 14
00000115 winscard_svc.c:319:ContextThread() Received command: ESTABLISH_CONTEXT 
from client 14
00000026 winscard.c:193:SCardEstablishContext() Establishing Context: 0x26370E1F
00000007 winscard_svc.c:412:ContextThread() ESTABLISH_CONTEXT rv=0x0 for client 
14
00000161 winscard_svc.c:319:ContextThread() Received command: 
CMD_GET_READERS_STATE from client 14
00000123 winscard_svc.c:319:ContextThread() Received command: 
CMD_GET_READERS_STATE from client 14
00000125 winscard_svc.c:319:ContextThread() Received command: CONNECT from 
client 14
00000021 winscard.c:235:SCardConnect() Attempting Connect to REINER SCT 
cyberJack pp_a2 (0235718372) 00 00 using protocol: 0
00000008 readerfactory.c:745:RFReaderInfo() RefReader() count was: 1
00000006 winscard.c:422:SCardConnect() Direct access: no protocol selected
00000006 winscard.c:429:SCardConnect() hCard Identity: b8189e6
00000023 winscard.c:490:SCardConnect() UnrefReader() count was: 2
00000008 winscard_svc.c:453:ContextThread() CONNECT rv=0x0 for client 14
00000112 winscard_svc.c:319:ContextThread() Received command: CONTROL from 
client 14
00000025 readerfactory.c:772:RFReaderInfoById() RefReader() count was: 1
00000022 ifdwrapper.c:461:IFDControl() Card not transacted: 614
00000026 ifdwrapper.c:463:IFDControl() ControlCode: 0x00000001 BytesReturned: 0
00000006 TxBuffer 00 
00000003 RxBuffer 
00000003 winscard.c:1350:SCardControl() UnrefReader() count was: 2
00000005 winscard_svc.c:652:ContextThread() CONTROL rv=0x8010001F for client 14
00004355 winscard_msg_srv.c:230:ProcessEventsServer() Common channel packet 
arrival
00000054 winscard_msg_srv.c:242:ProcessEventsServer() 
ProcessCommonChannelRequest detects: 15
00000015 pcscdaemon.c:111:SVCServiceRunLoop() A new context thread creation is 
requested: 15
00000095 winscard_svc.c:301:ContextThread() Thread is started: dwClientID=15, 
threadContext @0x15dc090
00000027 winscard_svc.c:319:ContextThread() Received command: CMD_VERSION from 
client 15
00000010 winscard_svc.c:331:ContextThread() Client is protocol version 4:3
00000005 winscard_svc.c:351:ContextThread() CMD_VERSION rv=0x0 for client 15
00000116 winscard_svc.c:319:ContextThread() Received command: ESTABLISH_CONTEXT 
from client 15
00000035 winscard.c:193:SCardEstablishContext() Establishing Context: 0x1C82A064
00000007 winscard_svc.c:412:ContextThread() ESTABLISH_CONTEXT rv=0x0 for client 
15
00000089 winscard_svc.c:319:ContextThread() Received command: 
CMD_GET_READERS_STATE from client 15
00000084 winscard_svc.c:319:ContextThread() Received command: RELEASE_CONTEXT 
from client 15
00000008 winscard.c:204:SCardReleaseContext() Releasing Context: 0x1C82A064
00000006 winscard_svc.c:427:ContextThread() RELEASE_CONTEXT rv=0x0 for client 15
00000099 winscard_svc.c:311:ContextThread() Client die: 15
00000016 winscard_svc.c:933:MSGCleanupClient() Thread is stopping: 
dwClientID=15, threadContext @0x15dc090
00000004 winscard_svc.c:939:MSGCleanupClient() Freeing SCONTEXT @0x15dc090
00000757 winscard_svc.c:319:ContextThread() Received command: CONTROL from 
client 14
00000028 readerfactory.c:772:RFReaderInfoById() RefReader() count was: 1
00000010 ifdwrapper.c:461:IFDControl() Card not transacted: 614
00000005 ifdwrapper.c:463:IFDControl() ControlCode: 0x00000001 BytesReturned: 0
00000008 TxBuffer 01 12 00 70 6E 35 33 78 5F 75 73 62 3A 30 30 32 3A 30 31 39 
00 
00000003 RxBuffer 
00000003 winscard.c:1350:SCardControl() UnrefReader() count was: 2
00000005 winscard_svc.c:652:ContextThread() CONTROL rv=0x8010001F for client 14
00000354 winscard_svc.c:311:ContextThread() Client die: 14
00000013 winscard.c:204:SCardReleaseContext() Releasing Context: 0x26370E1F
00000005 readerfactory.c:772:RFReaderInfoById() RefReader() count was: 1
00000004 readerfactory.c:772:RFReaderInfoById() RefReader() count was: 2
00000004 winscard.c:850:SCardDisconnect() Active Contexts: 1
00000004 winscard.c:851:SCardDisconnect() dwDisposition: 0
00000007 winscard.c:1043:SCardDisconnect() UnrefReader() count was: 3
00000005 winscard_svc.c:817:MSGRemoveContext() UnrefReader() count was: 2
00000004 winscard_svc.c:933:MSGCleanupClient() Thread is stopping: 
dwClientID=14, threadContext @0x15dbe20
00000004 winscard_svc.c:939:MSGCleanupClient() Freeing SCONTEXT @0x15dbe20

Original issue reported on code.google.com by tuxmaste...@googlemail.com on 1 Feb 2015 at 3:06