1. Introduction
  2. Install CUPS
  3. Modify rc.conf
  4. Install Foomatic PPD collection
  5. cd /usr/pkgsrc/print/foomatic-ppds
  6. Setup CUPS
  7. Network configuration
    1. Server side
    2. Client side
  8. Documentation
  9. Notes
    1. Permissions
    2. BSD lpr
    3. HP Printer
  10. See also


The Common Unix Printing System (CUPS) is a modular printing system for Unix-like computer operating systems that allows a computer to act as a powerful print server. A computer running CUPS is a host which can accept print jobs from client computers, process them, and send them to the appropriate printer. More information regarding the architecture of CUPS can be found here.

To check whether your printer works with CUPS and to what extent, you may visit the OpenPrinting database.

Install CUPS

Assuming your pkgsrc tree lies at /usr/pkgsrc, type:

# cd /usr/pkgsrc/print/cups
# make install

Modify rc.conf

Next copy cupsd startup script at /etc/rc.d:

# cp /usr/pkg/share/examples/rc.d/cupsd /etc/rc.d

Then add the following line to your /etc/rc.conf file:


And start the CUPS daemon, with:

# /etc/rc.d/cupsd start
Starting cupsd.

Install Foomatic PPD collection

The Foomatic PPD collection includes suitable PPDs for printers listed in the Foomatic printer/driver database. Together with the foomatic-filters package, this collection of PPDs allows many non-PostScript printers to function as if they were PostScript printers:

cd /usr/pkgsrc/print/foomatic-ppds

# make install

The following package adds Foomatic PPDs to the CUPS PPD database:

# cd /usr/pkgsrc/print/foomatic-ppds-cups
# make install

Setup CUPS

Open a web browser and type in the address/location bar:


You will enter a web-based interface where you can manage your printing system (add printers, etc).

To print using cups from the command line without further modifications you have to use /usr/pkg/bin/lpr. Using simply lpr will not print using cups but the default NetBSD printing system. The same apply to the spool queue examination command lpq.

Network configuration

Server side

Client side




Just for the record (I'm not sure where this fits in): To make it print, I had to

chown lp /dev/ulpt0 # usb        

and install print/hpijs for my Deskjet (it is used by gs via the foomatic thing), then set some additional options in the web interface, e.g. a4 paper size. Conclusion: The web interface sucks, looking into the logs is indispensable.

BSD lpr

I think I no longer need the BSD lpr, so i just did this to avoid confusion:

# chmod -x /usr/bin/lp*
# chmod -x /usr/sbin/lp*

HP Printer

To use HP printers (like DeskJet, OfficeJet, PhotoSmart, Business InkJet, and some LaserJet models) and to not have this kind of error /usr/pkg/libexec/cups/filter/foomatic-rip failed, you need to install another package named hpijs :

# cd /usr/pkgsrc/print/hpijs
# make install clean clean-depends

See also