I have a desktop PC server running Ubuntu 10.10, with a Canon MX350 printer Canon attached via USB. I want to share the printer so that I can print to it from a MacBook Pro laptop running OS X 10.6.6 and possibly various other clients.

(While the printer can present various printing services on the network, somehow that works very unreliably for me, so I have turned its network features off.)

The system-config-printer program found the printer easily, and I am able to print files locally on server. I enabled sharing printers, and added the printer on the Mac. I clicked on System Preferences, Print & Fax, +, IP. I selected IPP as the protocol and server.home.gateway as the address, to which the dialog responded "Valid and complete address." (My ADSL router serves that DNS address for server.) I wrote Canon as the queue name (and also tried leaving the field empty) since that's what it shows up as on server.

When I tried to print, the printer became "paused" on the Mac. I enabled debug logging in cupsd.conf and noticed error messages like this:

Get-Printer-Attributes ipp://server.home.gateway:631/Canon
Get-Printer-Attributes client-error-not-found: The printer or class was not found.
Returning IPP client-error-not-found for Get-Printer-Attributes (ipp://server.home.gateway:631/Canon) from

(If I left the queue name empty, the not-found printer was just ipp://server.home.gateway:631/)

After a bunch of guesswork and browsing CUPS documentation, I changed the queue to printers/Canon, and printing started working. I'm glad it works, but this is clearly suboptimal: there was no indication in the Mac GUI what printer queues are available on the server. Is there a way to set up the print server so that the client can simply select the printer from a list of available printers, and would automatically get the right queue name?


Check out the file /etc/cups/cupsd.conf on the Ubuntu server and look for the Browse entries:

Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseRemoteProtocols CUPS
BrowseAddress @LOCAL
BrowseLocalProtocols CUPS dnssd

They should be near the top of the file. Make sure Browsing is On, and restart cups:

# restart cups
  • The file was missing BrowseAllow all and the BrowseRemoteProtocols line was empty. With those added, and a cupsctl BrowseProtocols="cups dnssd" command on the Mac, the printer showed up in the Default tab of the Add Printer dialog. – Jouni K. Seppänen Mar 11 '11 at 12:44

I've had this fight a couple of times with various IPP clients, they just don't seem to pick the broadcasted queue name. Then, as you told, when you manually specify the correct name, everything works fine.

One thing worth checking is the queue name the CUPS server claims:

spk@hedvig:~$ sudo tcpdump -nv -s 1500 -A -c1 port 631
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 1500 bytes
14:03:58.959617 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 217) > UDP, length 189
E.....@.@............w.w..kS82904e 3 ipp:// "hedvig" "HP-Color" "HP Color LaserJet 2550 Series Postscript (recommended)" job-sheets=none,none lease-duration=300

The dump above claims rather a long queue name, but yes, there's this /printers/ in between. I wonder who the idiot gave my printer this long name ... obviously my current environment doesn't need it manually entered too often ;-)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.