From Fedora Project Wiki

CUPS Printing

CUPS encompasses many different aspects of printing. For quick snapshot, it is CUPS when you are:

  • printing from your linux computer to a printer, attached to your computer straight;
  • printing from linux to a printer attached to another computer running linux (cups);
  • printing from MS to a printer, attached to a computer running linux (cups+samba);
  • printing from linux machine to a printer, attached to a computer running MS (cups+smbclient);

In short CUPS can act both as server and client towards different operating systems, be it linux, MS or Mac. With these features CUPS is ideal for heterogeneous networks. To give an idea of pervasiveness CUPS can deliver, one can have printer hooked to MS box, access it from another Linux/CUPS machine and subsequently publish further from CUPS/linux machine to the rest of the network to all different computers running MS/Linux/Mac.

Installation/packages

  • cups - core of the system;
  • system-config-printer gui config tool;
  • kdebase - provides KDE gui config utility;

All part of Fedora repo, can be installed with yum install cups system-config-network kdebase. Once installed enable for future boots by running the command su -c 'chkconfig cups on' and enable for current session with su -c 'service cups start'.

Configuration

Bulk of CUPS configuration can be done from user friendly graphical interface. Three (supposedly equivalent) options are available:

  • web based config utility, [1] - the way to go;
  • system-config-printer - user friendly graphical utility;
  • kprinter - accessible from Settings > Printer in KDE;

There is an opinion that of three the web based utility is preferable both, by functionality and reliability. Present page will follow web based interface where gui configuration will be proper, other two interfaces mimic the first very closely, things done the same way.

web based interface and cupsd.conf

the default configuration of CUPS is open towards localhost, but closed towards other computers, which config is controlled from /etc/cups/cupsd.conf file. The format is allow/deny similar to many other linux configs. the default config file is selfexplanatory and one can add options at own discretion. namely, if you want to have web interface access with admin privileges you need modify <Location /admin> and <Location /admin/conf> tags. Here is example from my File:Docs Drafts AdministrationGuide CupsPrinting cupsd.conf file which allowes both printing and administering from any IP on local network.

port 631

By default CUPS is using port 631 which needs to be open if using Firewall .

Installing printer

local printer

Some usb printers will be detected automatically, else from [2] click button Add printer and for the rest it is pretty much self explanatory.

network Linux printer

After Add printer button choose Network ipp printer and on next screen enter the printer path ipp://hostname/ipp/ (ipp stands for Internet printing protocol and is supported by both, linux and MS).

Alternately, if you have the openslp package installed on the machine with the printer attached then the printer can be automatically discovered and configured by other hosts on the network.

network MS printer

The same as above, after Add printer button choose Network ipp printer and on next screen enter the printer path ipp://hostname/ipp/. You can also use smb://hostname/printername.

drivers and Openprinting.org

If driver availability turns out a problem (you don't find your printer in available list) try to google ppd file for you printer. [3] is one large pool of linux supported printer drivers. If you find ppd file, you can indicate it instead of choosing one from available list in appropriate installation step.

Sharing printer

Sharing with other linux machines

Publish printer button at [4] does the job. You can finetune access right in /etc/cups/cupsd.conf file by modifying allow/deny options <Location/ printers> tag.

Sharing with MS boxes

In addition to be published, to enable other MS computers to print to your CUPS shared printer, it needs to be shared through Samba , which can be easily done using [5] - Swat web based configuration tool for Samba, the printer tab there is pretty mush self explanatory. One only needs to add ip for admitted clients in hosts allow line. The config can be verified in /etc/samba/sbm.conf file which among other must contain following

[global] 
...
printcap name = cups
printing = cups
cups options = raw
print command =
lpq command = %p
lprm command =
...
[printers] 
comment = All Printers
path = /var/spool/samba
printer admin = root
guest ok = Yes
printable = Yes
use client driver = Yes
browseable = No
...