Hi,
 
while going thru the pcscd logs, I am seeing that when card is reinserted, I get IFDHCreateChannelByName() failed. Below are the logs when i reinserted the eToken.
 
-----------------
pcscdaemon.c:603:signal_reload() Reload serial configuration
pcscdaemon.c:615:signal_reload() End reload serial configuration
pcscdaemon.c:603:signal_reload() Reload serial configuration
hotplug_libusb.c:448:HPAddHotPluggable() Adding USB device: 003:005
readerfactory.c:1108:RFInitializeReader() Attempting startup of Aladdin eToken PRO USB 72K Java 00 00 using /usr/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/libccid.so
readerfactory.c:977:RFBindFunctions() Loading IFD Handler 3.0
ifdhandler.c:1377:init_driver() Driver version: 1.3.9
ifdhandler.c:1390:init_driver() LogLevel: 0x0003
ifdhandler.c:1410:init_driver() DriverOptions: 0x0000
ifdhandler.c:81:IFDHCreateChannelByName() lun: 0, device: usb:0529/0620:libusb:003:005
ccid_usb.c:236:OpenUSBByName() Manufacturer: Ludovic Rousseau (ludovic.rousseau@free.fr)
ccid_usb.c:246:OpenUSBByName() ProductString: Generic CCID driver
ccid_usb.c:252:OpenUSBByName() Copyright: This driver is protected by terms of the GNU Lesser General Public License version 2.1, or (at your option) any later version.
pcscdaemon.c:603:signal_reload() Reload serial configuration
pcscdaemon.c:606:signal_reload() Rescan already ongoing
ifdhandler.c:102:IFDHCreateChannelByName() failed
readerfactory.c:1147:RFInitializeReader() Open Port 200000 Failed (usb:0529/0620:libusb:003)
readerfactory.c:1022:RFUnloadReader() Unloading reader driver.
readerfactory.c:251:RFAddReader() Aladdin eToken PRO USB 72K Java init failed.
hotplug_libusb.c:508:HPRemoveHotPluggable() Removing USB device[0]: 003:005
hotplug_libusb.c:448:HPAddHotPluggable() Adding USB device: 003:005
readerfactory.c:1108:RFInitializeReader() Attempting startup of AKS ifdh 00 00 using /usr/pcsc/drivers/aks-ifdh.bundle/Contents/Linux/libAksIfdh.so
readerfactory.c:977:RFBindFunctions() Loading IFD Handler 3.0
pcscdaemon.c:603:signal_reload() Reload serial configuration
pcscdaemon.c:606:signal_reload() Rescan already ongoing
pcscdaemon.c:603:signal_reload() Reload serial configuration
pcscdaemon.c:606:signal_reload() Rescan already ongoing
pcscdaemon.c:603:signal_reload() Reload serial configuration
pcscdaemon.c:606:signal_reload() Rescan already ongoing
ATR: 3B D5 18 00 81 31 3A 7D 80 73 C8 21 10 30
atrhandler.c:103:ATRDecodeAtr() Conv: 01, Y1: 0D, K: 05
atrhandler.c:121:ATRDecodeAtr() TA1: 18, TB1: FFFFFFFF, TC1: 00, TD1: 81
atrhandler.c:153:ATRDecodeAtr() T=1 Protocol Found
atrhandler.c:121:ATRDecodeAtr() TA2: FFFFFFFF, TB2: FFFFFFFF, TC2: FFFFFFFF, TD2: 31
atrhandler.c:153:ATRDecodeAtr() T=1 Protocol Found
atrhandler.c:121:ATRDecodeAtr() TA3: 3A, TB3: 7D, TC3: FFFFFFFF, TD3: FFFFFFFF
atrhandler.c:259:ATRDecodeAtr() CurrentProtocol: 2, AvailableProtocols: 2
Card ATR: 3B D5 18 00 81 31 3A 7D 80 73 C8 21 10 30
pcscdaemon.c:615:signal_reload() End reload serial configuration
winscard_msg_srv.c:276:SHMProcessEventsContext() Client has disappeared: 8
winscard_svc.c:146:ContextThread() Client die: 8
winscard.c:253:SCardReleaseContext() Releasing Context: 17034805
-----------------------------
 
 
why the RFInitializeReader() is failing ?
 
can you throw some light on this ?
 
Thanks and Regards,
Puneet


 
On Thu, Jan 22, 2009 at 11:18 PM, Puneet Goel <puneet.maillist@gmail.com> wrote:
Hello All,

While trying to configure my rdesktop 1.6 on Linux system for etoken i
came across one issue, I am sure you folks can help in solving
that.

I have installed pkiclient-full-4.55-34.i386.rpm and
pcsc-lite-1.4.0-9.el4.at.i386.rpm from Aladdin in my system. etoken
pro usb is getting properly detected in that. now i launch rdesktop
(1.6) with "-r scard" and i am taken in to server with smart card
authentication properly. As soon as i remove etoken from host, the
login comes back to normal username an password. Now the problem is
when
I reinsert etoken back to the client, the server system doesn't
detects that etoken is inserted again and the only way to login is
usename and password (not etoken smart card).

I believe that RDP server is not transferred the information that
etoken is inserted again.  can you tell me what am i missing ?

I have seen in windows that we do not need to restart RDP connection.
once user removes etoken, session gets locked and on inserting etoken
back, session (or MS Gina) detects this and asks for etoken PIN to
make user gets login back again.

I just tried to debug rdesktop. please have a look at debug messages.

--------------
WARNING: Not compiled with smartcard support
ERROR: Failed to open keymap en-us
WARNING: rdp_out_unistr: iconv_open[ANSI_X3.4-1968 -> UTF-16LE] fail 0xffffffff
WARNING: Remote desktop does not support colour depth 24; falling back to 16
root@OEM000F00480CA3:/etc/udev/rules.d# cp /media/flash/rdesktop-debug
/bin/rdesktop
root@OEM000F00480CA3:/etc/udev/rules.d# rdesktop -r scard 107.108.92.142
ERROR: Failed to open keymap en-us
WARNING: rdp_out_unistr: iconv_open[ANSI_X3.4-1968 -> UTF-16LE] fail 0xffffffff
WARNING: Remote desktop does not support colour depth 24; falling back to 16
SCARD: SCardAccessStartedEvent()
SCARD: SCardEstablishContext()
SCARD: -> Success (context: 0x0103a5a6)
SCARD: SCardListReaders(context: 0x0103a5a6)
SCARD: -> Success
SCARD:    "Aladdin eToken PRO USB 72K Java 00 00"
SCARD: SCardGetStatusChange(context: 0x0103a5a6, timeout: 0xffffffff, count: 2)
SCARD:    "\\?PnP?\Notification"
SCARD:        user: 0x00000000, state: 0x00000001, event: 0x00000000
SCARD:            current state: 0x00000000
SCARD:    "Aladdin eToken PRO USB 72K Java 00 00"
SCARD:        user: 0x00000000, state: 0x00000010, event: 0x00000000
SCARD:            current state: 0x00000010
SCARD: -> Success
SCARD:    "\\?PnP?\Notification"
SCARD:        user: 0x00000000, state: 0x00000000, event: 0x00000001
SCARD:    "Aladdin eToken PRO USB 72K Java 00 00"
SCARD:        user: 0x00000000, state: 0x00000010, event: 0x00010122
SCARD: SCardGetStatusChange(context: 0x0103a5a6, timeout: 0xffffffff, count: 2)
SCARD:    "\\?PnP?\Notification"
SCARD:        user: 0x00000000, state: 0x00000001, event: 0x00000001
SCARD:            current state: 0x00000001
SCARD:    "Aladdin eToken PRO USB 72K Java 00 00"
SCARD:        user: 0x00000000, state: 0x00000122, event: 0x00000122
SCARD:            current state: 0x00010122





SCARD: -> Success
SCARD:    "\\?PnP?\Notification"
SCARD:        user: 0x00000000, state: 0x00000001, event: 0x00000001
SCARD:    "Aladdin eToken PRO USB 72K Java 00 00"
SCARD:        user: 0x00000000, state: 0x00010122, event: 0x0002000a
SCARD: SCardGetStatusChange(context: 0x0103a5a6, timeout: 0xffffffff, count: 1)
SCARD:    "\\?PnP?\Notification"
SCARD:        user: 0x00000000, state: 0x00000001, event: 0x00000001
SCARD:            current state: 0x00000001
SCARD: -> Success
SCARD:    "\\?PnP?\Notification"
SCARD:        user: 0x00000000, state: 0x00000001, event: 0x00000001
SCARD: SCardGetStatusChange(context: 0x0103a5a6, timeout: 0xffffffff, count: 1)
SCARD:    "\\?PnP?\Notification"
SCARD:        user: 0x00000000, state: 0x00000001, event: 0x00000001
SCARD:            current state: 0x00000001




SCARD: -> Success
SCARD:    "\\?PnP?\Notification"
SCARD:        user: 0x00000000, state: 0x00000001, event: 0x00000001
SCARD: SCardGetStatusChange(context: 0x0103a5a6, timeout: 0xffffffff, count: 1)
SCARD:    "\\?PnP?\Notification"
SCARD:        user: 0x00000000, state: 0x00000001, event: 0x00000001
SCARD:            current state: 0x00000001

------------------------------------------------------------

In the above messages the first block shows that etoekn is
successfully connected to rdesktop session and all information is
transfered. Second block shows that  etoekn is disconnected. 3rd block
shows that there is some device which is connected but I am not sure
why etoken information is not being shown as it is shown in 1st block
although on reinnserting PKIMonitor properly detects etoken device.

Is it possible that some of my udev or driver rules are wrong which
are making it difficult for rdesktop to know of etoken information ?

any suggestions ?