Printing from a Mac to a Windows 7-connected printer

Printing is usually a straightforward thing.  I have a Canon Pixma MP610 connected to my desktop computer running Windows 7 Ultimate.  I have sent print jobs to it over the network from various Windows computers from XP through 7.  Today I tried to set up printing in OS X Lion and found it wasn’t straightforward.  It was painful actually.  It took me upwards of four hours to get it to work.  Now you might have much better luck than me depending on what kind of printer you have.  The MP610 is not new.  I bought it just before wireless printers became popular (the MP610 is not a wireless printer).  The latest Windows drivers are from 2009 though the OS X Lion driver is from 2011.  I loaded it and added the printer but couldn’t print.  I tried various things and got various error messages when looking at the job in the queue.

I read lots of web pages about printing from a Mac to a Windows computer and didn’t really find the problem.  There were many problems but they didn’t help me.  I read Windows 7 changed something and Lion changed something else but that didn’t give me enough information to fix my problem.  I finally narrowed the search to look for Canon Pixma printers (MP610 was too specific) and then I eventually stumbled upon some useful information.

The webpage at http://macs.about.com/od/printersharing/ss/Printer-Sharing-Share-Your-Windows-7-Printer-With-Your-Mac.htm explains that the problem seems to stem from Windows 7 changing how SMB (Server Message Block) works so that it didn’t work with Macs (I learned that’s not true which I’ll explain later).  The web page spends 5 pages taking the reader step-by-step to use an older technology called LPD (Line Printer Daemon) to print instead.

In short, the steps are:
1. Make sure Windows and OS X are in the same workgroup.
2. Enable LPD Print Service (Control Panel->Programs and Features->Turn Windows features on or off->Print and Document Services->LPD Print Service)
3. Enable printer sharing in Windows
4. Get the Windows 7 IP Address
5. Add the LPD printer to the Mac

  • Launch System Preferences
  • In the Hardware section, click the Print & Scan
  • Click the plus (+) sign at the bottom
  • If the Add Printer window’s toolbar doesn’t contain an Advanced icon
    • Right-click the toolbar and select ‘Customize Toolbar’
    • Drag the Advanced icon from the icon palette to the Add Printer window’s toolbar
    • Click the Done button
  • Click the Advanced icon in the toolbar
  • Use the Type drop-down menu to select ‘LPD/LPR Host or Printer’
  • In the URL field, enter the IP address of the Windows 7 PC and shared printer’s name (lpd://IP Address/Shared Printer Name).  Note the URL field is case sensitive.
  • Use the Print Using drop-down menu and select Select Printer Software…
  • Pick the driver
  • Click the Add button

The same set of instructions (but not in quite as much detail) was posted by biggun at http://answers.microsoft.com/en-us/windows/forum/windows_7-hardware/how-do-i-make-my-printer-on-windows-7-share-with/bd920e46-dbeb-4bb2-a38e-8791facd0608.  That user also had a Canon Pixma and he said he had to use a Gutenprint driver.

Even after setting up LPD, I still got various errors and no prints.  The key was a statement on page 5 of that website which stated, “Not all printers will work using the LPD protocol, usually because the printer driver on the Mac or Windows 7 computer doesn’t support this sharing method.”  It goes on to suggest updating the drivers or using a different driver.

A user named PAHU on discussions.apple.com also suggested using Gutenprint drivers at http://gimp-print.sourceforge.net instead.  I downloaded the Gutenprint .dmg file (Apple disk image) and installed it but still didn’t have any luck because the Mac couldn’t locate the printer.  It turns out I wasn’t typing in the address correctly.  Using the computer’s name will not work, it must be its IP address.

This does not work – lpd://a6720y/Canon%20MP610%20series%20Printer
This does work – lpd://192.168.1.100/Canon%20MP610%20series%20Printer

I read you cannot use spaces in the printer’s share name (mine is “Canon MP610 series Printer”) but you actually can, you just have to have the “%20” to stand in for the spaces.  It may not look pretty, but it works.  Alternatively, I could have changed the share name of the printer to Canon_MP610_series_printer or just MP610 or something like that.

The Gutenprint drivers doesn’t put anything in Launchpad.  The drivers (and there are lots of them) do show up when you go to select the driver for your printer during its setup.  Using the Gutenprint driver along with the lpd address above got it working like a charm.  I don’t get all the options I do with the Canon driver, but at least it works.

Back to SMB – It didn’t work with the Canon driver either but it does work with the Gutenprint driver.  You are forced to authenticate when you print using this method, and it requires a password so when I typed my desktop username and password, it printed.  If I removed the password from my account, I could no longer print with that username.  It didn’t matter whether I left the password blank, used my old password, or put nonsense into it, it didn’t work.  I read in one of the forums that the word Guest with the password Guest works.  It turns out that the first time I print using Guest as a username, I have to put something into the password field; it can be anything including the letter “a” and it will work.  After that first time, I can print using the username Guest and leave the password blank and it’ll still work.  If I subsequently change the username and attempt a print then change back to Guest, it requires me to put something in the password field again for that first time.  That all works despite the Guest account being disabled on the Windows machine.

Having to type Guest each time is kind of a drag though even though I only have to type the password once.  After all I don’t need a password using LPD (or using a Windows machine).  To make it a bit more friendly, I created an account on the desktop with the same name as my account on the Mac and set the password to “a”.  Now when the authentication screen comes up, the username is already filled in with my current OS X username and I just have to type “a” into the password field and all is good.  Of course, I’m going to default to using LPD because I can avoid the authentication issue altogether that way.