[Nexus 7 Q&A, Help & Troubleshooting] bftb0:
One thing that I think is not well understood is that there is no "Generic Class Driver" for ADB nor for fastboot...

... even though the very driver that works for one mode (or phone/tablet device) may be perfectly fine with a different device. The wire protocol for both fastboot and adb are extremely simplistic.

So, what that means is that if the Hardware ID used by the USB device endpoint registers on the bus with a different VendorID/ProductID, Windows will (correctly) not use a previously-installed ADB driver, or previously installed fastboot driver - even though they would probably work just fine.

Here is an example. The Nexus 7 registers the following Hardware ID when ADB debugging is turned on in the OS:

USB\VID_18D1&PID_4E42&REV_9999&MI_01

USB\VID_18D1&PID_4E42&MI_01

On the other hand, if you are using TWRP, it's adbd daemon shows up on the PC as:

USB\VID_18D1&PID_D001&REV_9999

USB\VID_18D1&PID_D001

This means that you might need to install a different driver for using the ADB with the OS, and a different driver for ADB under TWRP - even though it is exactly the same hardware on the other end of the cable! In the absence of a generic class driver for a given USB endpoint, Windows tries to match drivers in it's local (& internet) database based on this VID/PID pair.

If you have a look at the [ADB/FB/APX Driver] Universal Naked Driver 0.72 thread - and download it and have a look at it's included "android_winusb.inf" file - you will see literally hundred of different VID/PID pairs in the driver's android_winusb.inf file in the installer package, corresponding to many hundreds of phones/tablets. Same driver with hundreds of devices listed as compatible.

In the past I recall taking the Google (SDK) USB driver, and manually editing into place matching VID/PID pairs for a HTC phone into the .inf file. It worked perfectly; I probably flashed that phone hundreds if not thousands of times using the Google Driver (My PC is a Windows 7 Pro x64 machine btw).

Anyhow, I have pulled this stunt twice now - once editing the .inf file for the Google Driver, and I did it once with the Universal Naked driver too. You can choose which driver you want to start with.

If you want to give it a roll, you can start with any of those three drivers:

- Google (SDK) USB driver

- XDA "Universal Naked" driver

- Asus Nexus 7 USB Driver (Look under Download)

Note that since you are using W7 x64, make sure that you add each new entries to the .inf file twice - once in the ".NTx86" section, and duplicated again in the ".NTamd64" section. When editing .INF files, make sure to use an editor which preserves simple text file formatting - use "notepad", not "wordpad"

If you want a reference for what values to use, see the bottom end of this post. You should see exactly these same values in your Device Manager, however.

Note that if you see the device show up in the Device Manager as being correctly identified and marked as "working normally" - but it doesn't work - you should probably remove that driver and re-install from a different driver package.

This would certainly be the case for any drivers you saw associating with VID/PID pairs that look like:

VID_18D1&PID_4E40 bootloader/fastboot

VID_18D1&PID_4E41 single adb

VID_18D1&PID_4E42*&MI_01 composite adb

VID_0955&PID_7330 avx mode

VID_18D1&PID_D001 adb in TWRP (maybe CWM too, I didn't check)

That's a lot to throw at you, especially with Italian <=> English in the mix.

Feel free to ask questions.

bftb0