General Information

About the Project | About Ppbus Framework | Reasons for Ppbus in NetBSD | About NetBSD and FreeBSD

About the Project

NetBSD-ppbus is a project on The project page on SourceForge is This project was created to port a suite of device drivers from FreeBSD to NetBSD which will provide more modern and flexible support for the parallel port in NetBSD. These drivers include:

Formerly ppc in FreeBSD, atppc provides low level chip set support for AT-compatible parallel ports that typically attach to the ISA bus.
Provides abstraction for parallel port access and sharing between higher-level device drivers.
Provides normal services of a printer driver, attaches to ppbus.
Drives zip drives attached to the parallel port, attaches to ppbus.
Provides PLIP network interface: IP over the parallel port. Attaches to ppbus.

About Ppbus Framework

FreeBSD has a device independent framework for parallel port access called ppbus. This driver provides an abstract interface to the parallel port and allows multiple device drivers to use this framework so that a number of devices such as zip disks, data transfer cables, and printers can be used without recompiling or rebooting the system. IEEE 1284 is a standard governing the parallel port and allows for several modes of operation as well as negotiated mode changes and standardized communication protocols: this standard is supported under ppbus. On FreeBSD, ppbus is implemented on the chip set-level driver ppc: the AT standard parallel port chip set. This low-level driver provides support for enhanced modes of operation such as EPP and ECP modes, interrupt handling, and DMA.

The original author has written some information on ppbus (

NetBSD has several additional requirements: the operating system has been ported to a number of differing architectures and some level of machine and bus independence is required for a driver like ppbus. A number of low-level drivers which provide access to the parallel port will need to support the same ppbus interface across various architectures and buses. With this in mind, this project is attempting to port ppbus and ppc, which has has been renamed to atppc because of a name conflict (ppc in NetBSD refers to the Power PC architecture to which the operating system has been ported).

Reasons for Ppbus in NetBSD

NetBSD's current lpt driver is old
The current driver lacks bidirectional support: almost every single printer available now can send and receive data. The driver also lacks IEEE 1284 support and a way to negotiate faster transfer modes as well as standardized protocols for things such as error recovery. The driver also does not separate access to the parallel port from printing: there is no way to attach zip drives, PLIP cables, or other non-printing devices.
NetBSD would benefit from a standard parallel port software interface
NetBSD has been ported to a number of different architectures. Many have some implementation of the parallel port and each requires its own driver. While distinct drivers would still be required under ppbus, there would only be a need for one printing driver: these multiple drivers would each implement ppbus. The ppbus printer driver would not need to know hardware details, just as long as the parallel port line definitions do not change (the same 25-pin D type connector is used almost universally for example and IEEE 1284 has defined the signals and what they mean). This could result in people spending less time having to re-implement and maintain drivers that talk to the same device over and over again and would instead just write a driver to support ppbus (this would only care about moving bytes in/out using the port).
Multiple parallel port devices
Ppbus also does some access arbitration to the hardware port itself via the generic interface: this means that multiple devices can be configured into the kernel that all use the same port. While simultaneous usage may not make sense, it would be very convenient to be able to for example print out a report and then attach a zip disk to back up some files without the need to reboot the machine or have several kernels stored for different "usage patterns". This was the situation in Linux for example, until that OS got a ppbus-like implementation for the i386 parallel port.

About NetBSD and FreeBSD

NetBSD and FreeBSD are operating systems which are both derived from 386BSD, which in turn was derived from BSD 4.4: these are UNIX operating systems. Both are open-source systems and are freely available. More information can be found at the respective project web pages:


2003/09/19 20:53:13 Logo