1.\" 2.\" Copyright (c) 2006-2007 Daniel Roethlisberger <daniel@roe.ch> 3.\" All rights reserved. 4.\" 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 1. Redistributions of source code must retain the above copyright 9.\" notice unmodified, this list of conditions, and the following 10.\" disclaimer. 11.\" 2. Redistributions in binary form must reproduce the above copyright 12.\" notice, this list of conditions and the following disclaimer in the 13.\" documentation and/or other materials provided with the distribution. 14.\" 15.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25.\" SUCH DAMAGE. 26.\" 27.\" $FreeBSD: src/share/man/man4/cmx.4,v 1.2 2008/03/06 08:47:16 rink Exp $ 28.\" $DragonFly: src/share/man/man4/cmx.4,v 1.2 2008/04/29 11:59:08 swildner Exp $ 29.\" 30.Dd July 7, 2007 31.Dt CMX 4 32.Os 33.Sh NAME 34.Nm cmx 35.Nd Omnikey CardMan 4040 smartcard reader device driver 36.Sh SYNOPSIS 37.Cd device cmx 38.Sh DESCRIPTION 39The 40.Nm 41driver provides support for the PCCARD based 42.Em Omnikey CardMan 4040 43smartcard reader. 44The driver provides a character device special file based 45.Em Chip/Smart Card Interface Devices (CCID) 46interface. The driver implements what the vendor calls the 47.Em Synchronious API 48onto the smartcard reader device. 49.Pp 50Reading and writing is synchronious, meaning that a call to 51.Xr write 2 52directly corresponds to a complete CCID command sent to the 53device, while the following 54.Xr read 2 55will return the complete answer from the reader. There is no 56support for partial reads or writes. There is no upper limit on 57CCID request or response sizes, but the complete CCID request 58must be sent to the driver in 59.Xr write 2 60and the complete CCID response must fit into the buffer 61supplied to 62.Xr read 2 . 63.Pp 64Non-blocking I/O, 65.Xr select 2 66and 67.Xr poll 2 68are supported and work as expected. An open file descriptor 69will always be ready for writing, but only ready for reading 70if the device indicates that it has data available. 71.Sh COMPATIBILITY 72Userland smartcard code written for the vendor's Linux drivers 73should work with the 74.Nm 75driver without modification. 76.Sh FILES 77.Bl -tag -width /dev/cmxn -compact 78.It Pa /dev/cmx\fBn\fP 79Character device special file. 80.\".It Pa /usr/ports/security/openct 81.\"OpenCT, a userspace smartcard daemon containing a 82.\".Em CCID 83.\"driver which directly supports 84.\".Nm 85.\"devices. 86.\".It Pa /usr/ports/devel/pcsc-lite 87.\"PC/SC-Lite, a userspace smartcard daemon. 88.\".It Pa /usr/ports/devel/libccid 89.\"libccid, a generic 90.\".Em CCID 91.\"driver for use by PC/SC-Lite to interface to 92.\".Nm 93.\"devices. 94.El 95.Sh SEE ALSO 96.Xr pccard 4 97.Sh HISTORY 98The 99.Nm 100driver first appeared in 101.Fx 7.1 102and was imported into 103.Dx 1.13 . 104.Sh AUTHORS 105.An -nosplit 106The 107.Nm 108driver was written by 109.An Daniel Roethlisberger Aq daniel@roe.ch , 110originally based on the Linux driver v1.1.0 by 111.An Omnikey GmbH Aq www.omnikey.com . 112Early testing and bug fixes by 113.An Marcin Cieslak Aq saper@system.pl . 114.Sh BUGS 115.An -nosplit 116The way the 117.Nm 118driver talks to the CardMan 4040 is a bit rough. Due to the 119complete lack of hardware documentation other than vendor drivers 120for other operating systems, the gory details of the device's 121I/O registers are not understood very well. There may be error 122conditions which can only be solved by physically reinserting the 123reader. 124