Sadly there are still various Windows-only printers (usually: GDI printers) available. This also applies to older printers without 64bit drivers for Windows. In general you should try hard to keep this kind of headaches away from you.
The following recipe describes a setup that makes even these printers usable in a mixed windows/linux/mac environment. The following steps are involved:
- attach the printer to a Windows host and configure it properly
- configure a simple virtual postscript printer that will redirect all its jobs through the Windows spooler to the other real printer
- optional: spread this virtual printer via CUPS to all other hosts in the network
This tutorial is based on Robert Harder's article Share a Windows Printer with a Mac.
Setup the real printer
Install and test
This should be really simple:
- plug in the printer
- install the driver
- print a test page
Optional: virtual USB handling
If your host is a virtual instance then you may need to pass through the USB device.
For KVM with libvirt you would do the following:
virsh edit WINDOWS_HOST
add the following lines to the devices section:
<hostdev mode='subsystem' type='usb' managed='no'> <source> <vendor id='0x0482'/> <product id='0x0012'/> </source> </hostdev>
the above USB identifiers refer to the Kyocera FS-720 GDI printer
use lsusb to find the USB identifiers of your specific printer
- stop and restart the virtual host
Setup a virtual postscript printer
Sadly the Windows printer spooler sends all incoming jobs directly to the printer. Thus it is not possible to transfer a postscript job to a remote shared Windows printer and let the Windows driver handle the conversion.
The virtual postscript printer will take for this. All clients will be configured to send nice postscript data. The virtual printer redirects this input to the driver of the real printer.
Install the virtual printer software
download and install the RedMon printer redirector
download and install Ghostscript and Ghostview (you need both!)
Configure the virtual printer
- create a new printer:
choose local printer port
choose create a new port with Redirected port
select a suitable simple postscript printer that is supported on all target platforms (e.g. HP LaserJet 4100 PS)
give it a suitable name (e.g. Kyocera FS-720 PS)
- enable printer sharing for this new printer
- configure the redirection:
choose Port settings -> configure
- enter the following settings:
- Redirect this port to the program
- Arguments for this program
-printer "Kyocera FS-720 KX" -
- use the name of your real printer here
do not forget the trailing hyphen
- Run as user
Now you are ready to print a test page on your shiny new postscript-like printer.
Configure the printer in the network
If you enabled printer sharing as described above then you can use this new postscript-like printer everywhere in your network. Possible clients are desktop computers of any kind or also print servers (e.g. CUPS).
Do not forget that you always need to configure the driver that you selected above (e.g. HP LaserJet 4100 PS). On Linux/Mac (any CUPS-based system) this should simply be the Generic -> Postscript printer driver.