cmx —
Omnikey
CardMan 4040 smartcard reader device driver
device cmx
This driver is scheduled for removal prior to the release of
FreeBSD 13.0
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
Synchronous API onto the smartcard reader device.
Reading and writing is synchronous, 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.
- /dev/cmxn
- Character device special file.
- /usr/ports/security/openct
- OpenCT, a userspace smartcard daemon containing a
CCID driver which directly supports
cmx devices.
Userland smartcard code written for the vendor's Linux drivers should work with
the
cmx driver without modification.
pccard(4)
The
cmx driver first appeared in
FreeBSD 7.1.
The
cmx driver was written by
Daniel Roethlisberger
<
[email protected]>,
originally based on the Linux driver v1.1.0 by
Omnikey GmbH
www.omnikey.com. Early
testing and bug fixes by
Marcin Cieslak
<
[email protected]>.
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.