ACS CCID PC/SC Driver for Linux/Mac OS X
Advanced Card Systems Ltd.



Contents
----------------

   1. Release Notes
   2. Installation
   3. History
   4. File Contents
   5. Limitations
   6. Support
   7. Authors
   8. Copyright
   9. License



1. Release Notes
----------------

Version: 1.0.3
Release Date: 13/1/2012

Supported CCID Readers

VID  PID  Reader           Reader Name
---- ---- ---------------- -----------------------------
072F 8300 ACR33U-A1        ACS ACR33U-A1 3SAM ICC Reader
072F 8302 ACR33U-A2        ACS ACR33U-A2 3SAM ICC Reader
072F 8307 ACR33U-A3        ACS ACR33U-A3 3SAM ICC Reader
072F 8301 ACR33U           ACS ACR33U 4SAM ICC Reader
072F 90CC ACR38U-CCID      ACS ACR38U-CCID
072F 90CC ACR100-CCID      ACS ACR38U-CCID
072F 90D8 ACR3801          ACS ACR3801
072F 90D2 ACR83U           ACS ACR83U
072F 8306 ACR85            ACS ACR85 PINPad Reader
072F 2011 ACR88U           ACS ACR88U
072F 8900 ACR89            ACS ACR89 ICC Reader
072F 8901 ACR89-CL1        ACS ACR89 Dual Reader
072F 8902 ACR89-FPA        ACS ACR89 FP Reader
072F 1205 ACR100I          ACS ACR100 ICC Reader
072F 1204 ACR101           ACS ACR101 ICC Reader
072F 1206 ACR102           ACS ACR102 ICC Reader
072F 2200 ACR122U          ACS ACR122U
072F 2200 ACR122U-SAM      ACS ACR122U
072F 2200 ACR122T          ACS ACR122U
072F 2214 ACR1222U-C1      ACS ACR1222 1SAM PICC Reader
072F 1280 ACR1222U-C3      ACS ACR1222 1SAM Dual Reader
072F 2207 ACR1222U-C6      ACS ACR1222 Dual Reader
072F 222B ACR1222U-C8      ACS ACR1222 1SAM PICC Reader
072F 2206 ACR1222L-D1      ACS ACR1222 3S PICC Reader
072F 2203 ACR125           ACS ACR125 nPA plus
072F 2100 ACR128U          ACS ACR128U
072F 220F ACR1281U (qPBOC) ACS ACR1281 CL Reader
072F 2223 ACR1281U (qPBOC) ACS ACR1281 PICC Reader
072F 2208 ACR1281U (qPBOC) ACS ACR1281 Dual Reader
072F 0901 ACR1281U (BSI)   ACS ACR1281 PICC Reader
072F 220A ACR1281U (BSI)   ACS ACR1281 Dual Reader
072F 2224 ACR1281U-C1      ACS ACR1281 1S Dual Reader
072F 2215 ACR1281U         ACS ACR1281 2S CL Reader
072F 2220 ACR1281U-C7      ACS ACR1281 1S PICC Reader
072F 0102 AET62            ACS AET62 PICC Reader
072F 0103 AET62            ACS AET62 1SAM PICC Reader
072F 0100 AET65            ACS AET65 ICC Reader
072F 8201 APG8201          ACS APG8201
072F 8202 APG8201 (Zetes)  ACS APG8201Z
072F 90DB CryptoMate64     ACS CryptoMate64

Supported non-CCID Readers

VID  PID  Reader           Reader Name
---- ---- ---------------- -----------------------------
072F 9000 ACR38U           ACS ACR38U
072F 90CF ACR38U-SAM       ACS ACR38U-SAM
072F 90CE SCR21U           IRIS SCR21U
072F 0101 AET65            ACS AET65 1SAM ICC Reader
072F 9006 CryptoMate       ACS CryptoMate

Operating Systems

Linux
Mac OS X 10.5/10.6/10.7



2. Installation
---------------

1. Login as root.

2. Enter the following commands to unpack the driver source code.

# tar -jxvf acsccid-1.0.3.tar.bz2
# cd acsccid-1.0.3

3. Enter the following commands to install the driver. If you want to use udev,
   please enter "./configure --enable-udev". For more information, please refer
   to the file "acsccid-1.0.3/INSTALL".

# ./configure
# make
# make install

4. To build the driver in Mac OS X, please install development tools from
   Apple and install libusb-0.1. Enter the following commands to install the
   driver.

# ./MacOSX/configure
# make
# make install



3. History
----------

v1.0.0 (26/8/2009)
1. New release
2. Based on ccid-1.3.11 (http://pcsclite.alioth.debian.org/ccid.html).
3. Change CmdPowerOn() read timeout in IFDHPowerICC() from 60 seconds to 4
   seconds.

v1.0.0 (18/9/2009)
1. Import Mac OS X 10.5 configure script from ccid-1.3.11.
2. Update AUTHORS and COPYING files.
3. Disable interrupt read in ccid_open_hack_pre() for all readers. It will cause
   the driver hang in ACR88U and ACR128U readers on Mac OS X.
4. There is a pcscd problem supporting multi-slot readers on Mac OS X. It will
   create duplicate reader name for each slot. ACR88U and ACR128U readers are
   affected by this bug. For more information, please refer to
   http://www.opensc-project.org/sca/wiki/LeopardBugs.

v1.0.0 (14/10/2009)
1. Test the driver on Mac OS X 10.6.

v1.0.1 (9/11/2009)
1. Remove firmware version check.
2. Modify the driver to use separate thread to poll the slot ICC states from
   interrupt endpoint.

v1.0.2 (2/2/2010)
1. Do not use separate thread to poll the slot ICC status due to poor
   performance of libusb v0.1.12.
2. Enable polling mode automatically for ACR122U v2.06.

v1.0.2 (17/6/2010)
1. Add ACR125 nPA plus support.

v1.0.2 (22/11/2010)
1. Add ACR1281 PICC Reader (BSI) support.
2. Import Mac OS X 10.6 configure script from ccid-1.3.12.

v1.0.2 (17/12/2010)
1. Add the following readers support:
   ACR1281 Dual Reader (qPBOC)
   ACR1222 Dual Reader
   ACR1222 1SAM Dual Reader
   ACR83U
   ACR85 PINPad Reader
   APG8201
2. Secure PIN Entry (SPE) support for ACR83U requires firmware version 4500 or
   later.
3. Add SCARD_CTL_CODE(3500) support for sending CCID escape command.

v1.0.2 (28/1/2011)
1. Add the following readers support:
   ACR100 ICC Reader
   ACR101 ICC Reader
   ACR102 ICC Reader
   ACR1222L 3S CL Reader
   ACR1281 CL Reader (qPBOC)
   ACR1281 Dual Reader (BSI)
2. Fix a bug that APG8201 and ACR85 cannot receive command properly if command
   length is greater than 64 bytes.
3. Set infinite timeout in T=0, Short APDU and Extended APDU exchange.
4. Simulate ACR1281 Dual Reader (composite device) as multi-slot reader.
5. Improve performance and stability for ACR122U v2.00 - v2.04.
6. Replace acx_pthread.m4 with ax_pthread.m4 from autoconf archive.

v1.0.2 (14/2/2011)
1. Add the following driver options and these options are enabled by default:
   DRIVER_OPTION_REMOVE_PUPI_FROM_ATR
       Remove PUPI from ATR if ISO 14443-B card is detected (ACR1222).
   DRIVER_OPTION_DISABLE_PICC
       Disable PICC if ICC is inserted (ACR1222).

v1.0.2 (21/2/2011)
1. Add DRIVER_OPTION_REMOVE_PUPI_FROM_ATR and DRIVER_OPTION_DISABLE_PICC driver
   options to ACR85.
2. Simulate ACR85 as multi-slot reader. The first slot is ICC and the second
   slot is PICC.
3. Add firmware version check for ACR1222. The driver options are for ACR1222
   v401 only.

v1.0.2 (16/3/2011)
1. Fix reader hang problem by checking card status of ACR85 PICC if SW1SW2
   "63 00" is received.
2. Add ACR3801 support.

v1.0.3 (8/6/2011)
1. Import udev rules from ccid-1.4.3 to support pcscd auto-start.
2. Fix reader hang problem by checking card status of ACR85 PICC before
   exchanging APDU.
3. Correct the code that enabling polling mode is applied to ACR122U only and
   not all ACS readers.
4. Fix a problem that the optimal baud rate is not selected properly in
   IFDHSetProtocolParameters().
5. Perform cold reset and try default Fl/Dl (0x11) if PPS_Exchange() or
   SetParameters() is failed in IFDHSetProtocolParameters().
6. Protocol parameters will not be set in IFDHSetProtocolParameters() if card is
   specific mode.
7. Correct the value of CCID features and maximum data rate of ACR88U and
   ACR128U.
8. Add BSI miscellaneous command to return driver version for ACR1281 BSI
   readers.
9. Add the following readers support:
   ACR1281 PICC Reader (qPBOC)
   ACR1281 1S Dual Reader

v1.0.3 (24/6/2011)
1. Add ACR1281 2S CL Reader support.
2. Correct the value of CCID features and maximum data rate of ACR1281 1S Dual
   Reader.
3. Fix problem using pcsc-lite 1.7.3 or later header files.
4. Add SCARD_CTL_CODE(2079) support for sending escape command to ACR1222,
   ACR128 and ACR1281 readers.

v1.0.3 (20/7/2011)
1. Add ACR33 ICC Reader support.
2. Add firmware version check for ACR85.

v1.0.3 (19/9/2011)
1. Add ACR1281 1S PICC Reader support.
2. Change PID of ACR33 ICC reader from 0x8306 to 0x8307 because 0x8306 is used
   by ACR85 ICC.

v1.0.3 (10/10/2011)
1. Check if the card supports the selected protocol before setting protocol in
   IFDHSetProtocolParameters() and return IFD_ERROR_PTS_FAILURE if the card does
   not support the selected protocol. On Mac OS X 10.6, pcscd will select wrong
   protocol if Starcos 3.2 card is inserted.

v1.0.3 (20/10/2011)
1. Add the following non-CCID readers support:
   ACR38U
   ACR38U-SAM
   SCR21U (IRIS)
   CryptoMate

v1.0.3 (30/11/2011)
1. Add the following readers support:
   APG8201Z
   ACR1222 1SAM PICC Reader (ACR1222U-C1)
   ACR1222 1SAM PICC Reader (ACR1222U-C8)
2. Rename "ACR1222L 3S CL Reader" to "ACR1222 3S PICC Reader".

v1.0.3 (13/1/2012)
1. Add the following readers support:
   ACR89 ICC Reader
   ACR89 Dual Reader
   ACR89 FP Reader
   AET62 PICC Reader
   AET62 1SAM PICC Reader
   AET65 ICC Reader
   AET65 1SAM ICC Reader
   CryptoMate64
2. Rename "ACR33 ICC Reader" to "ACS ACR33U-A1 3SAM ICC Reader",
   "ACS ACR33U-A2 3SAM ICC Reader", "ACS ACR33U-A3 3SAM ICC Reader" and
   "ACS ACR33U 4SAM ICC Reader".
3. Fix incorrect max slot index for ACR1222U-C1.
4. Enable SAM slot support.
5. Fix connection problem by setting default supported protocol to T=0 in
   IFDHSetProtocolParameters() if the card does not support any protocol.
6. Add SCARD_ATTR_ICC_INTERFACE_STATUS and SCARD_ATTR_ICC_PRESENCE support in
   IFDHGetCapabilities() (import from ccid-1.4.5).
7. Fix problem on getting IFSC from ATR (import from ccid-1.4.5).
8. Support extended APDU of up to 64kB with APDU readers
   (import from ccid-1.4.5).
9. Change CmdPowerOn() read timeout in IFDHPowerICC() from 4 seconds to 10
   seconds.



4. File Contents
----------------

.
|-- config
|   |-- compile
|   |-- config.guess
|   |-- config.sub
|   |-- depcomp
|   |-- install-sh
|   |-- ltmain.sh
|   |-- missing
|   `-- ylwrap
|-- m4
|   |-- ax_pthread.m4
|   |-- libtool.m4
|   |-- lt~obsolete.m4
|   |-- ltoptions.m4
|   |-- ltsugar.m4
|   |-- ltversion.m4
|   |-- Makefile.am
|   `-- Makefile.in
|-- MacOSX
|   |-- configure
|   |-- convert_reader_h.pl
|   |-- debuglog.h
|   |-- ifdhandler.h
|   |-- pcsclite.h
|   |-- reader.h.in
|   |-- winscard.h
|   `-- wintypes.h
|-- src
|   |-- openct
|   |   |-- buffer.c
|   |   |-- buffer.h
|   |   |-- checksum.c
|   |   |-- checksum.h
|   |   |-- LICENSE
|   |   |-- proto-t1.c
|   |   `-- proto-t1.h
|   |-- towitoko
|   |   |-- atr.c
|   |   |-- atr.h
|   |   |-- COPYING
|   |   |-- defines.h
|   |   |-- pps.c
|   |   |-- pps.h
|   |   `-- README
|   |-- acr38cmd.c
|   |-- acr38cmd.h
|   |-- ccid.c
|   |-- ccid.h
|   |-- ccid_ifdhandler.h
|   |-- ccid_usb.c
|   |-- ccid_usb.h
|   |-- commands.c
|   |-- commands.h
|   |-- convert_version.pl
|   |-- create_Info_plist.pl
|   |-- debug.c
|   |-- debug.h
|   |-- defs.h
|   |-- ifdhandler.c
|   |-- Info.plist.src
|   |-- Makefile.am
|   |-- Makefile.in
|   |-- misc.h
|   |-- parser.h
|   |-- pcscd_acsccid.rules
|   |-- strlcpy.c
|   |-- strlcpycat.h
|   |-- supported_readers.txt
|   |-- tokenparser.l
|   |-- utils.c
|   `-- utils.h
|-- aclocal.m4
|-- AUTHORS
|-- bootstrap
|-- ChangeLog
|-- config.h.in
|-- configure
|-- configure.ac
|-- COPYING
|-- INSTALL
|-- Makefile.am
|-- Makefile.in
|-- NEWS
`-- README



5. Limitations
--------------



6. Support
----------

In case of problem, please contact ACS through:

Web Site: http://www.acs.com.hk/
E-mail: info@acs.com.hk
Tel: +852 2796 7873
Fax: +852 2796 1286



7. Authors
----------

Advanced Card Systems Ltd. <info@acs.com.hk>
Ludovic Rousseau <ludovic.rousseau@free.fr>
Carlos Prados <cprados@yahoo.com>
Olaf Kirch <okir@suse.de>
Matthias Bruestle



8. Copyright
------------

Copyright (C) 2009-2012 Advanced Card Systems Ltd.
Copyright (C) 2003-2009 Ludovic Rousseau
Copyright (C) 2000-2001 Carlos Prados
Copyright (C) 2003 Olaf Kirch
Copyright (C) 1999-2002 Matthias Bruestle



9. License
----------

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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
