Saturday, January 6, 2007

Printer Problems on Vista x64

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):



[DriverName]
"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:



[DriverName]
"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.NTamd64]


"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.

14 comments:

  1. Findstr is ANSI-only, so it doesn't find matches in Unicode files.  Try this longer-winded search:
     for %i in (*.inf) do type %i | findstr /in 5150
    Barry

    ReplyDelete
  2. Thanks Barry.  That would explain it.

    ReplyDelete
  3. WHen I installed Vista 64 on my computer, I did a bit of checking to see if HP had any drivers for my particular printer, an HP 1210xi All in One. No Vista drivers, but the was a beta 64 XP driver. Didn't matter, as everything I tried for this device failed. I've set the issue aside for the moment, but it's good to know that I'm not the only one having these problems.

    ReplyDelete
  4. vim x64 binaries are available (amd64 and ia64)
    http://www.vim.org/download.php#pc
    points to
    http://www.georgevreilly.com/vim/

    ReplyDelete
  5. Vim x64 binaries are available and I have them, but there is no setup package there.  You get vim but none of the nice UI extensions, etc.

    ReplyDelete
  6. HI All,
    There is a known issue from Microsoft about the Vista x64 printer sharing option. Microsoft provide a workaround for the printer sharing problem and i will share with all of you. I already tested and works fine with Vista x64 Enterprise RTM and Windows XP SP2.
    1) Go to the XP Machine and go to Start - Control Panel - Printers and other hardware and then printer and faxes.
    2) Double Click Add Printer to start the Add printer wizard and click Next.
    3) Click on Local Printer, clear the Automatically detect and install check box, and then click NEXT.
    4)Click CREATE A NEW PORT and then click LOCAL PORT in the PORT TYPE section.
    5)In the Port Name box, type the path to the printer in the following format where SERVER is the name of the print server and PRINTER is the name of the printer:
    \serverprinter
    6) Click NEXT and then select a Windows XP driver for your printer.
    7) Click Next and the follow the intructions to finish the wizard.
    NOTE: When you use this procedure, the print job is printed locally and then redirected to the network path. If you use this procedure, you do not receive printe updates from the printe server when you update the printer driver on the print server.
    I hope this process help with your problem. It works for me and was so easy to do.
    AlexR

    ReplyDelete
  7. Thanks Alex.  As I wrote above, I found another solution but this is a good one to have in the proverbial back pocket.  I actually tried to install the printer driver locally with no luck.  If I had known about the redirection, that would definitely have solved my problem.

    ReplyDelete
  8. That fix helped me also. I have a hp deskjet 932c printer on an xp home machine. I can now connect to it. Is microsoft or hp gonna fix this in the future?

    ReplyDelete
  9. I have upgraded to Vista Ultimate 64 bit and since then i have not been able to use my 2 month old Laser printer, a koinica minolta 2480mf. Konica, suprisingly, have stated they have no intention of providing a 64bit driver and therefore i should return the printer! Problem - i like the printer and want to keep it, query - would a printer server solve this or will Vista still ask for the drivers?

    ReplyDelete
  10. I'm sorry to hear that Konica isn't supporting their stuff for 64-bit.  I've had pretty good luck finding drivers so far.  Most of the major companies--even Brother--have had them.
    I haven't actually used a print server but I think you'd still need the drivers.

    ReplyDelete
  11. Why does microsoft do that. thank you for the explanation. I did wonder for my Canon Pixma IP4000 why it wouldn't take the driver - Vista 64 calls is Canon Inkjet Pixma IP400!

    ReplyDelete
  12. AlexR
    Thank you my friend!  I was pulling my hair out trying to connect an XP PC to a printer I was sharing on Vista64....
    JohnD

    ReplyDelete
  13. Thanks for posting this... you helped me solve the problem of my PC not wanting to share my printer with my sister's 32-bit XP.

    ReplyDelete
  14. Thanks guys, useful thread.  Had the same problem as in the original post, and fixed by editing the inf file.  Problem then was that it was unusable; XP machine took 60 secs to respond to anything to do with the new printer.  Thanks for the reminder on the local port redirect - that must've been how I had it running before reinstalling XP on the laptop...
    Cheers...
    (Vista64HomePremium on media server, XPSP2 on laptop)

    ReplyDelete