NetworkPrintingFromUbuntu

Revision 23 as of 2006-04-26 02:00:04

Clear message

Overview

Ubuntu 5.10 (Breezy Badger) supports network printing, so you can print from your Ubuntu machine and to another Ubuntu machine that has a printer attached (ie a "print server"). This page covers this scenario only. Please read NetworkPrintingFromWindows for connecting from a Windows machine to your Ubuntu print server.

Background

Ubuntu uses the Common UNIX Printing System ("CUPS") to handle printing. CUPS uses the Internet Printing Protocol ("IPP") as the basis for managing print jobs and queues. The Line Printer Daemon ("LPD") Server Message Block ("SMB"), and AppSocket (a.k.a. JetDirect) protocols are also supported with reduced functionality. This page describes network printing with CUPS and IPP.

CUPS printer configuration and management is handled by the Printer Admin utility launched from the Gnome menu - System -> Administration -> Printing. In addition CUPS provides command-line commands that are similar to old Berkley and SystemV print commands such as lpq, lpstat etc. Also IPP provides web services so after you have configured CUPS appropriately, you can access the printers and jobs via your web browser.

When a locally attached printer is defined, eg using the Printer Admin utility, that printer is automatically published from this "print server" host to the network, depending on the server directives in the CUPS configuration file. A remote Ubuntu "client" host can then be able to see and use the printer attached to the server. The network printer automatically appears in the client's Printer Admin utility. It simply pops up if CUPS is up and configured correctly and disappears if you stop CUPS at either the Print Server or your local machine.

How To ...

  • .. print from one Ubuntu desktop ("client") machine to another Ubuntu ("print server") machine that has a printer connected to it.

Currently, with Ubuntu 5.10 (Breezy Badger) you need to make changes with an editor to the CUPS configuration file /etc/cups/cupsd.conf for network printing to work. The following are complete working replacement examples that work for a Print Server and for a Client Machine.

Ubuntu Print Server

  • This is the machine that has a printer attached to it, that you want to send print jobs to.
  • Add a local printer definition, using the Printer Admin utility (Gnome menu System -> Administration -> Printing).

Server: /etc/cups/cupsd.conf This file is based on that supplied with Ubuntu 5.10. Comment lines are removed. Copy it onto your system.

  •     # /etc/cups/cupsd.conf
        # Simple CUPS configuration file for a print server
        # which serves printers within a private local area network.
        # - There is no need for additional security within the print server, ie only authorises people can access the machine.
        
        # This setup also allows access to the CUPS "Administrative tasks" system
        # via your web browser to http://localhost:631
        # File based on Ubuntu 5.10 (Breezy Badger) (Linux version 2.6.12-10-386)
        # Server Directives are explained in http://localhost:631/sam.html
        
        # 25/04/2006
        # DavidTangye@netscape.net
        
        ConfigFilePerm 0600
        LogLevel info
        Printcap /var/run/cups/printcap
        RunAsUser Yes
        Port 631
        Include cupsd-browsing.conf
        BrowseAddress @LOCAL
        BrowseAddress 10.0.0.0/8
        BrowseAddress 128.0.0.0/16
        BrowseAddress 192.168.0.0/24
         
        <Location />
        AuthType None
        Order Deny,Allow
        Deny From All
        Allow From @LOCAL
        Allow From 10.0.0.0/8
        Allow From 128.0.0.0/16
        Allow From 192.0.0.0/24
        </Location>
        
        <Location /jobs>
        AuthType None
        Order Deny,Allow
        Deny From All
        Allow From @LOCAL
        Allow From 10.0.0.0/8
        Allow From 128.0.0.0/16
        Allow From 192.0.0.0/24
        </Location>
        
        <Location /printers>
        AuthType None
        Order Deny,Allow
        Deny From All
        Allow From @LOCAL
        Allow From 10.0.0.0/8
        Allow From 128.0.0.0/16
        Allow From 192.0.0.0/24
        </Location>
        
        <Location /admin>
        AuthType None
        Order Deny,Allow
        Deny From All
        Allow From @LOCAL
        Allow From 10.0.0.0/8
        Allow From 128.0.0.0/16
        Allow From 192.0.0.0/24
        </Location>

After changing this file, restart CUPS by running ...

    sudo /etc/init.d/cupsys restart

After CUPS is restarted the printers will immediately be found automatically by machines set up as per the next section.

The above config allows you to use a web browser to manage CUPS, eg set up printers, manage jobs, via "http://PRINTSERVERNAME:631/".

This config file needs to be further changed if security within your local network is an issue for you.

Ubuntu Client Machine

This is the machine you want to work on and send print jobs from.

Client: /etc/cups/cupsd.conf Use this file. Its features are contained in its comments.

  •     # /etc/cups/cupsd.conf
        # Simple CUPS configuration file for a pure client machine:
        # which has:
        # - no printers of its own, (or any local printers will not be shared?)
        # - no need for security within the machine, ie a personal workstation
        # - a network connection to a local network, where it will find CUPS-controlled printer servers
        
        # This setup also allows access to the "Administrative tasks" system at
        # http://localhost:631
        # File based on Ubuntu 5.10 (Breezy Badger) (Linux version 2.6.12-10-386)
        # Server Directives are explained in http://localhost:631/sam.html
        
        # 25/04/2006
        # DavidTangye@netscape.net
        
        ConfigFilePerm 0600
        LogLevel info
        Printcap /var/run/cups/printcap
        RunAsUser Yes
        ### Listen fails. Use Port
        #Listen 127.0.0.1:631
        #Listen 10.0.0.0/8:631
        #Listen 128.0.0.0/16:631
        #Listen 192.168.0.0/24:631
        Port 631
        
        ### Which print servers to use
        Include cupsd-browsing.conf
        BrowseOrder deny,allow
        BrowseDeny from All
        BrowseAllow from @LOCAL
        BrowseAllow from 10.0.0.0/8
        BrowseAllow from 128.0.0.0/16
        BrowseAllow from 192.168.0.0/24
         
        <Location />
        AuthType None
        Order Deny,Allow
        Deny From All
        Allow From @LOCAL
        </Location>
         
        <Location /jobs>
        AuthType None
        Order Deny,Allow
        Deny From All
        Allow From @LOCAL
        </Location>
         
        <Location /printers>
        AuthType None
        Order Deny,Allow
        Deny From All
        Allow From @LOCAL
        </Location>
         
        <Location /admin>
        AuthType None
        Order Deny,Allow
        Deny From All
        Allow From @LOCAL
        </Location>

After changing this file, restart CUPS by running ...

    sudo /etc/init.d/cupsys restart

After CUPS is restarted the printers on file servers, (eg, set up in the Print Servers section above) will be found automatically by your machine. They will pop up in your "Printers" screen. This might take up to 30 seconds though.

Common Problems

  1. Print jobs stay on the client machine and do not print. Run the command

    •      lpstat -p -d
    If it reports something like ...
    • {{{printer HP-OfficeJet-D155 is idle. enabled since Jan 01 00:00

      • Network host 'alice' is busy; will retry in 30 seconds...}}}
    or it reports something like ...
    • {{{printer OfficeJet-D155@10.0.0.40 is idle. enabled since Jan 01 00:00

      • Unable to get printer status (client-error-forbidden)!

system default destination: OfficeJet-D155@10.0.0.40}}}

  • Your client computer cannot obtain printer information from the server. In either case use the "/etc/cups/cupsd.conf" files as above and restart CUPS.


  • This info is current for Ubuntu 5.10 (Breezy Badger)


CategoryNetworking