SDB:Installing a Printer

From openSUSE


Situation:

You want to install your printer. First, check that the prerequisites below are fulfilled.

Prerequisites

The printer is supported by openSUSE.

Information about printers supported by openSUSE:

  • HCL/Printers
  • Run the YaST printer module and check the list of models therein (you do not need to have a printer connected to do this, just click "Add" and set up a print queue for an imaginary printer).
  • Run as root the command "lpinfo -l -m | less" which shows information in all installed printer description files.
  • View the file /usr/share/doc/packages/ghostscript-library/catalog.devices which lists all printer drivers which are built into Ghostscript (which is a sub-set of the printers which are supported by openSUSE).

Information about printers supported by Linux (not necessaruily supported by openSUSE):

If you own a so called "GDI printer" (a printer that does not understand a standard printer language), it is probably not supported by Linux or only usable with restrictions. Look at the support database, especially the articles SDB:Purchasing a Printer and Compatibility.

When the printer is connected to the first parallel port the BIOS settings for the first parallel interface should be set as follows:

  • IO address 378 (hexadecimal)
  • Interrupt 7
  • Mode "Normal" or "SPP" or "Output-Only" (other modes may not work)
  • DMA is disabled (should be automatically switched off using the modes above)

Then you can test if the printer is accessible via the first parallel port /dev/lp0 using the following command (as root):

echo -en "\rHello\r\f" >/dev/lp0

When the printer is connected to the USB and when it is the only printer which is connected to the USB reload the kernel module for direct USB printer access (as root):

rmmod usblp
modprobe usblp

Then you can test if the printer is accessible as first USB printer via /dev/usb/lp0 using the following command (as root):

echo -en "\rHello\r\f" >/dev/usb/lp0

If the above "rmmod usblp" command did show an error message like "Module usblp does not exist in /proc/modules" the usblp kernel module was not loaded before so that you may try to unload the usblp kernel module with "rmmod usblp" after the test to go back to the state before the test.

The "echo ..." test should result one sheet with the word Hello printed on it. The printer must be able to print ASCII text directly without any additional printer driver software (in this case, the word Hello surrounded by the ASCII character \r, which initiates a carriage return, and followed by the ASCII character \f, which initiates a form feed).

Printers unable to print ASCII text are most likely GDI printers, but there are some printers that cannot print ASCII text but work with Linux anyway.

Further Information

SDB:Purchasing a Printer and Compatibility

SDB:GDI Printers

SDB:CUPS in a Nutshell

SDB:Printing via TCP/IP network

YaST/Modules/Printer

For all-in-one devices (i.e. when the printer has also a scanner device included) you have to set up the scanner unit separately, see SDB:Configuring Scanners from SUSE LINUX 9.2 and YaST/Modules/Scanner.