Monday, May 17, 2010

Sharing 64 bit printer drivers using a 32 bit Windows print server



I've finally made the jump to 64 bit computing by adding some Windows 7 x64 machines to my environment. However, I do not have any 64 bit servers, so I wasn't sure if I was going to be able to use my existing Windows Server 2003 print server to share out 64 bit drivers for printers. Well, the answer is that you can, but without a good set of instructions it can be a little messy. Hopefully with the steps below you too can share your 64 bit drivers from a 32 bit print server.

In my situation I am working with Server 2003 SP2. If you're running R2 the steps may be different, and I'd imagine 2008 is completely different. You need your 32 bit server, and you also need your 64 bit machine. Both of them have to be used in order to load both sets of drivers. You can't load 64 bit drivers from your 32 bit server, and vice versa. The other thing is that the drivers have to be named the same. The easiest way to make sure of this is to download both the latest 32 and 64 bit drivers from the manufacturer's website and use those. That may mean you will be updating existing 32 bit drivers, but you're better off doing that than trying to get the new 64 bit driver to work with an older 32 bit driver. I currently have Sharp and HP printers printing from my Windows 7 64 bit machine through our Server 2003 32 bit server as well. In my instructions I'm going to assume you already know how to install a printer. Here's how I got it to work, and I'll use a Xerox printer for the example.

1. On your 32 bit print server, download the latest 32 bit driver for your printer
2. On your 64 bit machine, download the latest 64 bit driver
3. On the printer server go ahead and start installing the printer. Your setup may differ than what I have in the screenshots, but I'm installing a networked printer that has an IP address of 192.168.1.65





4. When asked for the print driver, click on "Have Disk...". Now navigate to the location when you downloaded your 32 bit print driver and select it. You may have to unzip the driver package you downloaded if you haven't already.





5. Pick your printer from the list included in the driver. In my case there's only one option


6. Name your printer and click Next
7. Choose to share the printer and give the share a name, then click Next
8. Fill out the location and comments boxes if you want, then click Next
9. Print a test page if you'd like, but it's not required. Then click Next
10. The printer should install and then you can click Finish
11. Now hop on your 64 bit machine and open up printmanagement.msc. If you don't know how to do that, check out my other post.
12. In the tree on the left, open up Print Servers and open your print server. Go to the Drivers section, right-click, then choose Add Driver



13. When at the Processor and Operating System selection screen, uncheck the x86 box and check the x64 box instead. Then click Next



14. Click on "Have Disk..." and browse to the location where you have the 64 bit driver that you downloaded in step #2. Again, you will have to unzip the downloaded driver file prior to being able to select it here.



15. Repeat step #5 to select your printer and click Next
16. Click Finish. This should install the 64 bit print driver on your 32 bit server

Now you can double-check to make sure it worked. As long as the printer drivers are named the same it should have. To check, log back in to your printer server. Right-click on the printer you installed and go to Properties. Go to the Sharing tab and click on Additional Drivers.




If done correctly you should see that the x64 and x86 boxes are both checked, which means the printer is being shared using both drivers.



It took some trial and error in the beginning, but this method has been working for me and I hope it works for you too. Good luck!

10 comments:

Fa3ien said...

Thanks a lot for putting this online.

rslygh said...

You're welcome. I spent too much time sorting out how to get it to work not to share it. I'm glad it was useful

The Moose said...

Thank you for posting this. Prior to finding your post, I used a slightly different method that I was unable to document due to time pressure. I am working on the documentation now.
My question is, did you use the Windows 7 x64 driver or the Windows Server 2003 x64 driver?

rslygh said...

I think all of the drivers that I needed were the same for Windows 7 x64 and Server 2003 x64, so I didn't have to choose. If you have two distinct drivers for each version, I'd suggest selecting depending on which computers will use it. If you only have Windows 7 in 64-bit, then use that driver. However, if you have a mixed environment with various x64 versions of Windows, I would suggest setting up a different printer for each and using OUs (or WMI) and GPOs to push the printers to the specific OSes if the 64-bit drivers for each OS is different.

The Moose said...

Thank you! That's a good point about the drivers. I was doing great until a windows server update wrecked several of my printers on the print server. Never again. Like you, I have a mixed environment of 32 bit XP and 64 bit win 7 with servers 2003/2008.
Have you ever come across splwow64 hanging up on the win7 x64 client? This prevents them from printing to the 32 bit windows 2003 server. I thought that if this was due to driver mismatch I would not be able to add the printer (much less print), but killing the process (there can be more than 1) resolves the issue for a while, as does restarting the machine. Print spooler restart has no effect and no events are logged in the system or application logs.

rslygh said...

No, I haven't had any issues with splwow64. I have had some problems with the drivers causing the printers not to print correctly, but I have a feeling it's because the printers we have are older HPs and I had to use the HP Universal driver in order to gain the 64-bit support. When I've changed any of those printers back to their specific driver, they've worked fine. I don't need those particular printers to support 64-bit machines yet anyway, so it has worked out ok for me.

Cheezy said...

Hi, this is really helpful stuff, thanks for posting it. I have a query though; I appreciate the driver name has to be the same so as they're not treated as indivual drivers by the OS, but does this apply to Driver versions also? Would installing two different versions of the print driver (in both x86 and x64 flavour) give the same problem? Thanks again

rslygh said...

Hi Cheezy,

In order to have one printer object use the different architecture drivers (x64 vs x86), I believe those drivers do have to be the same version. However, if you need to use different driver versions for each architecture you can create two different printer objects and assign the drivers separately. It gets to be a little messy this way, but I've had to do it too because some of the newer driver versions required to allow x64 printing don't necessarily work with some of the older printers I support. The one I've had the most problems with is the HP Universal driver for laser printers.

Anonymous said...

Thanks a lot.

It's beyond me why I have to read this on a blog instead of technet.

Anonymous said...

Very helpful, thanks.
FYI - Technet Article for those looking for 32bit on 64bit:
Pretty much same as above but has some clarification I found useful.

http://blogs.technet.com/b/sbs/archive/2009/02/13/how-to-add-32-bit-print-drivers-to-sbs-2008.aspx