How do I share printer from ubuntu 9.10 to windows, to Mac OS X, and to other Ubuntu hosts?

I have a printer installed on an Ubuntu 9.10 desktop, and I wish to share the printer to a windows machine, a Mac OS X machine, and to some other Ubuntu hosts over the network. Two related questions come to mind:

  1. How do you share a printer from an Ubuntu host to other hosts?

  2. Is it better to use different methods of sharing for each type of client vs. trying to get all the clients to talk, for example, SMB, to the printer?

    • The primary concern is quality of print results and reliability of printing. I had some problems printing from Mac and Ubuntu clients when the printer was attached to a Win XP desktop

The built-in print sharing based on Internet Printing Protocol (ipp://) seems to work pretty well. In terms of configuring the server and Ubuntu clients, it is the easiest to manage, as no editing of a text file is needed.

Another problem I had with Ubuntu clients talking to a Windows machine sharing a printer was that it would keep failing. The problem was on the Ubuntu side, and the solution was to use usernames and passwords to connect to the print server, but still, it was annoying.

The following is based on the Ubuntu documentation wiki NetworkPrintingWithUbuntu

On the machine sharing the printer - the server

  1. Open the System -> Administration -> Printing launcher for system-config-printer application.

  2. In the "Printer configuration" dialog box, select the Server -> Settings menu.

  3. In the "Basic Server Settings" dialog box, select the option Publish shared printers connected to this system

  4. Going back to the "Printer configuration" dialog box, open the Properties dialog box for your printer

  5. Open the "Policies" view and make sure that Enabled, Accepting Jobs, and Shared are selected

On the Ubuntu 9.10 or 9.04 machine needing to print - the Ubuntu Client

  1. The easy way: System -> Administration -> Printing, select the Server -> Settings menu, and select the option Show printers shared by other systems.
    • If the machines are on the same subnet, and perhaps even farther afield from each other, the remote printer should just show up
    • If you look at the properties of the printer, you will see that the device URI is of the form:
           ipp://ip.address.or.name/printers/Printername
      for example
           ipp://10.10.10.52/printers/Office
  2. The more secure way, because you aren't auto-laoding things from the network:
    1. System -> Administration -> Printing, hit the +New button
    2. Under the Network Printer menu, select Internet Printing Protocol (ipp)
    3. In the IPP Printer sub dialog box,
      • for the Host: field, enter a name or IP address for the desired printer, e.g., 10.10.10.52
      • for the Queue: fiend, append the given name of the printer (you will need to look at the server's "Printer configuration** dialog box to find it, e.g., Office
      • The Verify button should light up. Click it. Wait for some affirmation that the remote printer is good to go.
    4. Click the Forward button and follow the wizard to complete the configuration of the printer.

On the Windows machine needing to print - the Windows clinet (tested with XP)

The Windows client has the ability to print to a remote printer via ipp.

  1. Add a printer
  2. Set to "A network printer"
  3. Select the option Connect to a printer on the Internet or on a home or office network and simply enter the URI to the printer, e.g., ipp://10.10.10.52/printers/Office.
  4. Select your driver. It may take a bit of hunting, but it seems to be the same scenario as with accessing a printer with Microsoft's SMB protocol

On the Mac OS X machine needing to print - the Mac client

This was pretty easy. The only problem I found was that the Mac OS X did not want to use the specific driver for the printer. The machine has the driver installed, as we have directly attached the printer to the macintosh in the past, but when connecting over IPP, Mac OS X seems to only want to use the Generic Postscript Printer driver. work in progress


You can do it with samba for any type of client.

loo at this

http://tldp.org/HOWTO/SMB-HOWTO-9.html

read about cups and samba