# Force Vista to “forget” a USB device

I have a device (HTC Dream / G1 Android phone) that I want to set up with a specific driver. Unfortunately I have already previously installed the device with the default driver. Even after uninstalling the device, every time I connect it Windows automatically recognises and reinstalls using that same default driver - I never get the chance to override this process.

Is there some way I can force Vista to "forget" the device so I can start over?

-

1. Press [Windows]+[Pause Break] to bring up the System Properties dialog box.
3. Click Environmental Variables
4. Click the New button below the System Variables panel.
5. In the New System Variable dialog box, type devmgr_show_nonpresent_devices in the Variable Name text box and 1 in the Variable Value text box.
6. Click OK to return to the System Properties dialog box and then click OK again.
7. Press [Windows]+[Pause Break] to bring up the System Properties dialog box.
8. Click Device Manager
9. In Device Manager, go to View | Show Hidden Devices.
10. Expand the various branches in the device tree and look for your phone.
11. Right-click the icon of the thing you want to get rid of and select Uninstall.
-
Thanks, devmgr_show_nonpresent_devicesis a good tip, but no good here - I can uninstall but it then just reinstalls next time I connect, without giving me the chance to interrupt or manually select. – FoleyIsGood Aug 24 '09 at 22:12

Unless the existing driver crashes, there's usually no need to do this. Right-click on the device in Device Manager, select Update Driver Software... from the context menu, and a wizard will pop up that lets you select the new device driver.

-
I was amazed to find that when I tried this Vista said "Nah, Windows thinks that the driver it's using is better than the one your suggesting" :oI – FoleyIsGood Aug 26 '09 at 12:22
@FoleyIsGood: Are you trying to get it to use an unsigned driver? – bk1e Aug 26 '09 at 16:17
+1 on the right track. If you choose "Let me pick from a list..." then untick "Show compatible hardware", click "Have Disk" and browse for your driver. Then I believe Windows will, begrudgingly, use the driver you picked. – subman Sep 1 '09 at 20:00

What worked for me in the end was (massive pain in the arse and mildly scary) deleting the registry keys, for the device, uninstalling the driver, re-connecting the device and then I finally got the wizard that gave me the option to select a specific driver.

-

I would suggest NirSofts' USB Device View:

Extract this tool, run it, and then choose your device. (If you have plugged it in in different ports you will see it several times.) Delete the device entry. (Delete all of them if the device is listed more than once.) Now unplug the device, plug it back in and reinstall using your driver.

-
+1 always for NirSoft utilities – Áxel Costas Pena Apr 30 '14 at 21:00

Go in to device manager with the device plugged in and double click on it.

Click the drivers tab and click on "Driver Details"

Jot down the location of all the drivers and take a backup before deleting as some may be shared and required by other devices... so be VERY careful with generic sounding names

Next, click Uninstall and once finished, pull it out quick before plug and play picks it up!

That being said, you may need to uninstall before deleting the files - truthfully, I know this should work as this will delete the driver files, but I have never tried it so I am not sure on the order needed to do this. You may not even need to unplug as if you can delete the drive files, if plug and play find it, it will probably ask you to reinstall the drivers anyway.

Also, if you do the update driver buttons, it may allow you to install the drivers you want without having to resort to the above method (if you have a .inf file... or can extract it from the cab or msi file e.t.c.)

If you do the method of manually deleting files, you may want to go to command prompt and type

SFC /VERIFYONLY


Just to verify that no system files have been deleted, I think there is a way to just manually type the file names you deleted in order to see if they were part of Windows, but I can not remember off by heart.

-

Bit of a blunt instrument approach and I've only ever done this on XP, but the concepts should apply to Vista:

1. Open Device Manager
2. Go to your USB controllers
3. delete each entry under USB controllers
4. click "Action \ Scan for Hardware Changes"

Based on the assumption that you've already uninstalled the driver Windows should consider the device to be completely new when you click "Action \ Scan for Hardware Changes"

Note this will also cause all other USB devices attached to your computer to be forgotten - so be careful when using USB keyboard / mouse (you may want to use a PS2 adapter to connect them whilst doing this).

If you can identify exactly which device in the list under USB Controllers is your phone, you can get away with just deleting that one.

-

The problem you may encounter is that the manufacturer of the device has to provide the information that the device comes with its own driver in its handshake to Windows. Otherwise, it will use the Windows generic driver. The details of the procedure are given in Microsoft's USB pages for device manufacturers.

-
Welcome to superuser. Maybe you can improve your answer with an URL for Microsofts USB pages for device – nixda Dec 31 '12 at 14:18

From addictivetips - How To Disable Automatic Driver Installation in Windows Vista:

Go to Start menu, right-click on Computers and click Properties. On the left sidebar of the System dialog box, select Advanced System Settings. Now navigate to Hardware tab and click Windows Update Driver Settings...select Ask me each time I connect a new device before checking for drivers or Never check for drivers when I connect a device

But since you've already installed drivers with the automatic method you might need to manually delete the drivers from the Store to prevent Vista from automatically using them next time you plug in. Quoting from a post at vistaforums:

open an elevated command prompt window (enter cmd in the start area, then press ctrl-shift-enter) and enter pnputil.exe -e. This will provide a list of all the third-party drivers installed.

Search the list for the driver version you want removed. It will be oem##.inf. (where ## is the actual two-digit number of the inf file)

To remove that driver, using the same elevated command window, enter pnputil.exe -d oem##.inf to be safe, find all the driver files and remove them all.

Then, you need to clean out the INF directory:

1. open %windir%\inf\setupapi.dev.log in Wordpad
2. search for [the name of the device], this will be found on a DevDesc line
3. look a few lines up for the inf: line. It will say Opened INF: and at the end of the line, you will see the actual name of the inf file.
4. remove that file from the INF directory.
5. look for ServiceBinary=c:\Windows\system32\DRIVERS containing a reference to the same inf file. That's the driver file to delete.
6. continue this process, search for all the inf sequences and DRIVERS references, removing the files from the INF and DRIVERS directories as needed.

I've tested neither of these personally.

-