Smartcard Readers / Smart Card Reader Suppliers
France-based Gemplus International, best known as one of the top smart card vendors, led the way in readers in 2003, shipping 1.9 million units for a 20.8% market share. Gemplus has two major competitors in smart card readers: U.S.-based SCM Microsystems and Germany-based Omnikey, a subsidiary of Assa Abloy of Sweden. Hong Kong-based Advanced Card Systems, a company founded in 1995, ranks fourth in the global market for smart card readers for PCs.
Prices for USB readers have fallen into the range of $10 to $15 apiece in large volumes. A PCMCIA reader typically goes for about twice as much.
Smart Card Reader Standards
CT-API and CT-BCS
CT-API was developed in the 1980ies for DOS. It defines a very simple API, so vendors can ship their smart card readers with some software, and applications authors can use that software, but don't need to know or care what kind of smart card reader he customer will use.
CT-BCS is a sister standard to CT-API. With it application authors can send commands similar to the commands send to smart cards also to the smart card reader. Either the reader or the driver will interpret the command and send an answer. Typical commands would be "is a card in the reader?" or "please reset the card". Drivers in CT-API format implement both CT-API and CT-BCS at the same time, so don't worry if you see only CT-API.
The CT-API is very limited and meant for machines with one user only and one application only and thus doesn't fit well into today's world with many applications running at the same time and maybe even several users running software on the same computer at the same time.
PC/SC is a modern alternative to CT-API and most important implemented and shipped with all modern versions of Windows. While CT-API is a flat standard between the Application and the Driver, with PC/SC there now is a middle ware: The application talks to the Middleware with PC/SC interface, and the middleware talks to the reader drivers in Ifdhandler format.
The good thing about PC/SC is that all companies in the smart card reader business and Microsoft support it. Also it is a modern standard: designed for modern operating systems with many applications, users, drivers, smart cards and it manages all that.
But implementing several drivers for PC/SC in ifdhandler format is no fun: authors were given maximum flexibility and thus they have maximum of work to do. The code for two drivers might differ in less then hundred lines of source code, all the rest can be the same, but needs to be there in each driver, so several copies of the same need to be maintained etc.
From an application point of view there are also issues. For example an application cannot check if some reader is in use, and if that is the case skip it and look at the other readers. It can only try to connect some reader, and if that one is in use, it won't get any notification, but is blocked till the reader is idle again. Several applications using different readers is thus not practical.
Finally some parts were added to the standard very late, like using smart card readers with display and/or pinpad. Only in version 2 of PC/SC that was added, and the only thing five companies could agree on was adding all five mechanism of each of them and call it a standard. As a result an application author needs to implement all these mechanism and then check at run time which one is supported by the driver of the smart card reader. Not very nice.
Some developers here didn't like CT-API and PC/SC too much, so we wrote our own code and our own middleware and called it OpenCT. It is no standard, but if you want to write a driver for a smart card reader to be used under Linux, adding a driver to OpenCT might be the best thing you can do. OpenCT has its own API and OpenSC uses it directly.
But we also know that many other applications are written to for CT-API or PC/SC, and thus as a result OpenCT also implements those two alternatives, so applications can use it. But those interfaces are not as much tested as the OpenCT native interface itself.
If you buy a smart card reader with usb interface, look out for the CCID standard. Readers implementing this don't need special drivers on Windows (XP and later), and for linux the excellent ccid driver for pcsc-lite or opensc with the ccid driver will work with those devices.
Note however that using Displays and Pinpads on your readers is hard, currently works on linux only using the ccid driver with pcsc-lite (i.e. not with openct), and even then only some readers are supported/tested.
Not sure what ICCD exactly is, I think it is a subset of CCID and meant for usb crypto tokens. Thus usb crypto tokens implementing that should work with normal ccid drivers on Windows and Linux and will not need special drivers either.
Mag-Tek Australia - Magnetic Card Readers
Smart Card Reader Buyer's Guide - pdf doc from WinNetMag
ChipDrive Smart Card Readers
The CHIPDRIVE® product range offers individuals and small businesses affordable, customized solutions for security, authentication, home banking and e-commerce. Secure card readers are based on industry standards and are ideal for providing user authentication and home banking. Smartcard-based software solutions for applications such as network logon, encryption and time recording rounds off the range of CHIPDRIVE® products. CHIPDRIVE ® is a trademark of SCM Microsystems.
From the PCMCIA Reader, to the USB Token, to Smart Card Terminals with keyboard, display and authentication module, KOBIL provides the entire product portfolio for your individual solution.
Access Cards from Axalto - Axalto has a full range of smart cards, readers, development tools and implementation expertise for multi-application information and network security functions.
Castles Technologies EZ100PR (serial) smart card reader.
Athena ASEDrive IIIe USB Smart Card Reader.
GemPC410 smart card reader.
ASC ACR30U USB Reader with a Schlumberger Cyberflex Access 16k Smart Card.
Reflex USB v.2 reader, reflashed to look like a SCM 331 reader.