Windows 8: Cannot Connect to Printer

I have a Canon MP830 USB printer hooked up to my always on workstation at home, and this is shared so that anyone in the house can use it to print.   I haven’t had any issues until trying to add the printer in Windows 8.  When I tried to add the network printer:

image

It looks like the printer is being added ok, but then I would be given the dreaded 0x00000002 error:

image

This is a driver issue.  But what I couldn’t quite understand is why.  The drivers were all 64 bit, it’s USB … and I’ve added other printers (since I travel around) without problem.   The first thing I tried to do is see if I could get the printer to work locally.  I plugged the USB cable into the Windows 8 laptop, and it worked right away:

image

So, the driver is working locally.  I tried again to add it as a network printer, thinking maybe it would use the correct driver or somehow missing the correct the driver to use, but it failed again.

The way I solved this was like so … and note, if the printer still won’t work when connected locally, this method won’t help:

Navigate to the Control Panel –> Hardware –> Devices and Printers, and select Add a Printer.

image

On the dialog that appears, select “The printer that I want isn’t listed” option:

image

And then “Add a local printer or network printer with manual settings” option:

image

Add a new local port:

image

And in the dialog that pops up, enter the network path to the printer (host name, plus the printer share name):

image

Now you’ll get to specify the driver to use.  Windows has already installed driver because I tested the printer locally first, so I can select it right away.  Otherwise, you’ll need a driver disk or can attempt to have Windows Update find it for you:

image

image

And boom, printer added:

image

So, why is this problem happening?  I received the same error on two different machines.   Fortunately because this was easily solved, I didn’t spend much time diving in.  But if I had to guess, I suspect the Win8 machine asks the server for a compatible driver, and an error occurs trying to negotiate.   Using this method essentially allows us to manually select the driver.