[Pcsclite-muscle] OmniKey 4040 PCMCIA CCID card terminal

Marcin Cieslak saper
Fri Nov 13 14:34:38 PST 2015

On Fri, 13 Nov 2015, Ludovic Rousseau wrote:

> > I wish I wouldn't need to use that but my CCID PCMCIA reader is otherwise
> > not supported.
> >
> I don't think it is a CCID reader if it uses PCMCIA.
> CCID is for USB (or USB over ExpressCard).

Omnikey CardMan 4040 uses CCID high-level protocol over FIFO
implemented using 3 I/O registers
(data, status and data flow/sync control register).

Basically the data read/written are standard CCID commands,
identified by their first byte:

CMD_PC_TO_RDR_XFRBLOCK (0x6F) etc. etc.

Basically the kernel driver does not really know the CCID
commands, it just passes the bytes from the character
device to the I/O ports and back.

Even the datasheet says the device is "USB 2.0" compatible
(which is nonsense), and lists "CCID" as well (which is kind
of true):


OpenCT just attaches its CCID driver (ifd-ccid.c) to
a "pcmcia_block" device:

reader cm4040 {
        driver = ccid;
        device = pcmcia_block:/dev/cmx0;

where /dev/cmx0 is a character device offered by the kernel.

FreeBSD kernel driver:


Linux kernel driver:



More information about the pcsclite-muscle mailing list