I’ve decided to take the plunge and I’m running Vista x64 on my primary home system. So far things are going well. I haven’t found any x86 programs that don’t run yet. I’m sure they are out there but I haven’t run across them yet. The driver signing thing has bitten me a few times though like with rivatuner. One thing I have noticed is that most programs–even open source programs–don’t have an x64 build yet. If they do, it is usually out of date and unsupported. Both Thunderbird and Vim fall into that category. It’s unfortunate really. There’s no excuse not to have a 64-bit build. Perhaps with Vista being more readily available as a 64-bit app some of this will change. Enough of that though. On to the reason for this post.
My wife’s printer appears to have died when I toggled a circuit breaker to install a new light. To get her running while we try to troubleshoot and perhaps get a new printer, I attempted to attach her to the Brother 5150D laser printer attached to my Vista machine. Sharing in Vista is easy and I could see the printer from her Windows XP machine. However, when I tried to install it, there were drivers needed. That makes sense as the drivers I installed on the Vista box were x64 drivers. No problem. I figured I would just install the drivers for x86 locally and be done with it. It’s never that easy. I downloaded the drivers but the system wouldn’t recognize them.
Next I decided to just install the drivers on my Vista box so that her machine would find them automatically. I downloaded the right drivers there, went to the printer sharing, selected sharing and additional drivers. I selected x86, clicked ok and was prompted for the drivers. When I pointed it at the drivers, I got the following error: “The specified location does not contain the driver Brother HL-5150D for the requested processor architecture.” This had me stumped. It was the right driver and the right architecture. I did some searches on Brothers’ site and on live.com to no avail. Eventually I ran across a forum post that pointed me at a post on another forum which eventually had enough information for me to discern the solution.
The problem appears to be a mismatch in the name of the device. When I looked at the x86 inf, I saw the following (edited to remove extraneous info):
“Brother HL-5150D series” = BH5150D.PPD,USBPRINT\BROTHERHL-5150D_SERIF199,LPTENUM\BROTHERHL-5150D_SERIF199,BROTHERHL-5150D_SERIF199
Notice that the system is saying it cannot find the “Brother HL-5150D” yet the inf is for a device called “Brother HL-5150D series”. Firing up Vim, I changed the entry as follows:
“Brother HL-5150D” = BH5150D.PPD,USBPRINT\BROTHERHL-5150D_SERIF199,LPTENUM\BROTHERHL-5150D_SERIF199,BROTHERHL-5150D_SERIF199
Problem solved. The x86 drivers are recognized by Vista and installing the shared printer on XP now works perfectly.
The next question though is where did the name come from. I found some x64 drivers I downloaded to my machine in the temp folder (why they insist on putting drivers there I have no idea. I’m sure it makes it easy for mom to find them when installing right?). These have the word series in them. Strange. After looking in setupapi.dev.log, I found the file prnbr001.inf. It contained these lines:
“Brother HL-5150D” = MS_BRH5150U.GPD,BROTHERHL-5150D_SERIF199,Brother_HL-5150D_USB,Brother_HL-5150D ; Hardware ID
Looks like I found my culprit. Vista ships with drivers for the printer but the name of the device in those drivers does not match the name of the device in the driver Brother has on their web site.
Hopefully this will get indexed by the servers in the cloud and help someone out there solve their problem.
There is one mystery left though. For some reason findstr can’t seem to find 5150 inside the prnbr001.inf file. This command: “findstr /in 5150 prnbr001.inf” won’t find it. If anyone knows why that might be the case, let me know.