CUPS – Known Issues

Brandon Nielsen, Zdenek Dohnal Verze F31 onwards Last review: 2021-06-16

Here are several known issues, which arise with certain circumstances, and there isn’t general solution or upstream didn’t want to add the solution to its project:

cups-browsed

Cannot print due 'No destination hostname provided by cups-browsed, is it running?'

cups-browsed sometimes loses connection to print server (usually with old ones, like cups-1.4.2) when laptop changes network connection (change of WiFi network or after hibernate/suspend). You can make printing working again with cancelling your jobs and restarting cups-browsed by

$ cancel -a
$ sudo systemctl restart cups-browsed

cups-browsed consumes large amount of CPU

Creating local printer queues takes long time for some printers with larger PPD file, so timeout of http connection will time out and it creates infinite loop of creating local printer queues. To solve this issue, please add

HttpLocalTimeout N
HttpRemoteTimeout N

into /etc/cups/cups-browsed.conf, where N is number of seconds after which connection is timed out. Then restart cups-browsed service. This option is currently in Fedora 27 and above.

[SINCE FEDORA 27] cups-browsed creates different printer queue names than before

This issue is connected to remote cups queues, which are advertised by older CUPS version (usually below cups-1.5, e.g. RHEL 6). Cups-browsed creates local print queues named by printer’s DNS-SD ID by default and naming by remote cups queue is enabled again by adding:

LocalQueueNamingRemoteCUPS RemoteName

into /etc/cups/cups-browsed.conf and restart cups-browsed service.

cups-filters

Printing takes a long time or doesn’t print at all

When your printer needs a lot of time to do printing (from your POV) or doesn’t print at all (some Xerox printers have such problems with gs renderer, so they are working again only with pdftops renderer), you can try to change the default postscript renderer. The default renderer in Fedora for most printers is gs filter from Ghostscript, but we have pdftops filter from Poppler for Brother, Minolta and Konica Minolta printers - this setup is called hybrid.

Other available renderer setups are gs (from Ghostscript), pdftops and pdftocairo (from Poppler), mupdf (from mupdf) and acroread (from adobe reader, not in Fedora official repositories), then you can set different default renderer for your print queue like this:

# lpadmin -p <printer-name> -o pdftops-renderer-default=gs/pdftops/pdftocairo/mudpf/acroread/hybrid

BEWARE: Most 'slow' printing issues are caused by PDF creating applications, which generates bad PDF file - and that bad generated PDF file is mostly the core of problem. To sum it up, slow printing issue can rise again with different PDF file, then it is on user’s decision: if he wants to print fast and probably sometimes change the default renderer, or slow printing is not such critical issue.

CUPS

[Fixed in F33 and later] Firefox, Evince (PDF viewer), GVim, Gedit, Gnome Control Center show a 'dummy'/duplicate print queue, which doesn’t work

This bug is connected to every application which uses GTK print dialog. GTK dialog decided to take information about available from two sources - mDNS messages from Avahi and CUPS - this dummy/duplicate print queue is a print queue GTK created in its dialog based on Avahi messages, but it doesn’t exist in CUPS, because no one created it, and later GTK behaves like it exists in CUPS. So every time an user wants to print, GTK sends a request to CUPS for this queue, but it gets dropped by CUPS because the queue doesn’t exist.

The feature which GTK is trying to do here is called CUPS temporary queues - GTK developers is currently working on a immediate fix in this bugzilla. The future plan is to use cpdb-backend-cups backend in GTK, but right now we are focusing on the intermediate fix.

CUPS doesn’t take nicely some kinds of FQDN

CUPS sometimes has problems with some kinds of FQDN - that means when you use FQDN in BrowsePoll directive in /etc/cups/cups-browsed.conf, CUPS doesn’t recognize it as valid hostname - it is solved by adding:

ServerAlias your.own.fully.qualified.hostname.com

into /etc/cups/client.conf and restarting cups service.

There are less options available if the device is used as driverless than with a classic driver

The similar situation can happen with sane-airscan supported scanners. Some devices declare less options via protocols - f.e. IPP 2.0+, WSD, eSCL - which support driverless solutions than via classic drivers. Usually it is an issue with device’s firmware, which can be verify by checking the output of the following command:

$ ipptool -tv <ipp_device_uri> get-printer-attributes.test

The commands does the same IPP request which is done when a temporary queue appears in the print dialog or when you install the queue permanently. The printer options are set from the IPP response for this request, so if the option is missing in the response, CUPS cannot generate such a printer option. The solution is to try to update the device firmware, report the issue to the device manufacturer and at bugzilla with logs.

[F33+] Printing via IPPS doesn’t work

Fedora 33 came up with a raised bar regarding crypto-policies, so SSL and older TLS protocols are disabled on system level. The change breaks printing via IPPS to devices which don’t support newer protocols. You can set back legacy crypto support in crypto-policies via:

$ sudo update-crypto-policies --set DEFAULT:FEDORA32

The policy change transitionally has an impact on devices found by cups-browsed, because the daemon prefers IPPS uris if they are reported as available by printer/server.

HPLIP

First I would like to mention that we are not responsible for support HPLIP, which is downloaded and installed from HP website. Please install hplip rpms from official Fedora repositories at most cases.

Hp-plugin: file does not match its checksum. File may have been corrupted or altered

This common error is mostly caused by external causes (server outage, network outage), when wget tries to download plugin, but it returns only error message. It is connected with message:

Plugin download failed with error code = N

where N is return value of wget (man wget), which is used for downloading proprietary plugin. Solutions for this issue may vary - you can wait until servers go up again or try to install plugin, which you download manually from http://www.openprinting.org/download/printdriver/auxfiles/HP/plugins/ (select "Select and install an existing local copy of the plug-in file" during hp-setup or hp-plugin).

Unable to load cupsext

This error can occur when hplip is installed from HP website, or its dependencies are mixed python2 and python3 packages or installed by pip. This is solved by removing all hplip packages (hplip, hplip-gui, hplip-libs, hplip-common, libsane-hpiao) and installing them again all from repositories.

Missing hplip-gui

GUI tools and GUI parts of HP commands are moved to hplip-gui subpackage, because the main package can work without GUI, so the main package is smaller. The outcome of this decision is HP commands need to be run with -i option for interactive mode, or hplip-gui subpackage needs to be installed.

Tools, which need to be run with -i option for CLI or need to have hplip-gui installed for GUI:

hp-align
hp-clean
hp-colorcal
hp-diagnose_queues
hp-fab
hp-firmware
hp-info
hp-plugin
hp-sendfax
hp-setup
hp-testpage
hp-unload

Tools, which are in hplip-gui:

hp-check
hp-print
hp-systray
hp-toolbox
hp-devicesettings
hp-faxsetup
hp-linefeedcal
hp-makecopies
hp-printsettings
hp-wificonfig

HP printer isn’t discovered, doesn’t print or doesn’t print well

Some HP printers don’t work well with URIs provided by CUPS (dnssd, usb, ipp) or they need proprietary plugin from HP, which cannot be in Fedora because of licensing issues. For such printers please try to run:

hp-setup -i -g

for interactive mode, or:

hp-setup -g

for graphic mode. This command installs HP printers and HP scanners. If you have issue about HP printer/HP scanner, which isn’t discovered, doesn’t print or doesn’t print well, please try to install it by hp-setup, if it helps. If it doesn’t help, please file a bugzilla, attach output of hp-setup and mention that you tried hp-setup.

Device which needs plugin does not work after HPLIP update

Devices which need plugin can stop to work after update to newer HPLIP version - it is due the check for plugin version in the code. The check is necessary to prevent inconsitencies when new features in open sourced HPLIP need new proprietary libraries from plugin. To make your printer work again, just download and install plugin again with:

$ hp-plugin -i

Devices which require a binary plugin stopped to work on Fedora Silverblue/CoreOS

Devices which require a HP close source binary plugin need to have plugin installed every time you start/restart your PC by default. HP closed source script installs the plugins into a readonly directories, so the plugins are removed once you start/restart Fedora. The workaround is to try if your device supports driverless printing and scanning, try hplip-plugin package from RPMFusion or keep installing the plugin everytime you want to print.

golang-github-openprinting-ipp-usb

USB printer/scanner doesn’t work due a conflict on USB port

ipp-usb daemon keeps the USB port of IPP-over-USB device opened for any possible IPP communication in the future, which blocks the port for other drivers (f.e. HPLIP, gutenprint, sane-backends…​).

For printers the solution is to uninstall the queue with the driver by:

$ lpadmin -x <queue_name>

and start using the one from ipp-usb (as a CUPS temporary queue or install a permanent one - the default device uri is ipp://localhost:60000/ipp/print).

In case of scanners sane-airscan automatically picks up the virtual device from ipp-usb if the device is capable of using WSD or eSCL protocols. However, if the scanner had been supported by classic scanner driver such as hplip or sane-backends and is now claimed by ipp-usb because it supports IPP-over-USB driverless standard, the old scanner is still shown, but it won’t work for scanning due USB conflict. It happens because classic backends just list any device which they can find on USB interfaces and matches the description the backend supports, but backends don’t check whether they actually can communicate with the device until they try to open the USB port for scanning process itself. This becomes a problem for scanning applications, which automatically choose the previous scanner as a default choice for scanning (such as Simple Scan) - users have to pick a driverless scanner from the list of available scanners before they scan.

The scanner device discovered by classic SANE backends can be disabled from showing it among available scanners by commenting out its entry in backend’s configuration file located in /etc/sane.d or the whole backend name in /etc/sane.d/dll.conf//etc/sane.d/dll.d, f.e. Canon MF440 Series is reported by pixma and airscan backends, but only airscan works because it is a backend based on network protocol and USB interface is claimed by ipp-usb, so we will disable the pixma backend by commenting its line in /etc/sane.d/dll.conf:

$ cat /etc/sane.d/dll.conf
...
pint
#pixma
plustek
...

If ipp-usb created device doesn’t match your use case (the options you use are missing, the device doesn’t work even if it is IPP-over-USB supported), please report the issue together with logs from /var/log/ipp-usb/ directory at bugzilla. ipp-usb itself supports quirks, which allows you to set the daemon to ignore your device and you can switch back to a classic driver. The steps are following:

  • get the device model name f.e. Canon MF440 Series:

$ sudo ipp-usb check
Configuration files: OK
IPP over USB devices:
 Num  Device              Vndr:Prod  Model
   1. Bus 001 Device 005  04a9:2823  "Canon MF440 Series"
  • create a quirk file in /etc/ipp-usb/quirks directory in the format below:

$ cat /etc/ipp-usb/quirks/canon.conf
[Canon MF440 Series]
  blacklist = true
  • restart the ipp-usb service:

$ sudo systemctl restart ipp-usb

sane-airscan

There are less options available if the device is discovered by sane-airscan than with a classic driver

The similar situation can happen with everywhere or driverless printer models. Some devices declare less options via protocols - f.e. IPP 2.0+, WSD, eSCL - which support driverless solutions than via classic drivers. Usually it is an issue with device’s firmware, which can be verify in sane-airscan debug logs and network traffic. The solution is to try to update the device firmware, report the issue to the device manufacturer and at bugzilla with logs.