Provided by: freebsd-manpages_8.2-1_all bug

NAME

     cmx — Omnikey CardMan 4040 smartcard reader device driver

SYNOPSIS

     device cmx

DESCRIPTION

     The cmx driver provides support for the PCCARD based Omnikey CardMan 4040 smartcard reader.
     The driver provides a character device special file based Chip/Smart Card Interface Devices
     (CCID) interface.  The driver implements what the vendor calls the Synchronious API onto the
     smartcard reader device.

     Reading and writing is synchronious, meaning that a call to write(2) directly corresponds to
     a complete CCID command sent to the device, while the following read(2) will return the
     complete answer from the reader.  There is no support for partial reads or writes.  There is
     no upper limit on CCID request or response sizes, but the complete CCID request must be sent
     to the driver in write(2) and the complete CCID response must fit into the buffer supplied
     to read(2).

     Non-blocking I/O, select(2) and poll(2) are supported and work as expected.  An open file
     descriptor will always be ready for writing, but only ready for reading if the device
     indicates that it has data available.

COMPATIBILITY

     Userland smartcard code written for the vendor's Linux drivers should work with the cmx
     driver without modification.

FILES

     /dev/cmxn                   Character device special file.
     /usr/ports/security/openct  OpenCT, a userspace smartcard daemon containing a CCID driver
                                 which directly supports cmx devices.

SEE ALSO

     pccard(4)

HISTORY

     The cmx driver first appeared in FreeBSD 7.1.

AUTHORS

     The cmx driver was written by Daniel Roethlisberger <daniel@roe.ch>, originally based on the
     Linux driver v1.1.0 by Omnikey GmbH <www.omnikey.com>.  Early testing and bug fixes by
     Marcin Cieslak <saper@system.pl>.

BUGS

     The way the cmx driver talks to the CardMan 4040 is a bit rough.  Due to the complete lack
     of hardware documentation other than vendor drivers for other operating systems, the gory
     details of the device's I/O registers are not understood very well.  There may be error
     conditions which can only be solved by physically reinserting the reader.