08 January 2008

Printing from Windows to CUPS

This is too good to wait on, even though it's late and I'm a little tired. May fill in more later. I have a printer. I hate the Windows drivers that come with it, they're full of ads, obnoxious automated update pop-ups, they hog a lot of memory and CPU, etc. That's alright, I usually use FreeBSD anyway and CUPS ends up working great. I had to find the linux drivers for my particular printer in another port (hpijs or hplip (YMMV)), but was not a big deal. I'm printing over the network from FreeBSD. Everybody's happy.

But, I have a Windows machine for the kids and now they're constantly wanting to print things for school. Sometimes they can use the FreeBSD machine, but sometimes it's not convenient. What I want is for the FreeBSD machine to be a print server to the Windows machine.

So, I know!, Windows means samba and there's a port named "cups-samba". This must be just what I'm looking for. ... Well, it was kind of what I was looking for. But, it was too much trying to do things the Windows way. A little painful. What I discovered in digging around was that I didn't need cups-samba or even samba. CUPS by default leaves a port open for printing and you can use IPP to print directly to a CUPS printer via the network, even from Windows, and using generic, Windows Postscript printer drivers already on your Windows machine (probably).

My breakthrough came from a Gentoo wiki (here) where I found this great wisdom on the subject:

I don't understand why this HOWTO includes Samba functionality. It seems to me to be an inappropriate security risk, especially if your goals are simply what this HOWTO is addressing -- setting up a printer on a Gentoo box using CUPS, and using that printer natively with Windows.

Using IPP, you can axe everything in this HOWTO regarding printing via Samba. CUPS setup as per the HOWTO looks good. I use [OPTION 1] setup in my mixed-OS environment:

[OPTION 1] Generic PS Driver using MS Publisher Imagesetter driver

Windows: run Add Printer, select "Connect to a printer on the Internet..." and enter the URL for your printer (http://<computer-ip>:631/printers/<cups-printer-name>). When it asks for a printer manufacturer, select "Generic", and the printer "MS Publisher Imagesetter".

There's not much more to say. It worked perfectly. I printed out a little sudoku puzzle to test it.

Labels: , ,


At 22/5/08 06:13, Anonymous Anonymous said...

Thanks for the info.... Worked great for me. This is the way I did it.. http://xxx.xxx.xxx.xxx:631/printers/(choose your printer from the ms list) then next. Everything works just great. Running Ubuntu Server 8.04 with a lexmark Optra 312L Printer.

At 12/9/08 18:51, Anonymous Anonymous said...

i went nuts searching through cups documentation for the simple config that you outlined.

thank you very much.

i too am running ubuntu server 8.04 with a variety of servers and this worked great.

At 22/11/09 16:27, Anonymous Chris Hodapp said...

Thank you for this. I have a Windows VM I only use for MATLAB, and I always need to print from it. Prior to this I was using CutePDF and copying the resultant files to a Linux box that could print, and this makes things much easier.

At 22/9/10 17:52, Anonymous printing said...

I had tried printing with Windows and it was really amazing.Goodbye to my problems.My friends was starting to use this application also.


Post a Comment

<< Home