libieee1284 README ------------------ This library is intended to be used by applications that need to communicate with (or at least identify) devices that are attached via a parallel port. It currently works on Linux, OpenBSD (i386 only), FreeBSD/i386, Solaris/x86, and Cygwin. For Linux, there are some wrinkles in communicating with devices on parallel ports: - Applications that want to harvest IEEE 1284 Device ID information can look in /proc for it, but it is in a different location in 2.4 kernels than it was in 2.2 kernels, and is completely absent in 2.0 kernels. - Soon it will be in a different location again in 2.4. - All kernels allow ioperm/inb/outb-style I/O, but it requires root privilege. In addition, string I/O (such as outsb) is not available on some architectures. - 2.4 kernels have /dev/parport[0,1,2,...] device nodes which applications can use; applications don't need to be run as root, but they obviously need appropriate permissions set on the device node they want to use. - When capabilities catch on, /dev/port will be another alternative to ioperm that doesn't require root privilege, although it does require RAWIO capabilities. The aim of this library is to take all the worry about the above wrinkles from the application. It will figure out which method is appropriate for the currently running kernel. For instance, if the application wants to know the device ID of a device on a particular port, it will ask the library for the the device ID. The library will then figure out if it's available via /proc (in any of the possible locations), and if not then it will try asking the device itself. If /dev/parport0 isn't available for use, it will try ioperm; if that fails, it will try /dev/port. And the application doesn't have to care. The interface is set out in the header file, ieee1284.h, and in the SGML document doc/interface.xml (which can be viewed in HTML format at ). If this doesn't do something that you think it should, or it does something in a way that doesn't make sense to you, please let me know so that I can fix it. I need feedback on the interface to know whether it is working. -- Tim Waugh