Skip to content
Haiku OSHow-To Published Updated 6 min readViews unavailable

How to Set Up Printing on Haiku

Match a printer's real page language and connection to Haiku's driver and transport, validate a test page, and isolate failures safely.

Haiku printing separates the driver that renders a page into a printer language from the transport that delivers the resulting job. A correct transport with the wrong page-description language can send pages of garbage; a correct driver with the wrong network queue or USB endpoint sends nothing. Identify both halves before adding the printer.

Inventory the printer before configuring Haiku

Record manufacturer, exact model and hardware revision, USB versus network connection, firmware version, supported printer languages, paper sizes, color/duplex capability, and any network service/queue names. Print the device’s configuration page from its own control panel when possible.

Do not assume every modern printer understands PostScript or PCL. Many inexpensive host-based printers depend on proprietary rasterization in a vendor driver. A Linux .deb, Windows installer, or PPD alone is not a Haiku driver and should not be unpacked into system directories.

Check whether the model is explicitly supported by a driver available to the running Haiku architecture. Search HaikuDepot and repositories for current printing/Gutenprint packages and read their model list. “Same product family” is only a test hypothesis, not compatibility evidence.

Back up current printer settings under the user settings hierarchy before changing a working configuration. Record Haiku revision and package inventory so a driver regression can be reproduced.

Verify the connection independently

For USB, power on the printer, use a known-good data cable without an unreliable hub, and confirm Haiku enumerates the device:

listusb

Match vendor/product identifiers and reconnect once while watching behavior. Enumeration proves the USB device is visible; it does not prove the print transport has claimed the correct interface or that a suitable driver exists.

For network printing, assign or reserve a stable address and record the advertised protocols: IPP, HP JetDirect/raw socket, or LPR/LPD are distinct transports. Verify link and IP reachability, then confirm the printer’s web/configuration interface reports the intended service enabled. ping alone cannot prove a print port, queue name, authentication method, or document format works.

Keep the printer on a trusted network. Exposing unauthenticated print services beyond the LAN creates a job-injection and document-disclosure risk.

Open the correct preference panel

Use Deskbar → Preferences → Printers. The earlier article placed Printers under Applications; the official user guide identifies it as a preference application at /boot/system/preferences/Printers.

Choose Add… and give the queue a descriptive name containing model and connection, for example “Office Laser — JetDirect.” Select a printer type/driver whose documented output language matches the device, then select the connection/transport and its parameters.

Haiku’s current source tree includes transports for USB and parallel/serial devices as well as IPP, HP JetDirect, LPR, shared printing, and print-to-file. Their presence in source does not guarantee every device/server variation is complete on every release. Use the protocol the printer actually advertises and test it.

Match the driver to the page language

Select an exact supported model in Gutenprint where available. Otherwise use a generic PostScript, PCL5, or PCL6 driver only when the printer specification explicitly states that language/version is supported. Sending PCL to a PostScript-only queue can print raw commands or meaningless characters.

Do not cycle through dozens of “close” vendor models on a production printer. Differences in command sets, color calibration, margins, duplex units, and media handling can waste supplies or trigger unsupported operations. Test on plain paper with conservative monochrome settings.

Haiku also contains Preview and print-to-file paths. These are valuable diagnostic destinations, not physical printer drivers. Preview can establish whether a native application’s rendered page is already malformed before transport/device handling.

Configure transport parameters precisely

For USB, choose the entry that corresponds to the enumerated printer, not an unrelated multifunction interface. If several ports look similar, disconnect/reconnect and compare the list rather than guessing.

For JetDirect, use the printer address and raw-print service expected by its documentation. For LPR, queue name matters and may be case-sensitive. For IPP, use the exact resource/queue path advertised by the device or print server. Do not substitute one protocol’s URL/queue syntax into another transport.

If discovery finds nothing, manual entry is reasonable only with known parameters. Preserve screenshots or notes of every driver/transport value so a working combination can be reproduced and a failed one can be removed cleanly.

Set page defaults before the first job

Select the added queue and configure page setup: paper size, orientation, printable area, color mode, resolution, and duplex if the driver/device expose it. Match the paper physically loaded in the tray. A Letter/A4 mismatch can crop content or make the printer wait for manual confirmation.

Set the queue as default only after it passes testing. On a machine with a PDF/file destination, choosing the wrong default may appear as a silent hardware failure because the job was written elsewhere.

Print the Printers panel’s test page. Confirm one job leaves the queue and inspect output for readable text, complete margins, grayscale/color, gradients, orientation, and correct sheet count. A page emerging is not enough if it contains control codes or severe clipping.

Test a real native application

Use a native application that actually implements Haiku’s Print Kit path. Open page setup first, choose the configured queue, and print a one-page document containing text and a simple image. Then test multiple pages, page range, copies, landscape, color, and duplex only as supported.

Do not claim that every application automatically gains printing. Ported toolkits may use their own print backends or expose only print-to-file. If the system test page works but one application cannot see the queue, report the application/toolkit path separately rather than replacing a good system driver.

Scanning on a multifunction device is also separate. Successful printing does not establish SANE/backend support for its scanner.

Isolate failures layer by layer

If no job appears, verify the application’s print action and try the system test page. If Preview is wrong too, capture application, Print Kit, font, page setup, and rendering details. If Preview is correct but the hardware output is wrong, focus on driver language/settings.

If the job renders but never reaches the device, focus on transport: USB enumeration, cable, network route, service port, queue path, printer online/paper/error state, and authentication. If the device receives bytes and prints garbage, stop immediately and recheck page language.

Capture one clean attempt at a time. Record timestamps, queue name, driver, transport, document type, application, page setup, and printer panel/error display. Avoid sending repeated large jobs while diagnosing; queued duplicates can emerge later.

Use the Printers UI to cancel jobs and remove a failed queue when available. Do not delete arbitrary files under ~/config/settings/printers while the print server is processing them. If a queue is stuck, back up its state, collect logs, stop submitting jobs, and consult current source/tickets before any manual cleanup.

Handle unsupported hardware honestly

If the printer needs a proprietary host raster driver or the required transport is incomplete, no preference setting can manufacture support. Keep the failed matrix and exact device identifiers for a Haiku ticket or driver contribution.

A safe fallback is to export/print to a portable document such as PDF and send it from a supported system or print service, after checking that the exported pages are correct and sensitive documents are handled appropriately. Do not recommend a random similar driver as a permanent solution merely because one page happened to print.

The setup is accepted only after connection, language, page defaults, system test, native-application output, reboot persistence, and queue cleanup all work. That evidence distinguishes a configured printer from a lucky one-page experiment.

Related:

Sources:

Comments