CCID free software driver

This package provides the source code for a generic USB CCID (Chip/Smart Card Interface Devices) driver and ICCD (Integrated Circuit(s) Card Devices).

See the USB CCID and ICCD specifications from the USB working group.

Authors

The main author is Ludovic Rousseau <ludovic.rousseau@free.fr>.

I reused source code from other free software projects whose authors are:

Licence

  This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or (at
your option) any later version.

  This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
General Public License for more details.

  You should have received a copy of the GNU Lesser General Public License
along with this library; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA

Source download

28 July 2009, ccid-1.3.11, README.

You can also access the Subversion developement version. You may need to use the Subversion version to support the latest added readers.

Main CCID/ICCD features supported

CCID features not yet supported

Contact me if you want to see the support of the above not yet supported features and you have a budget.

Non CCID features that I do not plan to support

In fact I may implement one of these features if you have a budget.

Sending usefull logs

If you have a problem and want to get support from me you shall include the following information:

Versions

Log

Then you shall generate a complete log.

Mailing list

If you have general questions or bug reports you should use the MUSCLE mailing list: muscle@lists.musclecard.com.

First search the mailing list archives. Maybe your probem has already been reported and solved. If you have not found a solution then write to muscle@lists.musclecard.com with a description of your problem.

Compliant readers

To know if a smart card reader is CCID compliant and should be supported by this driver but is not listed bellow

Just get the source code of this driver and do:

  tar xzvf ccid-x.y.z.tar.gz
  cd ccid-x.y.z
  ./configure
  make
  sudo ./src/parse > output.txt

and send me the generated output.txt file.

CCID/ICCD readers

All the readers are also included in a big matrix.

Supported and unsupported operating systems

GNU/Linux

GNU/Linux using libusb 0.1.7 and later

Asynchronous card movement

To be able to use the asynchronous card movement notification (instead of active polling every 400ms) you need to use libusb > 0.1.12 (not yet available) or use this patch. See the discussion on the MUSCLE list.

Mac OS X

Leopard (10.5.6 and newer)

Apple now includes my CCID driver in Leopard 10.5.6. See the mail from Shawn Geddis to have a list of changes.

Leopard (10.5)

Mac OS X Leopard (10.5) is supported without patches. To build the driver you need to extract the archive and do:

  $ ./MacOSX/configure
  $ make
  $ sudo make install
	

NOTE: The execution of ./MacOSX/configure will fail if you have a space character in your current working directory pathname.

NOTE: Apple's version of pcsc-lite installed with Leopard has many bugs and problems. See LeopardBugs for a list of known bugs.

Tiger (10.4)

Mac OS X Tiger (10.4) uses an old pcsc-lite with some problems:

You can use this (now unmaintained) patch.

Solaris

The driver should work on Solaris.

I can't test is myself so patches are welcome if needed.

You can find a PC/SC-lite package form SUN.

FreeBSD

This driver is known to NOT work on FreeBSD. I don't know why and patches are welcome.

Other operating systems

It may or may not work.

Known problems

MacOSX libusb

There is a bug in MacOSX libusb that crash the libusb library when you unplug a reader and replug it in another USB socket. So if you unplug a reader replug it in the same USB socket.

see my bug report.

Gemalto drivers

Gemalto provides its own CCID driver for its CCID readers. The driver is available from Gemalto support page. This driver is based on my own CCID driver. AFAIK it is just an older version with a different version number. For example the Gemalto driver version 1.2.4 is equivalent to subversion revision 1862 from 2006-02-07 so before my 1.0.0 release.

I received some mails from users reporting bugs and asking for support. I DO NOT SUPPORT the Gemalto driver. You can either ask Gemalto support for support or use my own driver.

Extended APDU and Kobil readers

Kobil readers does not support RDR_to_PC_DataBlock CCID commands chaining so you can't send an extended APDU even if the Kobil readers (with firmware 1.19) supports a command of up to 420 bytes.

To use extended APDU on these readers you must change the value of CMD_BUF_SIZE in the file src/defs.h to:
 #define CMD_BUF_SIZE 420
Kobil is aware of the problem and do not plan to solve it.

Changing this value may create unpredicted problems. I have not validated the driver with such a change.

Available binaries

The drivers are also available as debian packages libccid and logo fedora source or package.


 $Id: ccid.html 4496 2009-10-18 09:33:43Z rousseau $