Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 168721 - unable to read data that is more than 256 bytes from smartcard.
Summary: unable to read data that is more than 256 bytes from smartcard.
Status: RESOLVED NEEDINFO
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Unspecified (show other bugs)
Hardware: x86 Linux
: High normal
Assignee: Crypto team [DISABLED]
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-02-28 12:46 UTC by kamala kumar
Modified: 2009-06-11 07:57 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
gentoo vmware config (Other Linux 2.6.x kernel.vmx,1.05 KB, text/plain)
2007-04-02 12:32 UTC, kamala kumar
Details

Note You need to log in before you can comment on or make changes to this bug.
Description kamala kumar 2007-02-28 12:46:56 UTC
I am developing one module that interact with smartcard in Gentoo system. I am using SCR331 reader. And I have installed Gentoo system in VMVare 5.5. I have updated the firmware of the reader as specified in the ccid driver website.
I installed pcsc-lite and ccid driver using following command. 

ACCEPT_KEYWORDS=~x86 MAKEOPTS=-j1 emerge sys-apps/pcsc-lite
ACCEPT_KEYWORDS=~x86 emerge app-crypt/ccid 

I am able to work with the smartcard. But when the application send Get Response APDU(00 C0 00 00 00) to get data more than 256 bytes, the application is retuning error 0x80100016.

I have tested my module in 2 other Linux distributions. My module is working fine in that platforms. That is why i doubt the problem may be in the Gentoo OS.

I have also attached the pcscd log with
apdu information here. Can you please tell me why I am
getting this error 0x80100016 when sending the Get
Response APDU (00 C0 00 00 00 )



===============================================
pcscdaemon.c:259:main() pcscd set to foreground with
debug send to stderr
debuglog.c:236:DebugLogSetCategory() Debug options:
APDU
pcscdaemon.c:464:main() pcsc-lite 1.3.1 daemon ready.
hotplug_libusb.c:407:HPAddHotPluggable() Adding USB
device: 001:004
readerfactory.c:1095:RFInitializeReader() Attempting
startup of SCM SCR 331 (2000012F) 00 00.
readerfactory.c:967:RFBindFunctions() Loading IFD
Handler 3.0
ifdhandler.c:1155:init_driver() LogLevel: 0x0003
ifdhandler.c:1165:init_driver() DriverOptions: 0x0000
ifdhandler.c:76:IFDHCreateChannelByName() lun: 0,
device: usb:04e6/e001:libusb:001:004
ccid_usb.c:231:OpenUSBByName() Manufacturer: Ludovic
Rousseau (ludovic.rousseau@free.fr)
ccid_usb.c:241:OpenUSBByName() ProductString: Generic
CCID driver v1.0.1
ccid_usb.c:247:OpenUSBByName() Copyright: This driver
is protected by terms of the GNU General Public
License version 2, or (at your option) any later
version.
ccid_usb.c:395:OpenUSBByName() Found Vendor/Product:
04E6/E001 (SCM SCR 331)
ccid_usb.c:397:OpenUSBByName() Using USB bus/device:
001/004
ccid_usb.c:747:get_data_rates() IFD does not support
GET_DATA_RATES request: Broken pipe
ifdhandler.c:252:IFDHGetCapabilities() lun: 0, tag:
0xFAE
ifdhandler.c:294:IFDHGetCapabilities() Reader supports
1 slots
ifdhandler.c:787:IFDHPowerICC() lun: 0
Card ATR: 3B DB 96 00 81 B1 FE 45 1F 03 00 F9 A0 00 00
03 08 00 00 10 00 98 
prothandler.c:130:PHSetProtocol() Attempting PTS to
T=1
ifdhandler.c:377:IFDHSetProtocolParameters() lun: 0,
protocol T=1
ifdhandler.c:1260:extra_egt() Extra EGT patch applied
APDU: 00 CB 3F FF 05 5C 03 5F C1 07 
ifdhandler.c:894:IFDHTransmitToICC() lun: 0
SW: 61 47 
APDU: 00 C0 00 00 47 
ifdhandler.c:894:IFDHTransmitToICC() lun: 0
SW: 53 45 F0 10 73 6F 6D 65 20 63 63 63 20 63 61 72 64
20 69 64 F1 01 21 F2 01 21 F3 00 F4 01 11 F5 01 10 F6
11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
F7 01 00 FA 01 00 FB 01 00 FC 01 00 FD 01 00 FE 01 00
90 00 
APDU: 00 CB 3F FF 05 5C 03 5F C1 02 
ifdhandler.c:894:IFDHTransmitToICC() lun: 0
SW: 61 00 
APDU: 00 C0 00 00 00 
ifdhandler.c:894:IFDHTransmitToICC() lun: 0
ccid_usb.c:508:ReadUSB() usb_bulk_read(001/004):
Resource temporarily unavailable
openct/proto-t1.c:218:t1_transceive() fatal:
transmit/receive failed
SW: 
ifdwrapper.c:735:IFDTransmit() Card not transacted:
612
winscard.c:1491:SCardTransmit() Card not transacted:
0x80100016
APDU: 00 A4 04 00 0A 00 00 00 00 00 00 00 00 00 00 
ccid_usb.c:474:WriteUSB() usb_bulk_write(001/004):
Resource temporarily unavailable
ifdwrapper.c:484:IFDStatusICC() Card not transacted:
612
eventhandler.c:301:EHStatusHandlerThread() Error
communicating to: SCM SCR 331 (2000012F) 00 00
ifdhandler.c:894:IFDHTransmitToICC() lun: 0
SW: 
ifdwrapper.c:735:IFDTransmit() Card not transacted:
612
winscard.c:1491:SCardTransmit() Card not transacted:
0x80100016
ccid_usb.c:474:WriteUSB() usb_bulk_write(001/004):
Resource temporarily unavailable
ifdwrapper.c:484:IFDStatusICC() Card not transacted:
612
ifdhandler.c:787:IFDHPowerICC() lun: 0
ccid_usb.c:474:WriteUSB() usb_bulk_write(001/004):
Resource temporarily unavailable
ifdhandler.c:823:IFDHPowerICC() PowerUp failed
winscard.c:771:SCardDisconnect() Error resetting card.
pcscdaemon.c:529:signal_trap() Preparing for suicide
hotplug_libusb.c:361:HPEstablishUSBNotifications()
Hotplug stopped
readerfactory.c:1350:RFCleanupReaders() entering
cleaning function
readerfactory.c:1359:RFCleanupReaders() Stopping
reader: SCM SCR 331 (2000012F) 00 00
eventhandler.c:121:EHDestroyEventHandler() Stomping
thread.
ccid_usb.c:474:WriteUSB() usb_bulk_write(001/004):
Resource temporarily unavailable
ifdwrapper.c:484:IFDStatusICC() Card not transacted:
612
eventhandler.c:301:EHStatusHandlerThread() Error
communicating to: SCM SCR 331 (2000012F) 00 00
eventhandler.c:150:EHDestroyEventHandler() Thread
stomped.
readerfactory.c:1142:RFUnInitializeReader() Attempting
shutdown of SCM SCR 331 (2000012F) 00 00.
ifdhandler.c:203:IFDHCloseChannel() lun: 0
ccid_usb.c:474:WriteUSB() usb_bulk_write(001/004):
Resource temporarily unavailable
readerfactory.c:1012:RFUnloadReader() Unloading reader
driver.
pcscdaemon.c:489:at_exit() cleaning /var/run
===========================================


Reproducible: Always

Steps to Reproduce:
1. Write a small application that use pcsclite library to read data from smartcard.
2. Try to read data which is more than 256 bytes.
3. SCardTransmit function returns error 0x80100016 when transmitting the Get Response apdu
Actual Results:  
It should successfully read the data
Comment 1 Alon Bar-Lev (RETIRED) gentoo-dev 2007-02-28 18:36:21 UTC
Which version of pcsc-lite and ccid you are using in gentoo and the other distributions?
Do you run all under VMWare? VMWare has a bug in its USB implementation for specific APDUs sizes.

Starting from pcsc-lite-1.3.2 your module should support extended APDUs in order to access >= 256 bytes APDUs.

In gentoo please paste the output of:
# equery list pcsc-lite
# equery list ccid
Comment 2 kamala kumar 2007-03-01 12:30:09 UTC
I have given the output of equery command you asked.
localhost admin # equery list pcsc-lite
[ Searching for package 'pcsc-lite' in all categories among: ]
 * installed packages
[I--] [M~] sys-apps/pcsc-lite-1.3.1-r1 (0)
localhost admin # equery list ccid
[ Searching for package 'ccid' in all categories among: ]
 * installed packages
[I--] [M~] app-crypt/ccid-1.0.1-r1 (0)


These packages are installed by using 
ACCEPT_KEYWORDS=~x86 MAKEOPTS=-j1 emerge sys-apps/pcsc-lite
ACCEPT_KEYWORDS=~x86 emerge app-crypt/ccid

===================================
I also tried with latest pcsc-lite-1.3.3 and ccid1.2.1. These packages i installed by getting the source from its web site and build and installed the packages. I got same result using these package also.

I have installed Gentoo system in VMWare 5.5. I also installed my other linux distributions in VMWare 5.5. I did not get this error in other Linux distributions.

Comment 3 Alon Bar-Lev (RETIRED) gentoo-dev 2007-03-01 13:58:37 UTC
Perform:
echo "app-crypt/ccid" >> /etc/portage/package.keywords
echo "sys-apps/pcsc-lite" >> /etc/portage/package.keywords
emerge --update --deep world
/etc/init.d/pcscd restart

To install the latest, I use:
app-crypt/ccid-1.2.1
sys-apps/pcsc-lite-1.4.0

Please use equery again to verify that you are using the latest.

My smartcard provider uses > 256 bytes APDU, I know this because I had problems with this issue in the past.

It is very strange that you have problems when compiling from source.

You did not answer which version did you find working in other distributions.
Comment 4 kamala kumar 2007-03-01 15:10:50 UTC
In other linux distributions i am using pcsc-lite version 1.3.2 and ccid version 1.2.1. I tried with less version also. It was working well with all the versions.

I think you have misunderstood the issue. I did not mean APDU size of 256 bytes.
I mean when trying to read data which is more than 256 bytes, SCardTransmit function returns error.

Following is the list of APDU tranfererd according to the attached log

>> 00 CB 3F FF 05 5C 03 5F C1 07  (read data apdu)

<< 61 47 (status code returned)

>> 00 C0 00 00 47 (Get Response APDU for getting 0x47 bytes of data)

<< 53 45 F0 10 73 6F 6D 65 20 63 63 63 20 63 61 72 64
20 69 64 F1 01 21 F2 01 21 F3 00 F4 01 11 F5 01 10 F6
11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
F7 01 00 FA 01 00 FB 01 00 FC 01 00 FD 01 00 FE 01 00
90 00 (data bytes returned)

>> 00 CB 3F FF 05 5C 03 5F C1 02 (read data apdu for another object which has more than 256 bytes of data)

<< 61 00  (status code)

>> 00 C0 00 00 00 (get response APDU for getting 256 bytes of data) -- SCardTranmit function returns 0x80100016 error code at this point




Comment 5 Alon Bar-Lev (RETIRED) gentoo-dev 2007-03-01 16:40:42 UTC
Both ccid and pcsc-lite are clean upstream implementation.
The only dependency I can think of is libusb.
Current stable libusb is:
dev-libs/libusb-0.1.12

Maybe this different between other distributions, or other distributions added patches for ccid and/or pcsc-lite.

Have you tried to compile the same version which did not work for you in Gentoo on other distributions? It will help me understand if the problem is within the packages or in the infrastructure.

Anyway... You can also debug the ccid driver by modifying the /usr/lib/readers/usb/ifd-ccid.bundle/Contents/Info.plist.

But since we use upstream release as-is I think it is safe to ask the question at muscle mailing list.
Comment 6 kamala kumar 2007-03-02 12:11:39 UTC
I installed dev-libs/libusb-0.1.12 package and tried with this also.
I am getting same result. In other Linux distribution we tried same version of pcsc-lite, ccid, libusb package. It is working fine in that platforms.

Since this error is only occuring in Gentoo system, i thought it will be appropriate to consult you.

Can you please verify the scenario by writing small program.
Comment 7 Alon Bar-Lev (RETIRED) gentoo-dev 2007-03-02 17:57:40 UTC
Ludovic: I see you on bug#168942, thanks for the help! I will appreciate any help here too :)

We use your packages as-is so I really don't know how I can help here...

http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-apps/pcsc-lite/pcsc-lite-1.4.0.ebuild?rev=1.1&view=markup
http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-crypt/ccid/ccid-1.2.1.ebuild?rev=1.1&view=markup

Thanks!
Comment 8 Ludovic Rousseau 2007-03-04 14:39:44 UTC
(In reply to comment #4)
> I think you have misunderstood the issue. I did not mean APDU size of 256
> bytes.
> I mean when trying to read data which is more than 256 bytes, SCardTransmit
> function returns error.

Your application is not trying to read more than 256 bytes but exactly 256 bytes.

> >> 00 C0 00 00 00 (get response APDU for getting 256 bytes of data) -- SCardTranmit function returns 0x80100016 error code at this point

Here Le is 00 for 256 bytes.

As you say this is working on other Linux distributions so the problem is not with pcsc-lite or the ccid driver.
Comment 9 Ludovic Rousseau 2007-03-04 14:41:59 UTC
(In reply to comment #7)
> We use your packages as-is so I really don't know how I can help here...

I suspect a bug in the kernel.

Could you try with a vanilla Linux kernel instead of a Gentoo kernel?
Comment 10 Alon Bar-Lev (RETIRED) gentoo-dev 2007-03-05 06:34:23 UTC
(In reply to comment #9)
> (In reply to comment #7)
> > We use your packages as-is so I really don't know how I can help here...
> 
> I suspect a bug in the kernel.
> 
> Could you try with a vanilla Linux kernel instead of a Gentoo kernel?
> 

Thanks!

But Gentoo is almost vanilla, no usb related issue.
You can see the small patch list at:
http://dev.gentoo.org/~dsd/genpatches/patches-2.6.19-7.htm
http://dev.gentoo.org/~dsd/genpatches/patches-2.6.20-1.htm

libusb has one patch to make it support freebsd:
http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-libs/libusb/files/0.1.12-fbsd.patch?rev=1.1&view=markup

So I don't think the problem is here... Unless other distributions fixed some problem without reporting upstream.
Comment 11 kamala kumar 2007-03-06 06:02:25 UTC
Can you please tell me whether you can reproduce the issue? I think based on that we can easily issolate the problem module.
Comment 12 Alon Bar-Lev (RETIRED) gentoo-dev 2007-03-06 06:09:14 UTC
Who? me? I don't have your smartcard, I don't have your reader, and I don't have a test program.
So what do you want me to test?
Comment 13 kamala kumar 2007-03-06 08:16:33 UTC
I think this error will occur in any smartcard provided the data in the container stored on the smart card is more than 256. And I think it should occur in any smartcard reader. I have given small program that reads the data from the card. You have to change the Read data APDU according to the smartcard you use and other things will be same. 
=============================================================================
#include <stdio.h>
#include <wintypes.h>
#include <winscard.h>


void PrintHex(const BYTE* buf, DWORD len)
{
   for (DWORD i = 0; i < len; i++) printf("%.2X ", buf[i] & 0xFF);
   printf("\n");
}

int main(int argc, char* argv[])
{
   LONG rv;
   char mszReaders[4096];
   DWORD cchReaders = sizeof(mszReaders)/sizeof(char);
   DWORD dwActiveProtocol;
   SCARDCONTEXT hContext;
   SCARDHANDLE hCard;
   BYTE recv[256];
   DWORD buf_len, recv_len;
   const SCARD_IO_REQUEST* io;

   
   rv = SCardEstablishContext(SCARD_SCOPE_USER, NULL, NULL, &hContext);
   printf("Establish: %#x\n", rv);

   rv = SCardListReaders(hContext, NULL, mszReaders, &cchReaders);
   printf("ListReaders: %#x \"%s\"\n", rv, mszReaders);

   rv = SCardConnect(hContext, mszReaders, SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0|SCARD_PROTOCOL_T1, &hCard, &dwActiveProtocol);
   printf("Connect: %#x\n", rv);

   if (dwActiveProtocol == SCARD_PROTOCOL_T0)
      io = SCARD_PCI_T0;
   else
      io = SCARD_PCI_T1;

 	
	int tmplen;
   //Read Data APDU
   { BYTE buf[] = { 0x00, 0xCB, 0x3F, 0xFF, 0x05, 0x5C, 0x03, 0x5F,0xC1,0x02 };
     recv_len = sizeof(recv);
     rv = SCardTransmit(hCard, io, buf, sizeof(buf), NULL, recv, &recv_len);
     if (rv != SCARD_S_SUCCESS) { printf("Transmit failed: %#x\n", rv); return(1); }
     printf("-> "); PrintHex(buf, sizeof(buf));
     printf("<- "); PrintHex(recv, recv_len);
     tmplen = recv[recv_len-1];
   }

   { BYTE buf[] = { 0x00, 0xC0, 0x00, 0x00, 0x00 };
     buf[4]=tmplen;
     recv_len = sizeof(recv);
     rv = SCardTransmit(hCard, io, buf, sizeof(buf), NULL, recv, &recv_len);
     if (rv != SCARD_S_SUCCESS) { printf("Transmit failed: %#x\n", rv); return(1); }
     printf("-> "); PrintHex(buf, sizeof(buf));
     printf("<- "); PrintHex(recv, recv_len);
   }

   SCardDisconnect(hCard, SCARD_RESET_CARD);
   SCardReleaseContext(hContext);

   return 0;
}

=============================================================================
# use "gcc" to compile source files.
CC = g++ 
# the linker is also "gcc". It might be something else with other compilers.
LD = g++ 
# Compiler flags go here.
CFLAGS = -g -Wall
#CFLAGS =
# Linker flags go here. Currently there aren't any, but if we'll switch to
# code optimization, we might add "-s" here to strip debug info and symbols.
LDFLAGS = -lpcsclite
# use this command to erase files.
RM = /bin/rm -f
# list of generated object files.
OBJS = read_data.o
# program executable file name.
PROG = read_data
# include directory
INC = -I/usr/include/PCSC  


# top-level rule, to compile everything.
all: $(PROG)
	
     
# rule to link the program
$(PROG): $(OBJS)
	$(LD) $(LDFLAGS) $(OBJS)  -o $(PROG)

# rule for file "StdAfx.o".
read_data.o: read_data.cpp 
	$(CC) $(INC) $(CFLAGS) -c read_data.cpp

# rule for cleaning re-compilable files.
clean:
	$(RM) $(PROG) $(OBJS)
==============================================================================
Comment 14 Ludovic Rousseau 2007-03-08 21:53:49 UTC
(In reply to comment #13)
> I think this error will occur in any smartcard provided the data in the
> container stored on the smart card is more than 256. And I think it should
> occur in any smartcard reader. I have given small program that reads the data
> from the card. You have to change the Read data APDU according to the smartcard
> you use and other things will be same. 
> =============================================================================

>    BYTE recv[256];

>      recv_len = sizeof(recv);
>      rv = SCardTransmit(hCard, io, buf, sizeof(buf), NULL, recv, &recv_len);

You will never receive more than 256 bytes if your receive buffer is 256 bytes. And you must include the 2 status word so data will be limited to 254 bytes.

If you want to receive 256 bytes of data you need a buffer of 258 bytes.
Comment 15 kamala kumar 2007-03-12 10:47:33 UTC
Sorry, The test program I attached in the bug is wrong. 

I changed the size of recv buffer to BYTE recv[260]; and Retested the program.

I am getting error as described previously. I have to remove and insert the reader and restart the pcscd service for the programs to start working with smartcard again. Please try by changing the recv buffer size to BYTE recv[260]; in the attached test program.
Comment 16 Ludovic Rousseau 2007-03-18 20:54:08 UTC
(In reply to comment #15)
> I am getting error as described previously. I have to remove and insert the
> reader and restart the pcscd service for the programs to start working with
> smartcard again.

Can you send the output of the execution of your test program under gentoo (with the problem) and also under another Linux distribution (without the problem)?
Comment 17 kamala kumar 2007-03-22 08:39:44 UTC
I have given the pcscd log taken in the another linux distribution here. Here reading data from the object having more than 256 bytes of data succeed.
==================================================================
pcscdaemon.c:258:main() pcscd set to foreground with debug send to stderr
pcscdaemon.c:463:main() pcsc-lite 1.2.9-beta9 daemon ready.
hotplug_libusb.c:404:HPAddHotPluggable() Adding USB device: 001:002
readerfactory.c:1097:RFInitializeReader() Attempting startup of SCM SCR 331 00 00.
readerfactory.c:971:RFBindFunctions() Loading IFD Handler 3.0
ifdhandler.c:1090:init_driver() LogLevel: 0x0003
ifdhandler.c:1100:init_driver() DriverOptions: 0x0000
ifdhandler.c:74:IFDHCreateChannelByName() lun: 0, device: usb:04e6/e001:libusb:001:002
ccid_usb.c:220:OpenUSBByName() Manufacturer: Ludovic Rousseau (ludovic.rousseau@free.fr)
ccid_usb.c:230:OpenUSBByName() ProductString: Generic CCID driver v0.9.4
ccid_usb.c:236:OpenUSBByName() Copyright: This driver is protected by terms of the GNU General Public License version 2, or (at your option) any later version.
ccid_usb.c:375:OpenUSBByName() Found Vendor/Product: 04E6/E001 (SCM SCR 331)
ccid_usb.c:377:OpenUSBByName() Using USB bus/device: 001/002
ccid_usb.c:720:get_data_rates() IFD does not support GET_DATA_RATES request: Broken pipe
ifdhandler.c:250:IFDHGetCapabilities() lun: 0, tag: 0xFAE
ifdhandler.c:292:IFDHGetCapabilities() Reader supports 1 slots
ifdhandler.c:725:IFDHPowerICC() lun: 0
Card ATR: 3B DB 96 00 81 B1 FE 45 1F 03 80 F9 A0 00 00 03 08 00 00 10 00 18 
prothandler.c:129:PHSetProtocol() Attempting PTS to T=1
ifdhandler.c:375:IFDHSetProtocolParameters() lun: 0, protocol T=1
ifdhandler.c:1171:extra_egt() Extra EGT patch applied
APDU: 00 CB 3F FF 05 5C 03 5F C1 02 
ifdhandler.c:831:IFDHTransmitToICC() lun: 0
SW: 61 00 
APDU: 00 C0 00 00 00 
ifdhandler.c:831:IFDHTransmitToICC() lun: 0
SW: 53 82 04 8D 30 19 D4 32 48 58 21 0C 2D 31 71 B5 25 A1 68 58 21 0C 26 2E 36 A4 84 32 48 43 F3 34 10 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 35 08 32 30 31 31 30 34 31 30 3D 00 3E 82 04 4E 30 82 04 4A 06 09 2A 86 48 86 F7 0D 01 07 02 A0 82 04 3B 30 82 04 37 02 01 03 31 0B 30 09 06 05 2B 0E 03 02 1A 05 00 30 0A 06 08 60 86 48 01 65 03 06 01 A0 82 02 9B 30 82 02 97 30 82 02 00 A0 03 02 01 02 02 01 01 30 0D 06 09 2A 86 48 86 F7 0D 01 01 05 05 00 30 2F 31 0B 30 09 06 03 55 04 06 13 02 55 53 31 0D 30 0B 06 03 55 04 0A 13 04 4E 49 53 54 31 11 30 0F 06 03 55 04 03 13 08 46 41 53 43 4E 20 43 41 30 1E 17 0D 30 35 30 35 32 37 31 34 35 37 32 30 5A 17 0D 31 35 30 38 31 39 31 34 35 37 32 30 5A 30 2F 31 0B 30 09 06 03 55 04 06 13 02 55 53 31 0D 30 0B 06 03 55 04 0A 61 00 
ifdhandler.c:725:IFDHPowerICC() lun: 0
pcscdaemon.c:528:signal_trap() Preparing for suicide
hotplug_libusb.c:358:HPEstablishUSBNotifications() Hotplug stopped
readerfactory.c:1352:RFCleanupReaders() entering cleaning function
readerfactory.c:1361:RFCleanupReaders() Stopping reader: SCM SCR 331 00 00
eventhandler.c:120:EHDestroyEventHandler() Stomping thread.
eventhandler.c:149:EHDestroyEventHandler() Thread stomped.
readerfactory.c:1144:RFUnInitializeReader() Attempting shutdown of SCM SCR 331 00 00.
ifdhandler.c:201:IFDHCloseChannel() lun: 0
readerfactory.c:1014:RFUnloadReader() Unloading reader driver.
pcscdaemon.c:488:at_exit() cleaning /var/run
==========================================================================

Comment 18 Ludovic Rousseau 2007-03-22 09:09:17 UTC
(In reply to comment #17)
> I have given the pcscd log taken in the another linux distribution here. Here
> reading data from the object having more than 256 bytes of data succeed.
> ==================================================================

> pcscdaemon.c:463:main() pcsc-lite 1.2.9-beta9 daemon ready.
> ccid_usb.c:230:OpenUSBByName() ProductString: Generic CCID driver v0.9.4

You are using pcsc-lite 1.2.9-beta and ccid 0.9.4 on this distribution.

Can you install a recent pcsc-lite (1.4.0) and a recent ccid (1.2.1) and try again?

I also note that your logs contains two different ATRs
- 3B DB 96 00 81 B1 FE 45 1F 03 00 F9 A0 00 00 03 08 00 00 10 00 98 (fails)
- 3B DB 96 00 81 B1 FE 45 1F 03 80 F9 A0 00 00 03 08 00 00 10 00 18 (works)
                                ^ difference here
Is it the same physical card in both cases? And the same physical reader (with the same firmware) in both cases?
Comment 19 kamala kumar 2007-03-22 11:02:13 UTC
Previously i used different card to take the log. Now I have used the same card used in the gentoo OS. Also I am using same pcsc-lite version as in the gentoo OS.
=========================================================================
pcscdaemon.c:259:main() pcscd set to foreground with debug send to stderr
pcscdaemon.c:464:main() pcsc-lite 1.3.1 daemon ready.
hotplug_libusb.c:407:HPAddHotPluggable() Adding USB device: 001:003
readerfactory.c:1095:RFInitializeReader() Attempting startup of SCM SCR 331 (2000012F) 00 00.
readerfactory.c:967:RFBindFunctions() Loading IFD Handler 3.0
ifdhandler.c:1155:init_driver() LogLevel: 0x0003
ifdhandler.c:1165:init_driver() DriverOptions: 0x0000
ifdhandler.c:76:IFDHCreateChannelByName() lun: 0, device: usb:04e6/e001:libusb:001:003
ccid_usb.c:231:OpenUSBByName() Manufacturer: Ludovic Rousseau (ludovic.rousseau@free.fr)
ccid_usb.c:241:OpenUSBByName() ProductString: Generic CCID driver v1.0.1
ccid_usb.c:247:OpenUSBByName() Copyright: This driver is protected by terms of the GNU General Public License version 2, or (at your option) any later version.
ccid_usb.c:395:OpenUSBByName() Found Vendor/Product: 04E6/E001 (SCM SCR 331)
ccid_usb.c:397:OpenUSBByName() Using USB bus/device: 001/003
ccid_usb.c:747:get_data_rates() IFD does not support GET_DATA_RATES request: Broken pipe
ifdhandler.c:252:IFDHGetCapabilities() lun: 0, tag: 0xFAE
ifdhandler.c:294:IFDHGetCapabilities() Reader supports 1 slots
ifdhandler.c:787:IFDHPowerICC() lun: 0
Card ATR: 3B DB 96 00 81 B1 FE 45 1F 03 00 F9 A0 00 00 03 08 00 00 10 00 98 
prothandler.c:130:PHSetProtocol() Attempting PTS to T=1
ifdhandler.c:377:IFDHSetProtocolParameters() lun: 0, protocol T=1
ifdhandler.c:1260:extra_egt() Extra EGT patch applied
APDU: 00 CB 3F FF 05 5C 03 5F C1 02 
ifdhandler.c:894:IFDHTransmitToICC() lun: 0
SW: 61 00 
APDU: 00 C0 00 00 00 
ifdhandler.c:894:IFDHTransmitToICC() lun: 0
SW: 53 82 04 8D 30 19 D4 32 48 58 21 0C 2D 31 71 B5 25 A1 68 58 21 0C 26 2E 36 A4 84 32 48 43 F3 34 10 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 35 08 32 30 31 31 30 34 31 30 3D 00 3E 82 04 4E 30 82 04 4A 06 09 2A 86 48 86 F7 0D 01 07 02 A0 82 04 3B 30 82 04 37 02 01 03 31 0B 30 09 06 05 2B 0E 03 02 1A 05 00 30 0A 06 08 60 86 48 01 65 03 06 01 A0 82 02 9B 30 82 02 97 30 82 02 00 A0 03 02 01 02 02 01 01 30 0D 06 09 2A 86 48 86 F7 0D 01 01 05 05 00 30 2F 31 0B 30 09 06 03 55 04 06 13 02 55 53 31 0D 30 0B 06 03 55 04 0A 13 04 4E 49 53 54 31 11 30 0F 06 03 55 04 03 13 08 46 41 53 43 4E 20 43 41 30 1E 17 0D 30 35 30 35 32 37 31 34 35 37 32 30 5A 17 0D 31 35 30 38 31 39 31 34 35 37 32 30 5A 30 2F 31 0B 30 09 06 03 55 04 06 13 02 55 53 31 0D 30 0B 06 03 55 04 0A 61 00 
APDU: 00 C0 00 00 00 
ifdhandler.c:894:IFDHTransmitToICC() lun: 0
SW: 13 04 4E 49 53 54 31 11 30 0F 06 03 55 04 03 13 08 46 41 53 43 4E 20 43 41 30 81 9F 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01 05 00 03 81 8D 00 30 81 89 02 81 81 00 91 CF 6E F0 4D D3 F2 EB 46 1E B9 1B A4 25 47 E4 88 8D E6 89 85 A8 E5 86 E7 E8 9D EA 62 7B 73 74 7B 89 55 13 82 B6 45 53 99 F2 36 72 6A 48 7A 59 ED C8 F0 70 3C 04 2C 33 AD 21 0C 32 00 BD F1 F4 F1 FA 9B 02 CB 3F AA 7B 89 C1 A4 D0 D4 C8 29 94 7A B0 E2 3E 69 C6 3C 71 43 DF A6 1D 55 18 21 CC AE 40 E3 CD 89 E2 62 A2 10 68 67 3B 56 24 4E C1 43 ED A4 48 64 73 E4 78 4C 0B 0E 69 6A 30 61 11 02 03 01 00 01 A3 81 C2 30 81 BF 30 1D 06 03 55 1D 0E 04 16 04 14 D6 42 7A 0E A3 07 B0 FC 23 93 B4 4D 9C F6 8B 22 C8 0F 89 40 30 0E 06 03 55 1D 0F 01 01 FF 04 04 03 02 01 06 30 0F 06 03 55 1D 13 01 01 FF 04 05 30 03 01 01 61 00 
APDU: 00 C0 00 00 00 
ifdhandler.c:894:IFDHTransmitToICC() lun: 0
SW: FF 30 7D 06 08 2B 06 01 05 05 07 01 0B 04 71 30 6F 30 6D 06 08 2B 06 01 05 05 07 30 05 86 61 6C 64 61 70 3A 2F 2F 77 77 77 2E 65 78 61 6D 70 6C 65 2E 63 6F 6D 2F 63 6E 3D 46 41 53 43 4E 25 32 30 43 41 2C 6F 3D 4E 49 53 54 2C 63 3D 55 53 3F 63 41 43 65 72 74 69 66 69 63 61 74 65 3B 62 69 6E 61 72 79 2C 63 72 6F 73 73 43 65 72 74 69 66 69 63 61 74 65 50 61 69 72 3B 62 69 6E 61 72 79 30 0D 06 09 2A 86 48 86 F7 0D 01 01 05 05 00 03 81 81 00 21 EE F6 02 D8 A0 CD E5 A7 34 F9 87 ED B8 76 D5 AC D2 A3 0A F7 EF 36 83 3E 67 6F E2 42 B3 34 92 46 C1 F5 5A 80 05 22 FF 97 66 25 02 0D 21 02 6A B7 BD 49 CB 95 5E 8F C7 82 6A 2A A9 CD 03 35 4D F5 7C CA 4C EB 0B 61 DB 8F 9E C2 D6 7C 80 41 79 5F 5D 28 25 4C 8E 33 72 20 B1 6B A2 18 5F 25 95 B6 8C 2C 6E 07 78 C9 32 15 35 28 A9 46 61 00 
APDU: 00 C0 00 00 00 
ifdhandler.c:894:IFDHTransmitToICC() lun: 0
SW: B1 28 68 7F 08 14 12 C7 4A 1A B2 5F ED 34 57 22 6B A5 08 31 82 01 78 30 82 01 74 02 01 01 30 34 30 2F 31 0B 30 09 06 03 55 04 06 13 02 55 53 31 0D 30 0B 06 03 55 04 0A 13 04 4E 49 53 54 31 11 30 0F 06 03 55 04 03 13 08 46 41 53 43 4E 20 43 41 02 01 01 30 09 06 05 2B 0E 03 02 1A 05 00 A0 81 9B 30 17 06 09 2A 86 48 86 F7 0D 01 09 03 31 0A 06 08 60 86 48 01 65 03 06 01 30 1C 06 09 2A 86 48 86 F7 0D 01 09 05 31 0F 17 0D 30 36 30 34 31 30 31 38 30 33 34 39 5A 30 23 06 09 2A 86 48 86 F7 0D 01 09 04 31 16 04 14 35 87 72 F2 AE 27 6A 60 46 9A 29 04 6E 35 8E 0E 71 A8 43 F1 30 3D 06 08 60 86 48 01 65 03 06 05 31 31 30 2F 31 0D 30 0B 06 03 55 04 0A 13 04 4E 49 53 54 31 0B 30 09 06 03 55 04 06 13 02 55 53 31 11 30 0F 06 03 55 04 03 13 08 46 41 53 43 4E 20 43 41 30 0D 06 61 91 
APDU: 00 C0 00 00 91 
ifdhandler.c:894:IFDHTransmitToICC() lun: 0
SW: 09 2A 86 48 86 F7 0D 01 01 01 05 00 04 81 80 6B B1 4E CA 24 B9 44 A1 4C B8 14 F2 AE 6E AB 37 96 E2 BC 2F FD 09 3B 31 08 8D 2F 5A EA 53 29 27 9B FF 11 BF 4E E2 DF CF 6B 6E 40 6D 15 AB E1 52 F1 BA 6C 5A FF 71 7D 74 38 B1 6B 73 1C C8 05 8D B4 32 5F FD 64 76 F8 96 12 55 09 8D 63 A3 B7 CE 21 91 8B FA F2 60 3B 1C 00 72 5A 3E 1C 2D 7F 04 FA 79 AD 25 F5 F1 85 02 10 72 BB 58 68 4A D0 6E 9A 08 E7 19 C5 2A F3 71 C3 6B 2B EA D3 3B 01 03 FE 00 90 00 
pcscdaemon.c:529:signal_trap() Preparing for suicide
hotplug_libusb.c:361:HPEstablishUSBNotifications() Hotplug stopped
readerfactory.c:1350:RFCleanupReaders() entering cleaning function
readerfactory.c:1359:RFCleanupReaders() Stopping reader: SCM SCR 331 (2000012F) 00 00
eventhandler.c:121:EHDestroyEventHandler() Stomping thread.
eventhandler.c:150:EHDestroyEventHandler() Thread stomped.
readerfactory.c:1142:RFUnInitializeReader() Attempting shutdown of SCM SCR 331 (2000012F) 00 00.
ifdhandler.c:203:IFDHCloseChannel() lun: 0
readerfactory.c:1012:RFUnloadReader() Unloading reader driver.
pcscdaemon.c:489:at_exit() cleaning /var/run
==============================================================================
Comment 20 Ludovic Rousseau 2007-03-22 12:56:59 UTC
(In reply to comment #19)
> Previously i used different card to take the log. Now I have used the same card
> used in the gentoo OS. Also I am using same pcsc-lite version as in the gentoo
> OS.

OK. Can you also use the same version for the CCID driver?
Comment 21 kamala kumar 2007-03-23 11:18:27 UTC
I think both are using same CCID version. Generic CCID driver v1.0.1. Is n't it?
Comment 22 Alon Bar-Lev (RETIRED) gentoo-dev 2007-03-23 13:00:19 UTC
One difference between other distributions and Gentoo is that we add --enable-extendedapdu to pcsc-lite-1.3.1-r1 configure.

But why don't you use the latest (and same) versions for testing in all distributions and then regress backward?
Comment 23 Ludovic Rousseau 2007-03-23 13:45:51 UTC
(In reply to comment #21)
> I think both are using same CCID version. Generic CCID driver v1.0.1. Is n't
> it?

No. The latest version of my ccid driver is 1.2.1. Get it from http://pcsclite.alioth.debian.org/ccid.html

I would like you to redo the tests on Gentoo and on the working distribution with the same versions of pcsc-lite (1.4.0) and ccid (1.2.1) so we can compare things.
Comment 24 Alon Bar-Lev (RETIRED) gentoo-dev 2007-03-23 13:56:08 UTC
kamala: Please follow the instructions at comment#3 to get latest version for Gentoo system.

Please make sure the output is the same on your side.
# equery list pcsc-lite
[I--] [ ~] sys-apps/pcsc-lite-1.4.0 (0)
# equery list ccid
[I--] [ ~] app-crypt/ccid-1.2.1 (0)

Thanks!
Comment 25 kamala kumar 2007-03-27 07:52:13 UTC
I have attached the logs as you have asked for. I downloaded the source and build and installed the required module. I used libusb version 0.1.12.

pcscd log in gentoo Linux distribution
==========================================================================
pcscdaemon.c:328:main() pcscd set to foreground with debug send to stderr
pcscdaemon.c:542:main() pcsc-lite 1.4.0 daemon ready.
hotplug_libusb.c:448:HPAddHotPluggable() Adding USB device: 001:002
readerfactory.c:1108:RFInitializeReader() Attempting startup of SCM SCR 331 (2000012F) 00 00 using /usr/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/libccid.so.1.2.1
readerfactory.c:977:RFBindFunctions() Loading IFD Handler 3.0
ifdhandler.c:1231:init_driver() LogLevel: 0x0003
ifdhandler.c:1241:init_driver() DriverOptions: 0x0000
ifdhandler.c:77:IFDHCreateChannelByName() lun: 0, device: usb:04e6/e001:libusb:001:002
ccid_usb.c:229:OpenUSBByName() Manufacturer: Ludovic Rousseau (ludovic.rousseau@free.fr)
ccid_usb.c:239:OpenUSBByName() ProductString: Generic CCID driver v1.2.1
ccid_usb.c:245: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.
ccid_usb.c:393:OpenUSBByName() Found Vendor/Product: 04E6/E001 (SCM SCR 331)
ccid_usb.c:395:OpenUSBByName() Using USB bus/device: 001/002
ccid_usb.c:743:get_data_rates() IFD does not support GET_DATA_RATES request: Broken pipe
ccid_usb.c:507:ReadUSB() usb_bulk_read(001/002): Resource temporarily unavailable
ccid_usb.c:507:ReadUSB() usb_bulk_read(001/002): Resource temporarily unavailable
ifdhandler.c:271:IFDHGetCapabilities() lun: 0, tag: 0xFAE
ifdhandler.c:313:IFDHGetCapabilities() Reader supports 1 slots
hotplug_libusb.c:395:HPEstablishUSBNotifications() Driver ifd-ccid.bundle does not support IFD_GENERATE_HOTPLUG
hotplug_libusb.c:404:HPEstablishUSBNotifications() Polling forced every 1 second(s)
ifdhandler.c:841:IFDHPowerICC() lun: 0, action: PowerUp
Card ATR: 3B DB 96 00 81 B1 FE 45 1F 03 00 F9 A0 00 00 03 08 00 00 10 00 98 
prothandler.c:130:PHSetProtocol() Attempting PTS to T=1
ifdhandler.c:418:IFDHSetProtocolParameters() lun: 0, protocol T=1
ifdhandler.c:1336:extra_egt() Extra EGT patch applied
APDU: 00 CB 3F FF 05 5C 03 5F C1 02 
ifdhandler.c:948:IFDHTransmitToICC() lun: 0
SW: 61 00 
APDU: 00 C0 00 00 00 
ifdhandler.c:948:IFDHTransmitToICC() lun: 0
ccid_usb.c:507:ReadUSB() usb_bulk_read(001/002): Resource temporarily unavailable
openct/proto-t1.c:221:t1_transceive() fatal: transmit/receive failed
SW: 
ifdwrapper.c:762:IFDTransmit() Card not transacted: 612
winscard.c:1616:SCardTransmit() Card not transacted: 0x80100016
pcscdaemon.c:623:signal_trap() Preparing for suicide
hotplug_libusb.c:369:HPRescanUsbBus() Hotplug stopped
readerfactory.c:1367:RFCleanupReaders() entering cleaning function
readerfactory.c:1376:RFCleanupReaders() Stopping reader: SCM SCR 331 (2000012F) 00 00
eventhandler.c:121:EHDestroyEventHandler() Stomping thread.
ccid_usb.c:471:WriteUSB() usb_bulk_write(001/002): Resource temporarily unavailable
ifdwrapper.c:494:IFDStatusICC() Card not transacted: 612
eventhandler.c:301:EHStatusHandlerThread() Error communicating to: SCM SCR 331 (2000012F) 00 00
eventhandler.c:150:EHDestroyEventHandler() Thread stomped.
readerfactory.c:1159:RFUnInitializeReader() Attempting shutdown of SCM SCR 331 (2000012F) 00 00.
ifdhandler.c:222:IFDHCloseChannel() lun: 0
ccid_usb.c:471:WriteUSB() usb_bulk_write(001/002): Resource temporarily unavailable
readerfactory.c:1022:RFUnloadReader() Unloading reader driver.
pcscdaemon.c:567:at_exit() cleaning /var/run
==========================================================================

pcscd log taken in another Linux distribution in which the program worked correctly
=========================================================================
pcscdaemon.c:328:main() pcscd set to foreground with debug send to stderr
pcscdaemon.c:542:main() pcsc-lite 1.4.0 daemon ready.
hotplug_libusb.c:448:HPAddHotPluggable() Adding USB device: 001:003
readerfactory.c:1108:RFInitializeReader() Attempting startup of SCM SCR 331 (2000012F) 00 00 using /usr/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/libccid.so.1.2.1
readerfactory.c:977:RFBindFunctions() Loading IFD Handler 3.0
ifdhandler.c:1231:init_driver() LogLevel: 0x0003
ifdhandler.c:1241:init_driver() DriverOptions: 0x0000
ifdhandler.c:77:IFDHCreateChannelByName() lun: 0, device: usb:04e6/e001:libusb:001:003
ccid_usb.c:229:OpenUSBByName() Manufacturer: Ludovic Rousseau (ludovic.rousseau@free.fr)
ccid_usb.c:239:OpenUSBByName() ProductString: Generic CCID driver v1.2.1
ccid_usb.c:245: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.
ccid_usb.c:393:OpenUSBByName() Found Vendor/Product: 04E6/E001 (SCM SCR 331)
ccid_usb.c:395:OpenUSBByName() Using USB bus/device: 001/003
ccid_usb.c:743:get_data_rates() IFD does not support GET_DATA_RATES request: Broken pipe
ifdhandler.c:271:IFDHGetCapabilities() lun: 0, tag: 0xFAE
ifdhandler.c:313:IFDHGetCapabilities() Reader supports 1 slots
hotplug_libusb.c:395:HPEstablishUSBNotifications() Driver ifd-ccid.bundle does not support IFD_GENERATE_HOTPLUG
hotplug_libusb.c:404:HPEstablishUSBNotifications() Polling forced every 1 second(s)
ifdhandler.c:841:IFDHPowerICC() lun: 0, action: PowerUp
Card ATR: 3B DB 96 00 81 B1 FE 45 1F 03 00 F9 A0 00 00 03 08 00 00 10 00 98 
prothandler.c:130:PHSetProtocol() Attempting PTS to T=1
ifdhandler.c:418:IFDHSetProtocolParameters() lun: 0, protocol T=1
ifdhandler.c:1336:extra_egt() Extra EGT patch applied
APDU: 00 CB 3F FF 05 5C 03 5F C1 02 
ifdhandler.c:948:IFDHTransmitToICC() lun: 0
SW: 61 00 
APDU: 00 C0 00 00 00 
ifdhandler.c:948:IFDHTransmitToICC() lun: 0
SW: 53 82 04 8D 30 19 D4 32 48 58 21 0C 2D 31 71 B5 25 A1 68 58 21 0C 26 2E 36 A4 84 32 48 43 F3 34 10 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 35 08 32 30 31 31 30 34 31 30 3D 00 3E 82 04 4E 30 82 04 4A 06 09 2A 86 48 86 F7 0D 01 07 02 A0 82 04 3B 30 82 04 37 02 01 03 31 0B 30 09 06 05 2B 0E 03 02 1A 05 00 30 0A 06 08 60 86 48 01 65 03 06 01 A0 82 02 9B 30 82 02 97 30 82 02 00 A0 03 02 01 02 02 01 01 30 0D 06 09 2A 86 48 86 F7 0D 01 01 05 05 00 30 2F 31 0B 30 09 06 03 55 04 06 13 02 55 53 31 0D 30 0B 06 03 55 04 0A 13 04 4E 49 53 54 31 11 30 0F 06 03 55 04 03 13 08 46 41 53 43 4E 20 43 41 30 1E 17 0D 30 35 30 35 32 37 31 34 35 37 32 30 5A 17 0D 31 35 30 38 31 39 31 34 35 37 32 30 5A 30 2F 31 0B 30 09 06 03 55 04 06 13 02 55 53 31 0D 30 0B 06 03 55 04 0A 61 00 
ifdhandler.c:841:IFDHPowerICC() lun: 0, action: Reset
pcscdaemon.c:623:signal_trap() Preparing for suicide
hotplug_libusb.c:369:HPRescanUsbBus() Hotplug stopped
readerfactory.c:1367:RFCleanupReaders() entering cleaning function
readerfactory.c:1376:RFCleanupReaders() Stopping reader: SCM SCR 331 (2000012F) 00 00
eventhandler.c:121:EHDestroyEventHandler() Stomping thread.
eventhandler.c:150:EHDestroyEventHandler() Thread stomped.
readerfactory.c:1159:RFUnInitializeReader() Attempting shutdown of SCM SCR 331 (2000012F) 00 00.
ifdhandler.c:222:IFDHCloseChannel() lun: 0
readerfactory.c:1022:RFUnloadReader() Unloading reader driver.
pcscdaemon.c:567:at_exit() cleaning /var/run

=========================================================================
Comment 26 Alon Bar-Lev (RETIRED) gentoo-dev 2007-03-27 09:08:41 UTC
Thanks!

And both tests were done under VMWare, right?
And the virtual machines have the EXACT same configuration, right?

Can you please ATTACH (not paste) the configuration file of the kernel you are using in Gentoo machine? Can you please also describe how you built your kernel (which sources, genkernel etc).
Comment 27 kamala kumar 2007-04-02 12:32:04 UTC
Created attachment 115262 [details]
gentoo vmware config

Attached gentoo vmware config file with this. 

We installed gentoo using livecd-i686-installer-2006.1.iso ISO image. Gentoo is installed using GTK+ based Gentoo Linux installer. 

Settings:
install type - standard
use flag - symlink (with other defaults)
CFLAGS
======
proc - i686
optimization - o2
custom - pipe

MakeOpts = -j1

Bootloader - grub


Makeopts = -j1
Comment 28 Ludovic Rousseau 2007-04-02 12:52:31 UTC
I don't know if it is related but I have a more or less similar problem with vmware and Mandriva 2007.
After some APDU exchanges the reader stops responding.
Using a real PC solved the "problem".

I used the same program, reader and card with a Debian 3.1 OS in the same vmware and I don't have the problem. I strongly suspect a problem in vmware that only happen with some Linux kernels.

You should try to run your program on a real PC with the same gentoo.
Comment 29 Alon Bar-Lev (RETIRED) gentoo-dev 2007-04-02 13:26:30 UTC
(In reply to comment #28)
> I strongly suspect a problem in vmware
> that only happen with some Linux kernels.
> 
> You should try to run your program on a real PC with the same gentoo.
> 

Correct, as I said in comment#1 I have problem with VMWare and my own card... When running Windows... VMWare has a bug in their USB emulation which cannot accept some USB packet lengths. This problem was reported to VMWare and never resolved. I am not sure this is the case here since the same VM works with other distros... But we need to eliminate VMWare responsibility before continue.
Comment 30 Alon Bar-Lev (RETIRED) gentoo-dev 2007-04-20 17:18:34 UTC
Hello kamala,

I am closing this for now.

please reopen if you have some new information.

Thanks.
Comment 31 Leho Kraav (:macmaN @lkraav) 2009-06-10 22:54:44 UTC
i think i'm seeing this exact problem when running Gentoo on VMware Fusion 2 on OS X. my smartcard works fine in Windows 7 RC guest, though.

pkcs15-tool etc can read data fine, but when starting Firefox and loading /usr/lib/opensc-pkcs11.so, i'm getting blocks of:

Jun 11 01:41:15 gentoo pcscd: ifdwrapper.c:638:IFDControl() Card not transacted: 612
Jun 11 01:41:19 gentoo pcscd: ccid_usb.c:530:ReadUSB() usb_bulk_read(002/005): Resource temporarily unavailable
Jun 11 01:41:19 gentoo pcscd: ifdwrapper.c:469:IFDStatusICC() Card not transacted: 612
Jun 11 01:41:19 gentoo pcscd: eventhandler.c:333:EHStatusHandlerThread() Error communicating to: SCM SCR 3310 (21120548410401) 00 00
Jun 11 01:41:19 gentoo pcscd: commands.c:1282:CCID_Receive() Can't read all data (0 out of 258 expected)
Jun 11 01:41:19 gentoo pcscd: ifdwrapper.c:722:IFDTransmit() Card not transacted: 612
Jun 11 01:41:19 gentoo pcscd: winscard.c:1671:SCardTransmit() Card not transacted: 0x80100016
Comment 32 Ludovic Rousseau 2009-06-11 06:48:31 UTC
(In reply to comment #31)
> i think i'm seeing this exact problem when running Gentoo on VMware Fusion 2 on
> OS X. my smartcard works fine in Windows 7 RC guest, though.

You should try VirtualBox instead of Vmware. VirtualBox http://www.virtualbox.org/ is free and is available for GNU/Linux, Windows and Mac OS X.

With VirtualBox I do not have the USB problems I have with Vmware.
Comment 33 Leho Kraav (:macmaN @lkraav) 2009-06-11 07:57:28 UTC
thanks Ludovic, i actually am trying to switch away from VirtualBox, at least until they have a few things fixed that are disturbing my business critical virtualized apps. 

firstly, there seems to be a bug where VirtualBox cpu usage goes sky high when you use audio in guest Windows.

second, USB device on/off switching/connecting "just works" in VMware Fusion while VirtualBox for example tells me that "someone else already has control of the USB card reader". perhaps i havent set up the device filters or something, because my USB stick does work, but like i said, VMware just does it without any prior config.

third, running VMware and VirtualBox concurrently = instant kernel panic. so unfortunately that's not an option.