Keyple plugins for proprietary smart card readers

Additional ‘Reader Plugins’ provided by CNA

The Keyple project already hosts several plugins for interfacing with “standard” smartcard reader solutions (PC/SC, Android NFC / OMAPI), or for emulating readers.

In addition, CNA has released the following plugins under the Eclipse Public License version 2 to illustrate further integration patterns:

  • When the native library of a reader solution is publicly available, the plugin can be compiled autonomously.
  • When it is not publicly available, a mock is provided as a substitute; the actual native library must be obtained directly from the manufacturer to build the plugin.

Four plugins target Android-based embedded ticketing terminals, each equipped with a contactless card reader and one or more SAM contact slots:

  • Famoco β€” interfaces with SAM readers only; the contactless reader on Famoco terminals relies on the standard Android NFC API, which Keyple supports natively.
  • Coppernic, Arrive and Bluebird β€” manage both SAM readers and an observable contactless reader (capable of detecting card insertion and removal).

Two additional plugins target server or workstation environments:

  • The Legacy HSM plugin enables a Calypso legacy HSM to be interfaced on a Linux server equipped with a Spirtech HSM.
  • The Paragon ID Gen5XX plugin provides access to the 4 SAM slot readers of Gen5XX PC/SC devices on Windows and Linux. It is designed to complement the standard Keyple PC/SC plugin, which handles the contactless interface of the same device.
NameSupported DeviceNative reader library accessibilityInterfaceOSLanguage
CoppernicC-One v2publicInternalAndroidKotlin
FamocoFX100, FX105, FX200, FX205, FX300, FX915, FX920public
ArriveAxio Touch Validator/MTBorne validator, Magnetic Axio Touch Validator, Axio 4 Validator, Infigo Driver Console, Voyager Embedded Ticketing Vending Machine, Coppernic C-One, Coppernic C-One V2, Zebra TC77, ACTIA PSDTprivate
BluebirdEF501, EF551private
Legacy HSMSpirtech HSMprivateIPLinuxJava
Paragon ID Gen5XXGEN5XX CCID, CPL108publicPC/SCWindows, Linux, macOSJava

Some special features of the Android plugins:

  • The embedded terminals targeted by these plugins only support static configurations for their readers. However, the Coppernic and Famoco plugins implement the observable plugin pattern: when the terminal enters standby mode, its readers lose power and behave as if unplugged, so the plugin must detect and report these connect/disconnect events autonomously.
  • All four Android plugins expose β€œconfigurable” readers to enable support for specific communication protocols. In addition, the Bluebird plugin can be configured to support the Enhanced Contactless Polling (ECP) protocol specific to Apple NFC devices.
Plugin API implemented interfaces for each pluginCoppernicFamocoArriveBluebirdLegacy
HSM
Paragon ID
Gen5XX
pluginPluginSpiβœ“βœ“βœ“βœ“βœ“βœ“
ObservablePluginSpiβœ“βœ“
AutonomousObservablePluginSpiβœ“
PoolPluginSpiβœ“
contactReaderSpiβœ“βœ“βœ“βœ“βœ“βœ“
ConfigurableReaderSpiβœ“
AutonomousSelectionReaderSpi
PoolReaderSpiβœ“
contact
-less
ReaderSpiβœ“βœ“βœ“
ConfigurableReaderSpiβœ“βœ“βœ“
ObservableReaderSpiβœ“βœ“βœ“
CardInsertionWaiterAsynchronousSpi
WaitForCardInsertionAutonomousSpi
βœ“βœ“
CardInsertionWaiterBlockingSpi
WaitForCardInsertionBlockingSpi
βœ“
CardInsertionWaiterNonBlockingSpi
WaitForCardInsertionNonBlockingSpi
CardRemovalWaiterAsynchronousSpi
WaitForCardRemovalAutonomousSpi
βœ“
CardRemovalWaiterBlockingSpi
WaitForCardRemovalBlockingSpi
CardRemovalWaiterNonBlockingSpi
WaitForCardRemovalNonBlockingSpi
βœ“βœ“
CardPresenceMonitorBlockingSpi
DontWaitForCardRemovalDuring -ProcessingSpiβœ“βœ“βœ“
WaitForCardRemovalDuring -ProcessingBlockingSpi