OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
Re: [Muscle] multiple smartcard reader with pcscd 1.6.1 on a Solaris 10 Sparc 64 server

From: Douglas E. Engert (deengertanl.gov)
Date: Tue Nov 02 2010 - 08:57:26 CDT


On 11/2/2010 2:33 AM, Ludovic Rousseau wrote:
> 2010/11/1<Roland.Rutzt-systems.com>:
>> Hi,
>
> Hello,
>
>> currently I'm testing the pcscd (version 1.6.1, ccid 1.3.13, compiled with Sun Studio 12) with many Kobil TriBnk smartcard readers connected at a Solaris 10 Sparc 64 Box via 2 usb hubs. If I connect more the 9 readers, I get the following error messages:
>>
>> First the startup messages for the first reader:
>>
>> #/usr/local/sbin/pcscd -df
>> 00000000 pcscdaemon.c:223:() pcscd set to foreground with debug send to stderr
>> 00000714 configfile.l:282:() Parsing conf file: /usr/local/etc/reader.conf
>> 00000204 pcscdaemon.c:528:() pcsc-lite 1.6.1 daemon ready.
>> 02181081 hotplug_libusb.c:500:() Adding USB device: /dev/usb:d46.3010/0
>> 00009005 readerfactory.c:979:() Attempting startup of KOBIL EMV CAP - SecOVID Reader III (SD101316817) 00 00 using /usr/local/pcsc/drivers/ifd-ccid.bundle/Contents/Solaris/libccid.so
>> 00001712 readerfactory.c:849:() Loading IFD Handler 3.0
>> 00000405 ifdhandler.c:1715:() Driver version: 1.3.13
>> 00002527 ifdhandler.c:1728:() LogLevel?: 0x0003
>> 00002473 ifdhandler.c:1748:() DriverOptions?: 0x0000
>> 00000222 ifdhandler.c:82:() lun: 0, device: usb:0d46/3010:libusb:/dev/usb:d46.3010/0
>> 00005595 ccid_usb.c:284:() Manufacturer: Ludovic Rousseau (ludovic.rousseaufree.fr)
>> 00002461 ccid_usb.c:294:() ProductString?: Generic CCID driver
>> 00002455 ccid_usb.c:300:() Copyright: This driver is protected by terms of the GNU Lesser General Public License version 2.1, or (at your option) any later version.
>> 00471855 ccid_usb.c:512:() Found Vendor/Product: 0D46/3010 (KOBIL EMV CAP - SecOVID Reader III)
>> 00000212 ccid_usb.c:515:() Using USB bus/device: /dev/usb/d46.3010/0
>> ---> here the daemon waits always for 10 seconds, don't know why, it's the same behavior for each reader
>>
>> 10013337 ccid_usb.c:920:() IFD does not support GET_DATA_RATES request: I/O error
>> 00031550 ifdhandler.c:394:() tag: 0xFB0, usb:0d46/3010:libusb:/dev/usb:d46.3010/0 (lun: 0)
>> 00000221 readerfactory.c:273:() Using the pcscd polling thread
>> 00002090 ifdhandler.c:394:() tag: 0xFAE, usb:0d46/3010:libusb:/dev/usb:d46.3010/0 (lun: 0)
>> 00000213 ifdhandler.c:483:() Reader supports 1 slot(s)
>> ...
>>
>> Now the messages after connecting the 10th reader:
>>
>> 00000200 ccid_usb.c:441:() USB device /dev/usb/d46.3010/8 already in use. Checking next one.
>> 00000569 ccid_usb.c:512:() Found Vendor/Product: 0D46/3010 (KOBIL EMV CAP - SecOVID Reader III)
>> 00000211 ccid_usb.c:515:() Using USB bus/device: /dev/usb/d46.3010/9
>> 10015777 ccid_usb.c:920:() IFD does not support GET_DATA_RATES request: I/O error
>> 00020537 ccid_usb.c:619:() usb_bulk_write(/dev/usb/d46.3010/9): Not enough space
>> 00000702 ccid_usb.c:619:() usb_bulk_write(/dev/usb/d46.3010/9): Not enough space
>> 00000701 ccid_usb.c:619:() usb_bulk_write(/dev/usb/d46.3010/9): Not enough space
>> 00000225 ifdhandler.c:137:() failed
>> 00000344 readerfactory.c:1010:() Open Port 200009 Failed (usb:0d46/3010:libusb:/dev/usb)
>> 00000206 readerfactory.c:257:() KOBIL EMV CAP - SecOVID Reader III (SD101316366) init failed.
>> 00000304 hotplug_libusb.c:410:() Driver ifd-ccid.bundle does not support IFD_GENERATE_HOTPLUG. Using active polling instead.
>> 00000204 hotplug_libusb.c:420:() Polling forced every 1 second(s)
>>
>>
>> Does anybody knows, what the reason for these messages? Do I have a problem with the Solaris 10 libusb driver?
>
> I would also suspect a limitation of the Solaris 10 libusb driver. I
> do not have a limitation to 10 readers in the CCID driver.
> If you have the source code the libusb for Solaris you should have a
> look inside.
>

On Solaris 10, /usr/sfw/share/doc/libusb/libusb.txt
has some debugging information that might also help to foind the problem.

/usr/sfw/include/usb.h has a number of defines that might be getting reached,
three endpoints per reader could reach the USB_MAXENDPOINTS?

#define USB_MAXENDPOINTS 32
#define USB_MAXINTERFACES 32
#define USB_MAXALTSETTING 128 /* Hard limit */
#define USB_MAXCONFIG 8

Note: the Solaris libusb is based on 0.1.8. There is no libusb based on 1.0.
Newer versions of ccid require 1.0.
In August I started to look at porting libusb 1.0 but did not get very far.

> Bye
>

--

  Douglas E. Engert <DEEngertanl.gov>
  Argonne National Laboratory
  9700 South Cass Avenue
  Argonne, Illinois 60439
  (630) 252-5444
_______________________________________________
Muscle mailing list
Musclelists.musclecard.com
http://lists.drizzle.com/mailman/listinfo/muscle