Win7-Printer-Sharing

From Ed's Mediawiki
Jump to: navigation, search

When I brought up my new Windows 7 machine, I discovered that hosting print shares on this machine for non-windows 7 clients was not straightforward. I spent the better part of a day doing web research on this, and came to the conclusion that the way the wizard tries to do it turns out to be way too complicated, and for somewhat tech-oriented users, there is a simpler way.

The Basics

As technical LINUX users generally know, Windows shares use the SMB (Server Message Block) protocol to communicate between the client and the server. Under the hood, setting up a share is not that complicated. LINUX uses SAMBA to do this.

  • Set up the server to receive and service requests. This is straightforward in the Windows interface and there are multiple ways of doing it, mostly through "sharing" dialogs.
  • Set up the client to know how to get to the server and log on. This requires the "computer name" of the server, and possibly a user name and password.
  • Set up the client to know the name of the shared resource, normally a printer or shared file.
  • In the case of a printer or other device, the client needs to have driver software so it knows how to communicate with that specific device.

The biggest problem I had with Windows 7 (64 bit) as the server is getting the driver to the client. My clients are a windows XP laptop, an IMAC running Leopard, and a netbook running Windows 7 starter. And my printers are pretty old. When you set up a print share in Windows 7, it gives you the option of adding appropriate drivers so the server can send them to the client when it establishes the connection for the first time. But finding the right drivers to put here is not easy, and besides, it seems to me that you should be able to connect to a shared printer without having to modify the server for each new type of client. Why can't I just install the right driver on the client and give it the basic connection information? It turns out that I can, but it is not obvious how.

Caveat...I set up my server with a guest account and allow anybody on my network to access my print shares. These instructions are for this situation, though there are places to add username and password along the way.

Setting up the Windows Client

If you have a USB printer, you can just plug it into the client temporarily, and if all goes well, the drivers will be installed, and later, you can set up the connection to the server. Or, what I found just as simple, you can set up the printer without this connection by setting it up as a "local printer." No, it is not really going to be a local printer, but that label "local" is a misnomer. A so called "local" printer port can actually refer to the SMB server that hosts the shared printer. So in windows XP, under "Add New Printer" I just set it up as a local printer, and where it asks for a port, I create a new one and call it "\\mywin7desktop\mysharedprinter." Substitute your own computer and print share names. Once this is done, you are prompted to identify what kind of printer it is, which is just like installing a new printer locally by picking from the driver menu or downloading drivers from the printer manufacturer. I got this from [1] which explains it for a Vista server, but it also works for Windows 7 or any other SMB server.

A bonus from this learning is that this is not at all specific to Windows 7. It is just a way to set up a client to access a shared printer. I have another printer on a wireless print server that I named "downstairs." The print share on the server is called "P1." So the address of the resource on my network is \\downstairs\p1. This is a very simple print server that knows nothing at all about drivers, so the above approach is really the only way to connect to it.

Setting up the MAC Client

SMB (Windows) Approach

I did this on OSX Leopard, and it is similar to the windows client approach. You just install the printer drivers as if you are going to plug the printer into the client computer, but you specify the path to the printer as a SMB address. Apple has a page that tells how to do this at This Apple page. The key language here is that you are doing this "manually," which sounds complicated, but really isn't. This stopped working and I never figured out what was going on. It had something to do with the client not having the necessary authentication information. Fortunately, there is another solution. See below.

LPD (UNIX) Approach

I changed my MAC print client to use LPD (Line Printer Daemon protocol) because there were SMB authentication problems. Click here for details.