YaST Printer
YaST2 - Printer Configuration
Vendor: openSUSE
Developer: User:Jsmeix and openSUSE:YaST_team
License: GPL
This article is for CUPS up to version 2.x under Linux with the traditional filtering system and backends there.
The nowadays driverless printing workflow is rather different.
About
The YaST Printer module is part of YaST used for the printer installation and configuration in openSUSE. The YaST Printer module can be found in the YaST Control Center under Hardware -> Printer.
If you do not have a graphical interface available, you can also use YaST in text mode and configure the same features, in particular when you are logged in from remote via a slow text-only connection.
Since openSUSE 11.1 the YaST printer module was made completely anew, see Archive:YaST Printer redesign. Therein see in particular the sections "Basic Design Ideas" and "Basic Implementation Principles".
Features
- Set up directly connected printers (usually USB printers)
- Set up network printers (printers with a built-in network interface)
- Configure how to print in the network (also to non-Linux systems)
- Install openSUSE printer driver software packages
Printing Basics
A printer device is not used directly by user application programs but via a print queue. When various application programs submit print jobs simultaneously, these jobs are put in a queue and are sent one after the other to the printer device.
The Common Unix Printing System (CUPS) is the server between user and printer. Application programs send their printing output to CUPS which queues the print jobs and processes them ony by one.
For each print job CUPS runs the printer driver and sends the printer driver's output to the printer device. The printer driver produces the final printer-specific data which actually lets the printer print.
To do this, CUPS must know which printer driver belongs to the printer device and how the printer device is connected to the computer so that CUPS can send printing data to the printer device.
Therefore "set up a printer" means to "set up a print queue" and tell CUPS for the particular queue:
- How the printer device is connected to the computer.
- Which printer driver belongs to the printer device.
See Concepts printing for more information about printing basics.
Requirements for Printing
- The printer must be supported by openSUSE, see SDB:Installing a Printer
- Check that the printer is properly connected to the computer, and that it is powered on.
- A minimal openSUSE system installation does not include the necessary software packages for printing. Ensure that CUPS and the rest of the printing system is installed using the YaST Software Management module. In particular since openSUSE Leap ensure that also the "cups-filters" RPM packages are installed because the "cups-filters" are required for PDF print job processing, cf. "PDF: The recent printing data format" at Concepts printing and see also the "Printing System: Improvements and Incompatible Changes" section in the various release notes e.g.
- for SUSE Linux Enterprise 12 at https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12/
- for openSUSE Leap 42.1 at https://doc.opensuse.org/release-notes/x86_64/openSUSE/Leap/42.1/
- for openSUSE Leap 42.2 at https://doc.opensuse.org/release-notes/x86_64/openSUSE/Leap/42.2/
Automated Printer Configuration
Up to openSUSE 13.2 the YaST printer module was run when the openSUSE system was installed. At this time the YaST printer module attempts to set up printers in an automated way. Since openSUSE Leap the YaST printer module should no longer be run automatically when the openSUSE system is installed. Since openSUSE 11.4 the automated printer configuration can also be triggered from the YaST printer module in the running system via "Automatic Configuration". For each autodetected local connected printer, YaST tests if there exists already a configuration. If there is not yet a configuration, YaST tries to find a matching driver for the printer and if one is found, the printer is configured. The resulting configuration is basically the same as if one would have selected an autodetected printer in the "Add New Printer Configuration" dialog and accepted whatever preselected values there (see below).
A directly connected printer which is autodetected may also get configured full automated by other software and/or a printer setup tool may be launched.
There are two other software packages which implement full automated printer setup without any user action when a USB printer is connected to the system and when it is disconnected from the system.
- Up to openSUSE 11.1 there was the package cups-autoconfig which is not part of CUPS but a separated tool to configure autodetected USB printers for CUPS.
- Since openSUSE 11.2 cups-autoconfig is replaced by udev-configure-printer where full automated USB printer setup happens via udev rules in the "70-printers.rules" file.
Full automated printer setup depends on which one of those software packages is installed. If full automated printer setup without user action is not wanted, the respective software package should be removed.
There are various printer setup tools.
- YaST printer module
- Gnome printer setup tool (system-config-printer)
- KDE printer setup tool
- CUPS web frontend (http://localhost:631/admin)
- CUPS command line tools (lpadmin and lpinfo)
- HP's HPLIP driver setup tool "hp-setup" (only for HP devices)
Which one may get launched automatically depends on which software packages are installed, which printer autodetection software is running, and which desktop environment is running.
Manual Printer Configuration with the YaST Printer Module
The main purpose of the YaST printer module is the manual configuration. "Manual" means that you have full control what is set up. There are no silently working hidden automatisms which result whatever the automatism "thinks" is best for you. But "manual" does not mean that you are left totally on your own. When there are several choices available, the YaST printer module does reasonable effort attempts to preselect the item which seems to be most appropriate. In most cases it should work well to accept what is preselected but you are still free to select another choice. Only when the reasonable effort attempt fails to determine a choice which seems to be appropriate, you are forced to make a decision. This may look annoying but it makes you at least aware of what is actually set up which avoids that you get unnoticed a random printer setup where you are clueless about what could be wrong with the setup if printing does not work.
When whatever kind of automated printer setup did not result a working printer configuration, the automatism may leave you alone. In such a case you should try if a manual configuration with the YaST printer module helps. It may at least indicate the trouble spot when it fails to preselect anything which seems to be appropriate.
The Printer Configurations Dialog
When the YaST printer module started, it shows the printer configurations. This dialog shows an overview of all available print queues - both local and remote queues - at a glance and it shows also all possible configuration tasks.
There is a difference between "local/remote queue" and "local/remote printer":
- "Local queue" means a print queue which is configured on the local computer (strictly speaking the computer where the YaST printer module runs) which is usually the computer where the user sits in front of.
- "Remote queue" means a print queue which exists on whatever computer in the network or on whatever network printer.
- "Local printer" means a printer device which is directly connected to the local computer (usually a USB printer).
- "Remote printer" means a printer device which is not directly connected to the local computer (usually a printer with a built-in network interface).
Only local print queues can be configured with the YaST printer module. But local print queues can be set up both for local printers and for remote printers. It does not matter how the printer device is connected but it does matter whether or not the print queue configuration exists on the computer where the YaST printer module runs.
Each print queue has an arbitrary queue name. Usually the queue name is somehow similar to the printer model name or an abbreviation of the printer model name plus a hint which kind of printout it results or other additional information, for example:
- ACME_FunPrinter_1000
- FP1000_mono
- FP1000_color
- FP1000_duplex
- FP1000_mono_room123
- FP1000_color_room123
- FP1000_mono_room456
- FP1000_color_duplex_room456
Only letters (a-z and A-Z), numbers (0-9), and the underscore '_' are allowed for the queue name and it must start with a letter. Case is not significant for CUPS, e.g. "FP1000_mono" and "fp1000_mono" are considered to be the same name.
Optionally a print queue may have a textual description. Usually this describes the printer model and which printer driver is used or other available features, for example:
- ACME FunPrinter 1000 PCL
- ACME FunPrinter 1000 PostScript
- ACME FunPrinter 1000 PostScript with duplex unit
Optionally a print queue may have a textual location. This describes where the printer device is located, for example:
- first floor room 23
- fourth floor room 56
Application programs may neither show the textual description nor the textual location. Therefore the queue name alone should provide sufficient information so that the user can notice which kind of printout is produced and in particular for bigger locations where the printer device is located.
One of the print queues may be set to be used by default. Application programs should use such a system default print queue if no other print queue was specified by the user. But there is no such thing as the "one and only" default queue. Beside a system default queue any user can maintain his own default queue setting and furthermore any application program may implement its own particular way of default queue setting (e.g. the application may remember the previously used queue), see SDB:Print Settings with CUPS.
The print queue status is one of the following:
- Ready: The queue accepts print jobs and printing is enabled.
- Printout disabled: The queue accepts print jobs but does not print them.
- Rejecting print jobs: The queue does not accept new print jobs but printing of those jobs which are already in the queue continues.
- Rejecting print jobs, printout disabled: The queue neither accepts new print jobs nor does it print those jobs which are already in the queue.
In particular for bigger locations where many users continuosly submit print jobs when printer device maintenance should be done, the administrator would only disable printing so that the users can still submit print jobs, then do the printer device maintenance, and finally re-enable printing. In contrast when the printer device should be removed and its print queue should be deleted, the administrator would only reject print jobs so that the users cannot submit new print jobs but printing of those jobs which are already in the queue continues until the queue is empty. Then the queue can be deleted and finally the printer device can be removed. If an unidentified problem with the print queue or the printer device appears, the administrator may first of all reject print jobs and disable printing to stop any activity and then have a look what the actual problem is.
The following configuration tasks are possible from the Printer Configurations dialog:
- Click the "Add" button to set up a new print queue. This launches the "Add New Printer Configuration" dialog.
- Select an existing local print queue and click the "Edit" button to modify the print queue configuration. This launches the "Modify" dialog.
- Select an existing local print queue and click the "Delete" button to delete the print queue.
- Select "Print via Network" to configure how you print from your local computer on remote queues or remote printers in the network.
- Select "Share Printers" to configure how other users who work on remote computers could access your local print queues via network.
Each configuration task returns to the Printer Configurations dialog where you could do more configuration tasks or exit the YaST printer module via the "OK" button.
The Add New Printer Configuration Dialog
Remember the printing basics: Set up a printer means to set up a print queue and tell CUPS:
- How the printer device is connected.
- Which printer driver belongs to the printer device.
- What print queue name it should get.
Accordingly in the Add New Printer Configuration dialog you have to
- Select the connection of the matching printer device.
- Find and assign a suitable printer driver.
- Set a queue name.
Connection
The connection determines which way data is sent to the printer device. If a wrong connection is selected, no data can be sent to the device so that there cannot be any printout. If an improper connection is selected, it may not work reliable to send data to the device so that printouts could be disrupted.
For one same physical connection (e.g. USB or network cable) there could be several connection methods. If a printer device can be autodetected via more than one connection method, it could be shown for each connection method. This means that one same printer device could be listed several times when it is accessible via several ways.
In particular HP USB printers are often accessible both via the generic "usb:/..." and the HP-specific "hp:/..." connection. The latter is provided by HP's driver package HPLIP. For plain printing both connection methods should work but for anything else (e.g. device status via HP's "hp-toolbox", or scanning with a HP all-in-one device) the "hp:/..." connection must be used.
The YaST printer module does not implement any printer autodetection on its own. It only shows those printer connections which were already autodetected by CUPS (i.e. what the CUPS command line tool "lpinfo -l -v" shows when you run it as root, see SDB:CUPS in a Nutshell). When CUPS cannot detect a local printer connection, it cannot send data to it so that it cannot print. Therefore it would not make sense when the YaST printer module would somehow show local printer connections which are not autodetected by CUPS.
Initially only connections for local printers (i.e. USB printers that are accessible via the generic "usb:/..." connection and printers that are accessible via the HP-specific "hp:/..." connection) are shown and for HP devices the "hp:/..." connection is preferred. Clicking the "Detect More" button shows all connections which are autodetected by CUPS. In particular some "exceptional" printing devices that are connected via USB but do not behave as regluar USB printers are not accessible via the generic "usb:/..." connection method but require a special other connection method. The various connection methods are provided by so called CUPS backends (cf. "What is a CUPS backend and how does it work?" in SDB:CUPS in a Nutshell). When for "exceptional" printing devices a matching "exceptional" CUPS backend is there, that backend could autodetect those devices. In the end it means that for "exceptional" printing devices clicking the "Detect More" button may show them.
If a local printer is not shown after clicking the "Detect More" button, the device cannot be autodetected by CUPS. In this case the root cause is usually a low-level communication problem with the device (perhaps the printer may only need to be switched on). For example when a USB printer is not autodetected by CUPS but listed in the output of the "lsusb" command, one of the possible reasons is that the kernel module "usblp" is not loaded, see SDB:Installing a Printer.
It depends on the particular printer model whether or not a network printer can be autodetected by CUPS. Usually this works only for those network printers which can be detected in the local network environment via some generic SNMP queries (which works usually for HP and Kyocera printers with an original built-in network interface from the manufacturer).
Autodetected network printers are shown with a "socket:/..." connection which is the simplest, fastest, and generally the most reliable way to send data to a network printer, see SDB:Printing via TCP/IP network.
If a network printer cannot be autodetected by CUPS or when you like to print via a print server machine (e.g. when printing via a Windows or Samba server or when printing via a traditional Unix server), you have to specify the connection manually via the "Connection Wizard". Unfortunately its name is somehow inappropriate because there are neither "wizards" nor any other kind of obscure "magic" in the YaST printer module, see Archive:YaST Printer redesign.
Driver
The driver determines that the right data is produced for the specific printer model. If a wrong driver is assigned, wrong data is sent to the printer which results bad looking printout, chaotic printout, or no printout at all.
Initially the input field for the driver search string is preset with the autodetected model name of the currently selected connection and those drivers where the driver description matches the model name are shown by default. If driver descriptions match the autodetected model name and if all matching driver descriptions seem to belong to the same model, the driver descriptions are sorted in a special way so that the most reasonable driver should be listed topmost and this one is automatically preselected.
If no driver is automatically preselected, you must manually find and select an appropriate driver. On the other hand if a driver was automatically preselected, it does not necessarily mean that this driver is a reasonable driver for your particular needs. Strictly speaking an automatically preselected driver may not work at all for your particular printer model. The reason is that the automated driver selection can only work based upon comparison of strings (the autodetected model name and the driver descriptions) so that the result can be only a best-guess proposal how to set up your particular printer model. Therefore check if the currently preselected values make sense and feel free to play around and modify the settings to what you know what works best for your printer. If no driver description matches the autodetected model name it does not necessarily mean that there is no driver available for the model. Often only the model name in the driver descriptions is different from the autodetected model name. Therefore you can enter whatever you like as driver search string and search through all available driver descriptions.
If you do not find a driver description which looks reasonable for your printer model or a driver description which you expect to be available, you may click the "Driver Packages" button to check whether or not you may have to install more printer driver software packages. See Concepts printing therein the section "openSUSE printer driver software packages". Regarding "Version upgrades for printer driver packages" see SDB:Installing a Printer.
If you have a PostScript printer, you do not need printer driver software, see Concepts printing. PostScript printers need only a PostScript Printer Description (PPD) file which matches the particular model. For PostScript printers the manufacturers provide a PPD file for each particular printer model. To set up a PostScript printer, use the PPD file from the manufacturer. Many such PPD files are provided by openSUSE which are available in the same way as all the other drivers. If openSUSE does not provide a PPD file for your particular PostScript printer, you should get the matching PPD file from your printer manufacturer. Often manufacturers provide their PPD files somewhere in their software packages for their printers or for download on their web site. When you got a PPD file from your printer manufacturer, click the "Driver Packages" button. In the new dialog there is a "Make a Printer Description File Available" item. When a PPD file is not located in the /usr/share/cups/model/ directory, it is not available to set up a printer configuration with it. Therefore you can specify the full path of your PPD file which can be located elsewhere on your system to get it installed in the /usr/share/cups/model/ directory. Afterwards your PPD file is available in the same way as all the other drivers. To set up your PostScript printer with your PPD file you may have to manually search for your PPD file through all available driver descriptions so that you can assign the PPD file in the same way as any other driver (see above).
Usually the default driver option settings should be reasonable so that the driver works for your particular printer model. Some driver option settings must match your particular printer. In particular the default paper size setting of the driver must match the paper which is actually loaded in your printer. You can either explicitly select A4 or Letter as default paper size or select nothing to use the built-in default paper size of the driver which is also the fallback if the driver neither supports A4 nor Letter (for example a driver for a small-format photo printer). If you like to adjust other driver options except A4 or Letter, you must first set up the queue and then in a second step you can adjust all driver options via the "Modify" dialog.
Queue Name
Application programs do not show printer devices but print queues. Only letters (a-z and A-Z), numbers (0-9), and the underscore '_' are allowed for the queue name and it must start with a letter, see above.
Default Queue
One of the print queues may be set to be used by default. But have in mind that there is no such thing as the "one and only" default queue, see above.
HP Devices
An alternative way to set up HP devices is to run "hp-setup". HP's own tool "hp-setup" provides setup support in particular for HP printers and HP all-in-one devices which require a proprietary driver plugin to be downloaded from HP and installed in the right way on a particular end-user's system. Furthermore 'hp-setup' can provide better setup support for HP network printers and HP all-in-one network devices because HP's own tool can implement special handling for special HP network devices. For details see SDB:How to set-up a HP printer.
The Modify Dialog
In the Modify dialog you can change connection and driver for a print queue in the same way as in the Add New Printer Configuration dialog but you cannot modify the print queue name.
CUPS does not support to change a print queue name and the YaST printer module works in compliance with CUPS, see Archive:YaST Printer redesign therein the section "Strict Compliance With CUPS".
The queue name is a value with too many relations to whatever else that it would be possible (with reasonable effort) to change this value. Think about issues like
- currently active printing jobs for the queue,
- pending jobs for the queue,
- classes which have the queue as a member,
- instances for the queue,
- ...
(Classes and instances are advanced topics which are not described here.)
There seem to be printer config tools which fake as if a queue rename was possible but what those tools actually do is to delete it and create a new queue but it is unknown what happens in the above mentioned cases.
Connection, Driver, and Driver Options
When you exchange the currently used connection by another one, the input field for the driver search string is preset with the autodetected model name of the new selected connection and those drivers where the driver description matches the model name are shown by default. You can enter whatever you like as driver search string and search through all available driver descriptions.
You can either select another driver and modify its driver option settings later or keep the currently used driver and modify its driver option settings.
When you exchange the currently used driver by another one, you must first apply this change to the print queue so that the new driver is used for the queue (i.e. you must finish the "Modify" dialog as a first step) and then in a second step you can adjust all driver options by using the "Modify" dialog again.
Usually it is best to leave the driver option defaults because the defaults should be reasonable for usual printing. Additionally the print dialogs in usual application programs show the driver options too so that each user can specify the right driver options for each individual printout.
When you modify the driver options for the currently used driver, the "Driver Options" dialog is launched which returns to the "Modify" dialog. Some driver option settings must match your particular printer. For example the default paper size setting of the driver must match the paper which is actually loaded in your printer. For other driver option settings you can choose what you like. For example any choice of the available printing resolutions should work for the particular driver. Nevertheless it may happen that your particular printer fails to print with high resolution. For example when you have a laser printer which has insufficient built-in memory to process high resolution pages, see SDB:Laser Printer Does Not Print Properly Or Does Not Print At All.
Description and Location
In contrast to connection and driver where you must select the right one, you are free to enter arbitrary strings for the description text and location. Application programs often show description and location in the print dialog. To make sure that those strings look correct in any language which a particular user of a particular application program may use, it is safe when you use only plain ASCII text without special characters e.g. only ASCII letters (a-z and A-Z), ASCII numbers (0-9), and the ASCII space character (20 hex). Have a look at SDB:Plain Text versus Locale.
Default Queue and Status
Finally there are the check boxes
- Use as Default
- Accept Print Jobs
- Enable Printing
See the above Printer Configurations dialog description what this means.
The Print via Network Dialog
Usually CUPS is used to print via network. By default CUPS uses its so called "Browsing" mode to make printers available via network, see SDB:CUPS in a Nutshell therein the section "Intrinsic design of CUPS <= 1.5 for printing in the network". In this case remote CUPS servers would publish their printers via network and accordingly on your host the CUPS daemon process (cupsd) must run which is listening for incomming information about published printers.
If you can access remote CUPS servers for printing but those servers do not publish their printer information via network or when you cannot accept incomming information about published printers (e.g. because you must have firewall protection for the network zone in which printers are published), you can request printer information from CUPS servers (provided the CUPS servers allow your access). For each CUPS server which is requested, a cups-polld process is launched by the CUPS daemon process (cupsd) on your host. Regarding firewall see SDB:CUPS and SANE Firewall settings.
If you print only via network and if you use only one single CUPS server, there is no need to use CUPS Browsing and have a CUPS daemon running on your host. Instead it is simpler to specify the CUPS server and access it directly.
You have to set up an appropriate print queue on your host if there is no CUPS server in your network, or when you must access a network printer directly, or when you use another kind of print server e.g. when printing via a Windows or Samba server or when printing via a traditional Unix server.
Usually CUPS should be set up to use its so called "Browsing" mode to make printers available via network, see the Print via Network dialog description above. In this case CUPS servers publish their local print queues via network and accordingly on CUPS client systems the CUPS daemon process (cupsd) must run which is listening for incomming information about published printers.
First of all CUPS client systems must be allowed to access the CUPS server.
Then specify whether or not printers should be published to the clients.
It is not required to publish printers in any case. If you have only one single CUPS server, there is no need to use CUPS Browsing. Instead it is simpler to specify the CUPS server on the client systems (via the Print via Network dialog) so that the clients access the server directly.
Regarding firewall see SDB:CUPS and SANE Firewall settings.