cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

          cups-browsed.conf - server configuration file for cups-

          The cups-browsed.conf file configures the cups-browsed
          daemon. It is normally located in the /etc/cups directory.
          Each line in the file can be a configuration directive, a
          blank line, or a comment. Comment lines start with the #

          The "CacheDir" directive determines where cups-browsed
          should save information about the print queues it had
          generated when shutting down, like whether one of these
          queues was the default printer, or default option settings
          of the queues.

                  CacheDir /var/cache/cups

          With "LogDir" can be defined where cups-browsed creates its
          debug log file (if "DebugLogging file" is set).

                  LogDir /var/log/cups

          The "DebugLogging" directive determines how should debug
          logging be done.  Into the file /var/log/cups/cups-
          browsed_log ("file"), to stderr ("stderr"), or not at all

          Note that if cups-browsed is running as a system service
          (for example via systemd) logging to stderr makes the log
          output going to the journal or syslog. Only if you run
          cups-browsed from the command line (for development or
          debugging) it will actually appear on stderr.

                  DebugLogging file
                  DebugLogging stderr
                  DebugLogging file stderr
                  DebugLogging none

          Only browse remote printers (via DNS-SD or CUPS browsing)
          from selected servers using the "BrowseAllow", "BrowseDeny",
          and "BrowseOrder" directives

          This serves for restricting the choice of printers in print
          dialogs to trusted servers or to reduce the number of listed
          printers in the print dialogs to a more user-friendly amount
          in large networks with very many shared printers.

     Page 1                       Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

          This only filters the selection of remote printers for which
          cups-browsed creates local queues. If the print dialog uses
          other mechanisms to list remote printers as for example
          direct DNS-SD access, cups-browsed has no influence. cups-
          browsed also does not prevent the user from manually
          accessing non-listed printers.

          "BrowseAllow": Accept printers from these hosts or networks.
          If there are only "BrowseAllow" lines and no "BrowseOrder"
          and/or "BrowseDeny" lines, only servers matching at last one
          "BrowseAllow" line are accepted.

          "BrowseDeny": Deny printers from these hosts or networks. If
          there are only "BrowseDeny" lines and no "BrowseOrder"
          and/or "BrowseAllow" lines, all servers NOT matching any of
          the "BrowseDeny" lines are accepted.

          "BrowseOrder": Determine the order in which "BrowseAllow"
          and "BrowseDeny" lines are applied. With "BrowseOrder
          Deny,Allow" in the beginning all servers are accepted, then
          the "BrowseDeny" lines are applied to exclude unwished
          servers or networks and after that the "BrowseAllow" lines
          to re-include servers or networks. With "BrowseOrder
          Allow,Deny" we start with denying all servers, then applying
          the "BrowseAllow" lines and afterwards the "BrowseDeny"

          Default for "BrowseOrder" is "Deny.Allow" if there are both
          "BrowseAllow" and "BrowseDeny" lines.

          If there are no "Browse..." lines at all, all servers are

                  BrowseAllow All

                  BrowseDeny All

                  BrowseOrder Deny,Allow
                  BrowseOrder Allow,Deny

          Filtering of remote printers by other properties than IP
          addresses of their servers

          Often the desired selection of printers cannot be reached by
          only taking into account the IP addresses of the servers.
          For these cases there is the BrowseFilter directive to

     Page 2                       Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

          filter by most of the known properties of the printer.

          By default there is no BrowseFilter line meaning that no
          filtering is applied.

          To do filtering one can supply one or more BrowseFilter
          directives like this:

                  BrowseFilter [NOT] [EXACT] <FIELD> [<VALUE>]

          The BrowseFilter directive always starts with the word
          "BrowseFilter" and it must at least contain the name of the
          data field (<FIELD>) of the printer's properties to which it
          should apply.

          Available field names are:

                  name:    Name of the local print queue to be created
                  host:    Host name of the remote print server
                  port:    Port through which the printer is accessed on the server
                  service: DNS/SD service name of the remote printer
                  domain:  Domain of the remote print server

          Also all field names in the TXT records of DNS-SD-advertised
          printers are valid, like "color", "duplex", "pdl", ... If
          the field name of the filter rule does not exist for the
          printer, the rule is skipped.

          The optional <VALUE> field is either the exact value (when
          the option EXACT is supplied) or a regular expression (Run
          "man 7 regex" in a terminal window) to be matched with the
          data field.

          If no <VALUE> filed is supplied, rules with field names of
          the TXT record are considered for boolean matching
          (true/false) of boolean field (like duplex, which can have
          the values "T" for true and "F" for false).

          If the option NOT is supplied, the filter rule is fulfilled
          if the regular expression or the exact value DOES NOT match
          the content of the data field. In a boolean rule (without
          <VALUE>) the rule matches false.

          Regular expressions are always considered case-insensitive
          and extended POSIX regular expressions. Field names and
          options (NOT, EXACT) are all evaluated case-insensitive. If
          there is an error in a regular expression, the BrowseFilter
          line gets ignored.

          Especially to note is that supplying any simple string
          consisting of only letters, numbers, spaces, and some basic
          special characters as a regular expression matches if it is

     Page 3                       Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

          contained somewhere in the data field.

          If there is more than one BrowseFilter directive, ALL the
          directives need to be fulfilled for the remote printer to be
          accepted. If one is not fulfilled, the printer will get


          Rules for standard data items which are supplied with any
          remote printer advertised via DNS-SD:

          Print queue name must contain "hum_res_", this matches
          "hum_res_mono" or "hum_res_color" but also

                  BrowseFilter name hum_res_

          This matches if the remote host name contains "printserver",
          like "printserver.local", "",

                  BrowseFilter host printserver

          This matches all ports with 631 int its number, for example
          631, 8631, 10631,...:

                  BrowseFilter port 631

          This rule matches if the DNS-SD service name contains "@

                  Browsefilter service @ printserver

          Matches all domains with "local" in their names, not only
          "local" but also things like "":

                  BrowseFilter domain local

          Examples for rules applying to items of the TXT record:

          This rule selects PostScript printers, as the "PDL" field in
          the TXT record contains "postscript" then. This includes
          also remote CUPS queues which accept PostScript, independent
          of whether the physical printer behind the CUPS queue
          accepts PostScript or not.

                  BrowseFilter pdl postscript

          Color printers usually contain a "Color" entry set to "T"
          (for true) in the TXT record. This rule selects them:

     Page 4                       Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

                  BrowseFilter color

          This is a similar rule to select only duplex (automatic
          double-sided printing) printers:

                  BrowseFilter duplex

          Rules with the NOT option:

          This rule EXCLUDES printers from all hosts containing
          "financial" in their names, nice to get rid of the 100s of
          printers of the financial department:

                  BrowseFilter NOT host financial

          Get only monochrome printers ("Color" set to "F", meaning
          false, in the TXT record):

                  BrowseFilter NOT color

          Rules with more advanced use of regular expressions:

          Only queue names which BEGIN WITH "hum_res_" are accepted
          now, so we still get "hum_res_mono" or "hum_res_color" but
          not "old_hum_res_mono" any more:

                  BrowseFilter name ^hum_res_

          Server names is accepted if it contains "print_server" OR

                  BrowseFilter host print_server|graphics_dep_server

          "printserver1", "printserver2", and "printserver3", nothing

                  BrowseFilter host ^printserver[1-3]$

          Printers understanding at least one of PostScript, PCL, or

                  BrowseFilter pdl postscript|pcl|pdf

          Examples for the EXACT option:

          Only printers from "printserver.local" are accepted:

                  BrowseFilter EXACT host printserver.local

          Printers from all servers except "prinserver2.local" are

     Page 5                       Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

                  BrowseFilter NOT EXACT host prinserver2.local

          The BrowsePoll directive polls a server for available
          printers once every 60 seconds. Multiple BrowsePoll
          directives can be specified to poll multiple servers. The
          default port to connect to is 631.  BrowsePoll works
          independently of whether CUPS browsing is activated in


          The BrowseLocalProtocols directive specifies the protocols
          to use when advertising local shared printers on the
          network. The default is "none". Control of advertising of
          local shared printers using dnssd is done in

                  BrowseLocalProtocols none
                  BrowseLocalProtocols CUPS

          The BrowseRemoteProtocols directive specifies the protocols
          to use when finding remote shared printers on the network.
          Multiple protocols can be specified by separating them with
          spaces.  The default is "dnssd cups".

                  BrowseRemoteProtocols none
                  BrowseRemoteProtocols CUPS dnssd
                  BrowseRemoteProtocols CUPS
                  BrowseRemoteProtocols dnssd
                  BrowseRemoteProtocols ldap

          The BrowseProtocols directive specifies the protocols to use
          when finding remote shared printers on the network and
          advertising local shared printers. "dnssd" and "ldap" are
          ignored for BrowseLocalProtocols.  Multiple protocols can be
          specified by separating them with spaces. The default is
          "none" for BrowseLocalProtocols and "dnssd cups" for

                  BrowseProtocols none
                  BrowseProtocols CUPS dnssd
                  BrowseProtocols CUPS
                  BrowseProtocols dnssd
                  BrowseProtocols ldap

          The configuration for the LDAP browsing mode define where
          the LDAP search should be performed. If built with an LDAP
          library that supports TLS, the path to the server's

     Page 6                       Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

          certificate, or to a certificates store, can be specified.
          The optional filter allows the LDAP search to be more
          specific, and is used in addition to the hardcoded filter

                  BrowseLDAPBindDN cn=cups-browsed,dc=domain,dc=tld
                  BrowseLDAPCACertFile /path/to/server/certificate.pem
                  BrowseLDAPDN ou=printers,dc=domain,dc=tld
                  BrowseLDAPFilter (printerLocation=/Office 1/*)
                  BrowseLDAPPassword s3cret
                  BrowseLDAPServer ldaps://ldap.domain.tld

          The DomainSocket directive specifies the domain socket
          through which the locally running CUPS daemon is accessed.
          If not specified the standard domain socket of CUPS is used.
          Use this if you have specified an alternative domain socket
          for CUPS via a Listen directive in /etc/cups/cupsd.conf. If
          cups-browsed is not able to access the local CUPS daemon via
          a domain socket it accesses it via localhost. "None" or
          "Off" lets cups-browsed not use CUPS' domain socket.

                  DomainSocket /var/run/cups/cups.sock
                  DomainSocket None
                  DomainSocket Off

          Set HTTP timeout (in seconds) for requests sent to
          local/remote resources Note that too short timeouts can make
          services getting missed when they are present and operations
          be unnecessarily repeated and too long timeouts can make
          operations take too long when the server does not respond.

                  HttpLocalTimeout 5
                  HttpRemoteTimeout 10

          Set how many retries (N) should cups-browsed do for creating
          print queues for remote printers which receive timeouts
          during print queue creation.  The printers which are not
          successfully set up even after N retries, are skipped until
          the next restart of the service.  Note that too many retries
          can cause high CPU load.

                  HttpMaxRetries 5

          The interval between browsing/broadcasting cycles, local
          and/or remote, can be adjusted with the BrowseInterval

                  BrowseInterval 60

          The BrowseTimeout directive determines the amount of time
          that browsing-related operations are allowed to take in
          seconds.  Notably, adding or removing one printer queue is

     Page 7                       Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

          considered as one operation. The timeout applies to each one
          of those operations.  Especially queues discovered by CUPS
          broadcasts will be removed after this timeout if no further
          broadcast from the server happens.

                  BrowseTimeout 300

          The AllowResharingRemoteCUPSPrinters directive determines
          whether a print queue pointing to a remote CUPS queue will
          be re-shared to the local network or not. Since the queues
          generated using the BrowsePoll directive are also pointing
          to remote queues, they are also shared automatically if the
          following option is set. Default is not to share remote

                  AllowResharingRemoteCUPSPrinters Yes

          The NewBrowsePollQueuesShared directive determines whether a
          print queue for a newly discovered printer (discovered by
          the BrowsePoll directive) will be shared to the local
          network or not. This directive will only work if
          AllowResharingRemoteCUPSPrinters is set to yes. Default is
          not to share printers discovered using BrowsePoll.

                  NewBrowsePollQueuesShared Yes

          Set OnlyUnsupportedByCUPS to "Yes" will make cups-browsed
          not create local queues for remote printers for which CUPS
          creates queues by itself.  These printers are printers
          advertised via DNS-SD and doing CUPS-supported (currently
          PWG Raster and Apple Raster) driverless printing, including
          remote CUPS queues. Queues for other printers (like for
          legacy PostScript/PCL printers) are always created
          (depending on the other configuration settings of cups-

          With OnlyUnsupportedByCUPS set to "No", cups-browsed creates
          queues for all printers which it supports, including
          printers for which CUPS would create queues by itself.
          Temporary queues created by CUPS will get overwritten. This
          way it is assured that any extra functionality of cups-
          browsed will apply to these queues. As queues created by
          cups-browsed are permanent CUPS queues this setting is also
          recommended if applications/print dialogs which do not
          support temporary CUPS queues are installed. This setting is
          the default.

                  OnlyUnsupportedByCUPS Yes

          With UseCUPSGeneratedPPDs set to "Yes" cups-browsed creates
          queues for IPP printers with PPDs generated by the PPD
          generator of CUPS and not with the one of cups-browsed. So

     Page 8                       Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

          any new development in CUPS' PPD generator gets available.
          As CUPS' PPD generator is not directly accessible, we need
          to make CUPS generate a temporary print queue with the
          desired PPD. Therefore we can only use these PPDs when our
          queue replaces a temporary CUPS queue, meaning that the
          queue is for a printer on which CUPS supports driverless
          printing (IPP 2.x, PDLs: PDF, PWG Raster, and/or Apple
          Raster) and that its name is the same as CUPS uses for the
          temporary queue ("LocalQueueNamingIPPPrinter DNS-SD" must be
          set). The directive applies only to IPP printers, not to
          remote CUPS queues, to not break clustering. Setting this
          directive to "No" lets cups-browsed generate the PPD file.
          Default setting is "No".

                  UseCUPSGeneratedPPDs No

          With the directives LocalQueueNamingRemoteCUPS and
          LocalQueueNamingIPPPrinter you can determine how the names
          for local queues generated by cups-browsed are generated,
          separately for remote CUPS printers and IPP printers.

          "DNS-SD" (the default in both cases) bases the naming on the
          service name of the printer's advertised DNS-SD record. This
          is exactly the same naming scheme as CUPS uses for its
          temporary queues, so the local queue from cups-browsed
          prevents CUPS from listing and creating an additional queue.
          As DNS-SD service names have to be unique, queue names of
          printers from different servers will also be unique and so
          there is no automatic clustering for load-balanced printing.

          "MakeModel" bases the queue name on the printer's
          manufacturer and model names. This scheme cups-browsed used
          formerly for IPP printers.

          "RemoteName" is only available for remote CUPS queues and
          uses the name of the queue on the remote CUPS server as the
          local queue's name. This makes printers on different CUPS
          servers with equal queue names automatically forming a
          load-balancing cluster as CUPS did formerly (CUPS 1.5.x and
          older) with CUPS-broadcasted remote printers. This scheme
          cups-browsed used formerly for remote CUPS printers.

                  LocalQueueNamingRemoteCUPS DNS-SD
                  LocalQueueNamingRemoteCUPS MakeModel
                  LocalQueueNamingRemoteCUPS RemoteName
                  LocalQueueNamingIPPPrinter DNS-SD
                  LocalQueueNamingIPPPrinter MakeModel

          Set DNSSDBasedDeviceURIs to "Yes" if cups-browsed should use
          DNS-SD-service-name-based device URIs for its local queues,
          as CUPS also does. These queues use the DNS-SD service name
          of the discovered printer. With this the URI is independent

     Page 9                       Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

          of network interfaces and ports, giving reliable connections
          to always the same physical device. This setting is the

          Set DNSSDBasedDeviceURIs to "No" if cups-browsed should use
          the conventional host-name/IP-based URIs.

          Note that this option has only influence on URIs for
          printers discovered via DNS-SD, not via legacy CUPS
          broewsing or LDAP.  Those printers get always assigned the
          conventional URIs.

                  DNSSDBasedDeviceURIs Yes

          Set IPBasedDeviceURIs to "Yes" if cups-browsed should create
          its local queues with device URIs with the IP addresses
          instead of the host names of the remote servers. This mode
          is there for any problems with host name resolution in the
          network, especially also if avahi-daemon is only run for
          printer discovery and already stopped while still printing.
          By default this mode is turned off, meaning that we use URIs
          with host names.

          Note that the IP addresses depend on the network interface
          through which the printer is accessed. So do not use IP-
          based URIs on systems with many network interfaces and where
          interfaces can appear and disappear frequently.

          This mode could also be useful for development and

          If you prefer IPv4 or IPv6 IP addresses in the URIs, you can
          set IPBasedDeviceURIs to "IPv4" to only get IPv4 IP
          addresses or IPBasedDeviceURIs to "IPv6" to only get IPv6 IP

                  IPBasedDeviceURIs No
                  IPBasedDeviceURIs Yes
                  IPBasedDeviceURIs IPv4
                  IPBasedDeviceURIs IPv6

          Set CreateRemoteRawPrinterQueues to "Yes" to let cups-
          browsed also create local queues pointing to remote raw CUPS
          queues. Normally, only queues pointing to remote queues with
          PPD/driver are created as we do not use drivers on the
          client side, but in some cases accessing a remote raw queue
          can make sense, for example if the queue forwards the jobs
          by a special backend like Tea4CUPS.

                  CreateRemoteRawPrinterQueues Yes

          cups-browsed by default creates local print queues for each

     Page 10                      Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

          shared CUPS print queue which it discovers on remote
          machines in the local network(s). Set
          CreateRemoteCUPSPrinterQueues to "No" if you do not want
          cups-browsed to do this. For example you can set cups-
          browsed to only create queues for IPP network printers
          setting CreateIPPPrinterQueues not to "No" and
          CreateRemoteCUPSPrinterQueues to "No".

                  CreateRemoteCUPSPrinterQueues No

          Set CreateIPPPrinterQueues to "All" to let cups-browsed
          discover IPP network printers (native printers, not CUPS
          queues) with known page description languages (PWG Raster,
          PDF, PostScript, PCL XL, PCL 5c/e) in the local network and
          auto-create print queues for them.

          Set CreateIPPPrinterQueues to "Everywhere" to let cups-
          browsed discover IPP Everywhere printers in the local
          network (native printers, not CUPS queues) and auto-create
          print queues for them.

          Set CreateIPPPrinterQueues to "AppleRaster" to let cups-
          browsed discover Apple Raster printers in the local network
          (native printers, not CUPS queues) and auto-create print
          queues for them.

          Set CreateIPPPrinterQueues to "Driverless" to let cups-
          browsed discover printers designed for driverless use
          (currently IPP Everywhere and Apple Raster) in the local
          network (native printers, not CUPS queues) and auto-create
          print queues for them.

          Set CreateIPPPrinterQueues to "LocalOnly" to auto-create
          print queues only for local printers made available as IPP
          printers. These are for example IPP-over-USB printers, made
          available via ippusbxd(8). This is the default.

          Set CreateIPPPrinterQueues to "No" to not auto-create print
          queues for IPP network printers.

          If queues with PPD file are created (see IPPPrinterQueueType
          directive below) the PPDs are auto-generated by cups-browsed
          based on properties of the printer polled via IPP. In case
          of missing information, info from the Bonjour record is used
          asd as last mean default values.

          If queues without PPD (see IPPPrinterQueueType directive
          below) are created clients have to IPP-poll the capabilities
          of the printer and send option settings as standard IPP
          attributes. Then we do not poll the capabilities by
          ourselves to not wake up the printer from power-saving mode
          when creating the queues. Jobs have to be sent in one of

     Page 11                      Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

          PDF, PWG Raster, or JPEG format. Other formats are not

          This functionality is primarily for mobile devices running
          CUPS to not need a printer setup tool nor a collection of
          printer drivers and PPDs.

                  CreateIPPPrinterQueues No
                  CreateIPPPrinterQueues LocalOnly
                  CreateIPPPrinterQueues Everywhere
                  CreateIPPPrinterQueues AppleRaster
                  CreateIPPPrinterQueues Everywhere AppleRaster
                  CreateIPPPrinterQueues Driverless
                  CreateIPPPrinterQueues All

          If cups-browsed is automatically creating print queues for
          native IPP network printers ("CreateIPPPrinterQueues Yes"),
          the type of queue to be created can be selected by the
          "IPPPrinterQueueType" directive. The "PPD" (default) setting
          makes queues with PPD file being created. With "Interface"
          or "NoPPD" the queue is created with a System V interface
          script (Not supported with CUPS 2.2.x or later). "Auto" is
          for backward compatibility and also lets queues with PPD get

                  IPPPrinterQueueType PPD
                  IPPPrinterQueueType NoPPD
                  IPPPrinterQueueType Interface
                  IPPPrinterQueueType Auto

          The NewIPPPrinterQueuesShared directive determines whether a
          print queue for a newly discovered IPP network printer (not
          remote CUPS queue) will be shared to the local network or
          not. This is only valid for newly discovered printers. For
          printers discovered in an earlier cups-browsed session,
          cups-browsed will remember whether the printer was shared,
          so changes by the user get conserved. Default is not to
          share newly discovered IPP printers.

                  NewIPPPrinterQueuesShared Yes

          How to handle the print queues cups-browsed creates when
          cups-browsed is shut down:

          "KeepGeneratedQueuesOnShutdown No" makes the queues being
          removed. This makes sense as these queues only work while
          cups-browsed is running. cups-browsed has to determine to
          which member printer of a cluster to pass on the job.

          "KeepGeneratedQueuesOnShutdown Yes" (the default) makes the
          queues not being removed. This is the recommended setting
          for a system where cups-browsed is permanently running and

     Page 12                      Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

          only stopped for short times (like log rotation) or on
          shutdown. This avoids the re-creation of the queues when
          cups-browsed is restarted, which often causes a clutter of
          CUPS notifications on the desktop.

                  KeepGeneratedQueuesOnShutdown No

          If there is more than one remote CUPS printer whose local
          queue would get the same name and AutoClustering is set to
          "Yes" (the default) only one local queue is created which
          makes up a load-balancing cluster of the remote printers
          which would get this queue name (implicit class). This means
          that when several jobs are sent to this queue they get
          distributed between the printers, using the method chosen by
          the LoadBalancing directive.

          Note that the forming of clusters depends on the naming
          scheme for local queues created by cups-browsed. If you have
          set LocalQueueNamingRemoteCUPS to "DNSSD" you will not get
          automatic clustering as the DNS-SD service names are always
          unique. With LocalQueueNamingRemoteCUPS set to "RemoteName"
          local queues are named as the CUPS queues on the remote
          servers are named and so equally named queues on different
          servers get clustered (this is how CUPS did it in version
          1.5.x or older). LocalQueueNamingRemoteCUPS set to
          "MakeModel" makes remote printers of the same model get
          clustered. Note that then a cluster can contain more than
          one queue of the same server.

          With AutoClustering set to "No", for each remote CUPS
          printer an individual local queue is created, and to avoid
          name clashes when using the LocalQueueNamingRemoteCUPS
          settings "RemoteName" or "MakeModel" "@<server name>" is
          added to the local queue name.

          Only remote CUPS printers get clustered, not IPP network
          printers or IPP-over-USB printers.

                  AutoClustering Yes
                  AutoClustering No

          Load-balancing printer cluster formation can also be
          manually controlled by defining explicitly which remote CUPS
          printers should get clustered together.

          This is done by the "Cluster" directive:

                  Cluster <QUEUENAME>: <EXPRESSION1> <EXPRESSION2> ...
                  Cluster <QUEUENAME>

          If no expressions are given, <QUEUENAME> is used as the
          first and only expression for this cluster.

     Page 13                      Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

          Discovered printers are matched against all the expressions
          of all defined clusters. The first expression which matches
          the discovered printer determines to which cluster it
          belongs. Note that this way a printer can only belong to one
          cluster. Once matched, further cluster definitions will not
          checked any more.

          With the first printer matching a cluster's expression a
          local queue with the name <QUEUENAME> is created. If more
          printers are discovered and match this cluster, they join
          the cluster. Printing to this queue prints to all these
          printers in a load-balancing manner, according to to the
          setting of the LoadBalancing directive.

          Each expression must be a string of characters without
          spaces. If spaces are needed, replace them by underscores

          An expression can be matched in three ways:

              1. By the name of the CUPS queue on the remote server
              2. By make and model name of the remote printer
              3. By the DNS-SD service name of the remote printer

          Note that the matching is done case-insensitively and any
          group of non-alphanumerical characters is replaced by a
          single underscore.

          So if an expression is "HP_DeskJet_2540" and the remote
          server reports "hp Deskjet-2540" the printer gets matched to
          this cluster.

          If "AutoClustering" is not set to "No" both your manual
          cluster definitions will be followed and automatic
          clustering of equally-named remote queues will be performed.
          If a printer matches in both categories the match to the
          manually defined cluster has priority. Automatic clustering
          of equally-named remote printers is not performed if there
          is a manually defined cluster with this name (at least as
          the printers do not match this cluster).


          To cluster all remote CUPS queues named "laserprinter" in
          your local network but not cluster any other equally-named
          remote CUPS printers use (Local queue will get named

                  AutoClustering No
                  Cluster laserprinter

          To cluster all remote CUPS queues of HP LaserJet 4050

     Page 14                      Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

          printers in a local queue named "LJ4050":

                  Cluster LJ4050: HP_LaserJet_4050

          As DNS-SD service names are unique in a network you can
          create a cluster from exactly specified printers (spaces
          replaced by underscores):

                  Cluster hrdep: oldlaser_@_hr-server1 newlaser_@_hr-server2

          The LoadBalancing directive switches between two methods of
          handling load balancing between equally-named remote queues
          which are represented by one local print queue making up a
          cluster of them (implicit class).

          The two methods are:

          Queuing of jobs on the client (LoadBalancing QueueOnClient):

          Here we queue up the jobs on the client and regularly check
          the clustered remote print queues. If we find an idle queue,
          we pass on a job to it.

          This is also the method which CUPS uses for classes.
          Advantage is a more even distribution of the job workload on
          the servers (especially if the printing speed of the servers
          is very different), and if a server fails, there are not
          several jobs stuck or lost. Disadvantage is that if one
          takes the client (laptop, mobile phone, ...) out of the
          local network, printing stops with the jobs waiting in the
          local queue.

          Queuing of jobs on the servers (LoadBalancing

          Here we check the number of jobs on each of the clustered
          remote printers and send an incoming job immediately to the
          remote printer with the lowest amount of jobs in its queue.
          This way no jobs queue up locally, all jobs which are
          waiting are waiting on one of the remote servers.

          Not having jobs waiting locally has the advantage that we
          can take the local machine from the network and all jobs get
          printed.  Disadvantage is that if a server with a full queue
          of jobs goes away, the jobs go away, too.

          Default is queuing the jobs on the client as this is what
          CUPS does with classes.

                  LoadBalancing QueueOnClient
                  LoadBalancing QueueOnServers

     Page 15                      Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

          With the DefaultOptions directive one or more option
          settings can be defined to be applied to every print queue
          newly created by cups-browsed. Each option is supplied as
          one supplies options with the "-o" command line argument to
          the "lpadmin" command (Run "man lpadmin" for more details).
          More than one option can be supplied separating the options
          by spaces. By default no option settings are pre-defined.

          Note that print queues which cups-browsed already created
          before remember their previous settings and so these
          settings do not get applied.

                  DefaultOptions Option1=Value1 Option2=Value2 Option3 noOption4

          The AutoShutdown directive specifies whether cups-browsed
          should automatically terminate when it has no local raw
          queues set up pointing to any discovered remote printers or
          no jobs on such queues depending on AutoShutdownOn setting
          (auto shutdown mode). Setting it to "On" activates the
          auto-shutdown mode, setting it to "Off" deactivates it (the
          default). The special mode "avahi" turns auto shutdown off
          while avahi-daemon is running and on when avahi-daemon
          stops. This allows running cups-browsed on-demand when
          avahi-daemon is run on-demand.

                  AutoShutdown Off
                  AutoShutdown On
                  AutoShutdown avahi

          The AutoShutdownOn directive determines what event cups-
          browsed considers as inactivity in auto shutdown mode.
          "NoQueues" (the default) means that auto shutdown is
          initiated when there are no queues for discovered remote
          printers generated by cups-browsed any more. "NoJobs" means
          that all queues generated by cups-browsed are without jobs.

                  AutoShutdownOn NoQueues
                  AutoShutdownOn NoJobs

          DebugLogFileSize defines the maximum size possible (in
          KBytes) of the log files (cups-browsed_log and cups-
          browsed_previous_logs) that is created using cups-browsed in
          the debugging mode.  Setting its value to 0 would turn off
          any restriction on the size of the file.

                  DebugLogFileSize 300

          The AutoShutdownTimeout directive specifies after how many
          seconds without local raw queues set up pointing to any
          discovered remote printers or jobs on these queues cups-
          browsed should actually shut down in auto shutdown mode.
          Default is 30 seconds, 0 means immediate shutdown.

     Page 16                      Plan 9             (printed 5/26/22)

     cups-browsed.conf(5)     (29 June 2013)      cups-browsed.conf(5)

                  AutoShutdownTimeout 20

          NotifLeaseDuration defines how long the D-BUS subscription
          created by cups-browsed in cupsd will last before cupsd
          cancels it. The default value is 1 day in seconds - 86400.
          The subscription renewal is set to happen after half of
          NotifLeaseDuration passed. The D-BUS notifications are used
          for watching over queues and doing specific actions when a
          D-BUS notification comes.

                  NotifLeaseDuration 86400



          The authors of cups-browsed are listed in

          This manual page was written for the Debian Project, but it
          may be used by others.

     Page 17                      Plan 9             (printed 5/26/22)