HP OfficeJet Linux driver (hpoj) documentation index
Please click on the links below for more information on each section.
Use the "Back" button on your browser to return to this page.
This software provides Linux and partial FreeBSD support for most
"multi-function" (also known as "all-in-one") peripherals from
Hewlett-Packard, including OfficeJet,
LaserJet, Printer/Scanner/Copier ("PSC"), and PhotoSmart printer products.
It consists of:
The hpoj Supported
Devices page has the most up-to-date list of models and functionality
that are supported by the hpoj software.
- Low-level drivers and libraries to communicate with the device.
Depending on your hardware and operating system, you may connect
devices directly to your computer with a parallel port or
USB (Universal Serial Bus), or to a LAN (Local Area Network)
using certain models of HP JetDirect print servers.
- An application programming interface (API) known as "PTAL" (Peripheral
Transport Abstraction Libary) that hides the differences
in accessing devices connected via parallel, USB, or JetDirect.
- Printing support, largely powered by ghostscript, the
(for most models), and one of various print spoolers (lpd,
CUPS, PDQ, etc.)
that may already be installed on your computer.
- Scanning support, in conjunction with
SANE (Scanner Access Now Easy).
- Access to photo-card readers, possibly in conjunction with
- Graphical and command-line applications to access various features of the
device, such as displaying status of the device and setting the clock.
Installation and setup
Follow these steps to install the hpoj software initially, or to set up
new devices later:
Please also register your HP product(s)
if you haven't already done so.
- Compiling and installing the software
- Setting up basic device connectivity
- Setting up printing
- Setting up scanning
- Setting up photo-card access
Additional support resources
In addition to this documentation provided with the hpoj software,
the following support resources are provided for your convenience:
- The hpoj web site is at
- Information on known bugs and possible solutions or workarounds is
available on the
Bugs and TODO page. If you run into trouble with the software,
be sure to check this page before reporting a bug.
- This documentation provided with the software is also mirrored on the
Visit the Mailing lists
page to subscribe/unsubscribe and/or to browse the message archives.
For hpoj support and feedback, please write and reply to the
mailing list described above, not to individual developers.
- email@example.com -- New software release
firstname.lastname@example.org -- Feedback, problem reports,
and technical discussions. Your comments about the software, documentation,
and/or website are greatly appreciated, because we want to make them
useful to as many people on as many systems as possible. Currently it's
not necessary to subscribe before posting to the mailing list, although
non-subscriber postings may be delayed for moderator approval.
High-level command reference
These commands access specific high-level functions of the device
and are probably of interest to most users:
- ptal-hp -- Device configuration and
- xojpanel -- QT-based application that
displays the contents of the device's LCD panel (not supported on certain
Low-level command reference
These commands exercise basic low-level connectivity to the device.
They are useful for testing the communications path when first setting
up a device and for debugging problems, but otherwise, they are probably
of interest mainly to advanced users and developers.
- ptal-devid -- Displays the device
ID string or certain fields
- ptal-connect -- Connects to
various stream services on the device
- ptal-print -- Alias for
ptal-connect that defaults to
connecting to the print service
- ptal-pml -- Gets/sets PML objects
- ptal-device -- Lists device names
which have been registered with
- hpojip-test -- Test application for image-processing library
(see hpojip-test.c and hpojip.h for more information)
- libptal -- Abstracts differences
in low-level I/O over parallel, USB, and JetDirect connections
(the programming API is documented here)
- libhpojip -- Image-processing library (see hpojip.h
for more information)
- libsane-hpoj -- SANE backend
for scanning on all hpoj-supported models
Administration and daemon command reference
- ptal-init -- Starts/stops the
daemons and probes your system for new devices
- ptal-mlcd -- Low-level I/O
(MLC/1284.4) driver daemon for parallel-port and USB connections
- ptal-printd -- Daemon that
simulates a printer character device in /var/run/ptal-printd
and routes the data through the PTAL I/O path
- ptal-photod -- Daemon that
provides access via
to the photo-card readers on certain models
- ptal-cups -- CUPS backend
for printing to PTAL devices
The following information is intended for developers of applications
using the hpoj software's services, and for those desiring a deeper
understanding of the hpoj software and/or of the underlying device
- David Paschal developed low-level I/O, scanning, and photo-card
access code and documentation, and maintained hpoj starting with the 0.5
release and ending with the 0.91 release. He is no longer associated with
the hpoj project, due to HP organizational changes and management decisions
beyond his control. (The people who bring you the
hpijs print driver
are officially responsible for future development and support of hpoj-related
- Mark Horn contributed the ptal-cups backend.
- Joe Piolunek enhanced the
xojpanel application and QT detection.
- Roger Schreiter, Gerhard Fürnkranz, and Andreas
Fester originally started the hpoj project, and developed parallel-port,
MLC, and application-level code, respectively, which were part of the codebase
up through version 0.7.