Tue Apr 6 21:37:46 CEST 2010

Printing to windows

The simplest solution seems to be to install a CUPS printer driver on
a linux machine, and have it translate from PostScript to the
printer's binary format.  On windows, a raw pipe can be opened using
the procedure described in [1].

EDIT: Apparently that article has been removed.  ( Why do ppl keep
breaking links?  Progress? )  The old wiki is here[2], and a new page
is supposed to be here[3], but that's currently broken.

See full text copied below:

Windows - only one option:

Set up the Windows print server.

Share the printer: In this example I have a Canon BJ200 printer shared
as BJ200. To share a printer do this: Start --> Printers & Faxes -->
R-click printer icon --> Sharing --> Share this printer --> Type in
your choice for share name. I chose BJ200 for this example. Note there

Record your NBT server address: You also want the Windows NBT address
which you can get from a dos prompt available at Start --> All
Programs --> Accessories --> Command Prompt. In the command prompt
enter "ipconfig/all". You'll see the IP address for the ethernet
adapter, e..g., and the NBT name , e.g. DragaXP in this
example. You'll need IP if using fixed addressing or NBT name if using
dynamic addressing.

Enable Windows support for Unix printing: Open Control Panel --> Add
or remove programs --> Add/remove windows components. Scroll down to
"Other Network File & Print Services". Highlight that and select
"details". Put a check mark in "Print Services for Unix" and OK/Next
or whatever.

Activate TCPIP print services: Open Control Panel --> Administrative
Tools --> Services (Local) and find TCP/IP print server. It should be
set to "Status= started" and "Start type=Automatic". To change
settings you double Lclick the line "TCP/IP print server" and adjust

OK, now you have a windows workstation sharing a Windows printer to
Linux clients. The next segments show HowTo set up the Linux client to
print to this Windows print server, using two alternative network

Linux Option 1:Setting up a Linux client to print using LPD protocol

Note in this option the client does NOT use or need Samba

The first thing is to set the root uid and password for cups. This is
different from the Linux "root user". Open a terminal as superuser and
enter the chosen uid/pwd as lppasswd -a username. You then supply a
password which must satisfy certain criteria, as you might
discover. Finally start cups by entering: /etc/init.d/cups start [or
restart]. Here's the terminal session for Suse 10.0, 10.1 which used
CUPS V1.1x:

ethel@linux:~> su
linux:/home/ethel # lppasswd -a ethel
Enter password:
Enter password again:
linux:/home/ethel # /etc/init.d/cups start
Starting cupsd                                            done
linux:/home/ethel #

For Suse 10.2 which uses Cups 1.2 its the same thing EXCEPT some 10.2
users cannot get it to work properly (I'm one) and they have to work
as root: enter the root password for cups using this line:

linux:/home/ethel # lppasswd -g sys -a root

Now you ensure that it starts at boot: In Suse do Yast --> system -->
system services --> expert mode --> cups --> checkmark runlevels 2, 3
& 5.

Now that you can access cups administration you set up communications
with the Windows printer. Open Cups Admin's GUI by entering
http:localhost:631/ in your Browser. Then you can perform the
following series of steps:

    * Select Printers and enter password when asked

    * Add printer

    * Fill in a Name for the printer (NO SPACES) and optionally a
      Description and a Location

    * From the options in the drop-down list of Devices, select
      LPD/LPR Host or Printer

    * Fixed IP addressing: Fill in the URI as
      lpd:Server_IPaddress/Server_queue_name [for example

    * Dynamic IP addressing: Fill in the URI as
      lpd:Server_NetBIOSname/Server_queue_name [for example

    * Printer drivers: Select the Maker and the Model from drop-down

    * Select Printers and Print Test Page to check your connectivity
      to windows

You should now be printing from Linux_To_Windows via LPD That's all
for the cups/lpd network client on Linux folks. It's really very easy
but ONLY if you know how first.

Linux Option 2: Setting up a Linux client using Samba's SMB/CIFS
Protocol (alternative to LPD)

This option is an alternative to the one above which used the LPD
protocol via cups network printing. This option uses the SMB protocol
via Samba.

Check that Samba has been configured for cups printing. The [global]
entry will contain at least these lines if it has been configured for
cups printing.

[global] printing = cups printcap name = cups

Open cups admin on http:localhost:631/ and execute these steps:

    * Open Printers and Add Printer

    * Enter the printer Name BJ200. This becomes the queuename. You
      can fill in the optional Location and Description to suit.

    * In Device type choose Windows Printer via SAMBA from the
      drop-down list

    * Fixed IP addressing: In Device URI enter
      smb:workgroup/username:password@, where
      "username", "password" and "workgroup" pertain to the server.

    * Dynamic IP addressing: In Device URI enter
      smb:workgroup/username:password@DragaXP/BJ200, where "username",
      "password" and "workgroup" pertain to the server.

    * Choose the printer driver from the cups database on the final

    * Execute a Print Test Page and you should be printing from
      Linux_To_Windows via Samba

[1] http://en.opensuse.org/Print_to_Windows_printer
[2] http://old-en.opensuse.org/Print_to_Windows_printer
[3] http://opensuse.swerdna.org/susesambaprint.html