3

The CUPS "browsing" protocol was marked as deprecated being removed at v1.6 of CUPS, due to problems with broadcast and managed networks/WiFi. It's an UDP protocol to broadcast information about installed printers on a CUPS server and share them.

In a simple way, the following diagram describes our network and printer propagation using this protocol:

             Browse Protocol                                            
                                                                        
                 *Printers are shared as ipp pools on the printserver* 
+-----------+                                                           
|CUPS Client|  ipp://printserver/printer01, ipp://printserver/printer02 
|1.3.7      +--------+                                                  
|           |        |      +------------------+                        
+-----------+        |      |                  |                        
                     +------>   Printserver    |                        
+-----------+        |      |   CUPS 1.5.3     |                        
|CUPS Client|        |      |                  |                        
|1.5.3      |        |      +------+---------+-+                        
|           +--------+             |         |                          
+-----------+                      |         | ipp://printer01          
                        smb://printer02      |                          
                                   |         |                          
                         +---------v-+    +--v-------+                  
                         |           |    |          |                  
                         |Printer 02 |    |Printer 01|                  
                         |           |    |          |                  
                         ++----------+    +----------+                  
                 *Printserver connects to them using                    
                  all kinds of protocols*                               
                                                                        
  • The servers have interfaces on the same VLAN to make the zeroconf propagation of printers;
  • The clients (some of them) have legacy systems that prints through lpr. Their local cups have printers pointing to the printserver;
  • The printserver announces (broadcast) new printers and changes each 60 seconds;

We have about 10 clients that consumes those printserver polls, while the printserver itself connects to 250 printers. Since adding printers on each client would not be a pleasant task, and due to driver issues with newer printers, CUPS needs to be updated I ask:

Question: Is there an alternative to the browse protocol to add printers in a distributed way?

Reasons why this architecture needs to be kept:

  • With this centralized printserver i can make job accounting through scripts and send them by email. Synchronizing printers but letting the clients print directly to them would be a "good enough" solution, but not the best;
  • Easy to manage printers at one server;
  • Security. Since it´s a virtualized environment i can decide which server will have an interface on the same vlan the printserver broadcast it´s pools/printers;
  • Our support guys are trained to add and share printers using the default cups administration page(http://printserver:631) and they have no access to shell at all. This is why solutions like adding one avahi service to each printer are not good options.
1

This is completely untested by myself but I was able to find this thread which sounds like a possible workaround to your issue. In the forum thread titled: Index» Networking, Server, and Protection» A solution to the CUPS (libcups) 1.6 printing problem.

excerpt

Hi, I've read countless threads here and elsewhere about a really frustrating feature of CUPS 1.6: apparently you can't use libcups alone to browse existing printers in your network as we did in the past. Not even if you know the address of your local CUPS server. You need to install the cups server package.

I spent a lot of time trying to find a fix for this because it is really annoying.

I'm glad to say I found a really easy solution:

  1. You only need libcups (1.6), as originally
  2. You need to edit either /etc/cups/client.conf or ~/.cups/client.conf and add this line (the /version adds interoperability with older CUPS servers I guess):

      ServerName foobar/version=1.1
    

Apparently this is a new option that has yet to be documented. Credit goes to the Ubuntu folks, which is where I found it: https://bugs.launchpad.net/ubuntu/+source/cups/+bug/1069671

I'd appreciate if someone edited the wiki to add this. I'm on the road right now. Otherwise, I'll do it later next week.

Also making this sticky might be appropriate.

Cheers!

References

  • It seems that this option is more usefull when clients have a newer version than the server, specially between versions 1.6(client) and 1.5 or older(server). Since 1.6 send ipp print jobs using ipp 2.0 this "force lower protocol" option will not break jobs sent to older servers. – user34720 Jun 17 '14 at 10:38
0

cups-browsed has been packaged for debian and is intended to use mdns to add equivalent functionality.

  • The guy that have the Cups Client 1.3.7 is a Red Hat 5-x. Will i be able to install browsed on this system too? Cant upgrade to RHEL6 or 7 cause it provides access to a legacy system – user34720 Apr 10 '15 at 2:28
  • I have not used rh for some years, but If you can get the dependencies satisfied (especially avia) it should work – hildred Apr 10 '15 at 4:53

Your Answer

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