Skip to content

Troubleshooting USB devices in Windows

mcuee edited this page Oct 11, 2023 · 6 revisions

If you have trouble connecting to your USB-based programmers on Windows, the problem may be caused by incompatible USB drivers, or an incompatible build of AVRDUDE that does not support the particular driver you have installed for your USB programmer. For technical details, see The story on libusb for Windows.

Starting with AVRDUDE v7.0, the USB support has been much improved on Windows. With the help of our customized libraries, our MSVC AVRDUDE v7.0 builds support both the native WinUSB driver that is shipped with Window, and also the legacy driver libusb0.sys. For HID devices, the Windows build-in HID class driver is supported. For FTDI devices, the plug-and-play drivers provided by FTDI are supported.

Note that the stock libraries, such as libusb-1.0, libusb-win32, or libftdi as used by the MSYS2 or Cygwin builds, may require the use of Zadig driver installation tool to switch the driver (eg: from FTDI vendor driver to WinUSB or libusb0.sys). If you have trouble connecting to your USB devices, make sure you use our MSVC Windows release builds.

View the driver installation status of a USB device

If your USB device is not working as expected, open up the device in Windows Device Manager for detailed information:

  • Right-click the Windows Start button and click Device Manager.
  • In the tree view, locate the device you want view (typically under Universal Serial Bus devices, Human Interface devices, or Other devices).
  • Right-click the device and click Properties.
  • On the tab General, you can see the Device Status.
  • On the tab Driver, click the button Driver Details: In the list of Driver files, you can see the installed drivers.
  • On the tab Details, you can see all properties of your device: For instance, from the drop-down list Properties, select Hardware Ids to view the USB vendor and driver IDs.

Install the WinUSB driver for a USB device

If your USB device does not have a driver installed, or it is using the legacy libusb0.sys driver, you can use Windows Device Manager to install the generic WinUSB driver.

You can use this procedure for many popular programmers, such as the Microchips AVRISP MKII, USBasp, or USBtinyISP.

Note: You should only use this procedure if your device vendor does not provide a proper driver installation package. Also, you typically do not need the generic WinUSB driver for USB devices using class drivers, such as HID (Human Interface Devices) or CDC (USB Serial Communication Devices) devices.

  • Right-click the Windows Start button and click Device Manager.
  • In the tree view, right-click the device and click Update driver.
  • Click Browse my computer for drivers.
  • Click Let me pick from a list of available drivers on my computer.
  • From the list Common hardware types select Universal Serial Bus devices and click Next.
  • From the list Manufacturer select Microsoft.
  • From the list Model select WinUsb device and click Next.
  • A dialog named Update Driver Warning will pop up. Click Yes to continue installing this driver.

The driver for your device is now installed. Under Universal Serial Bus devices you should see an entry with your USB device.

Reference from Microsoft about WinUSB driver installation

The following link is a good reference from Microsoft about WinUSB driver installation.

https://learn.microsoft.com/en-us/windows-hardware/drivers/usbcon/winusb-installation#installing-winusb-by-specifying--the-system-provided-device-class

Uninstall the libusb0.sys driver for a device

  • Right-click the Windows Start button and click Device Manager.
  • In the tree view, right-click the device and click Uninstall device.
  • A dialog named Uninstall Device will pop up. If present, check the box Attempt to remove the driver for this device. Click Uninstall to continue un-installing this driver.
  • Unplug your USB device from your computer, and plug it back in for re-installation.