Technical

USB Passthrough issue during flashing in windows VM: use full controller passthrough

USB Passthrough issue during flashing in windows VM: use full controller passthrough

USB passthrough issue during flashing in windows VM is almost always the device resetting mid-flash. Single-device passthrough just doesn’t hold the connection. Pass through the entire USB controller and the problem goes away.

Detailed view of audio equipment showing inputs and digital controls in a studio setting.

Why single-device passthrough fails during flashing

Flashing tools talk to the device in a way that makes it re-enumerate. That’s normal for a bootloader or firmware update. But when you pass through just one USB device, Proxmox emulates the connection. The emulated layer doesn’t handle the reset well. The device drops off, the flash fails, and you get a useless error like “device not found” or “write timeout”.

It’s not a Windows driver problem. It’s the passthrough method. I’ve seen this with ESP32, STM32, Arduino, and even some phone flashing tools. They all do the same thing: open the port, reset the chip, and expect it to come back. With single-device passthrough, it doesn’t come back.

The fix: pass through the whole USB controller

Instead of adding a USB device to the VM, add the PCIe USB controller. That gives the VM direct access to the hardware. The device resets are handled by the real controller, not an emulated one.

Here’s how to do it:

  1. Shut down the Windows VM.
  2. In Proxmox, go to the VM’s Hardware tab.
  3. Click Add, then PCI Device.
  4. Select the USB controller from the list. It usually shows up as something like Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI.
  5. Check the “All Functions” box if it’s there.
  6. Start the VM and install the driver if Windows asks.

After that, plug the device into a port on that controller. It’ll show up in Windows as a normal USB device, but the connection is direct. Flashing tools work like they do on bare metal.

Minimalist flat lay of a laptop with USB drive over a gray background, showcasing technology essentials.

Checklist if it still fails

If you’ve passed through the controller and still get disconnects, check these:

  • Make sure the device is plugged into a port on the passed-through controller. Not all ports on the motherboard go to the same controller. Use lsusb -t on the Proxmox host to see which ports map to which controller.
  • Disable USB autosuspend in Windows. Go to Power Options and set “USB selective suspend” to Disabled. Some flashing tools hate that.
  • Use a USB 2.0 port if the device is USB 2.0. USB 3.0 controllers sometimes cause issues with older devices during flashing.
  • Check the VM’s machine type. If it’s set to q35, try i440fx. Some USB controllers work better with one or the other.

Honestly, the whole controller passthrough fixes 90% of these issues. The rest is usually a bad cable or a flaky port.

If you’d rather pay for this

If you don’t want to fiddle with PCIe passthrough, you can buy a dedicated USB controller card and pass that through. A cheap one with a Renesas or Fresco Logic chip costs around $30. It’s worth it if you flash devices regularly. You don’t have to worry about which onboard port maps to which controller. Just plug into the card and go.

Related: Proxmox add USB stick image as ISO: import a ready-made .img with qm importdisk

Leave a comment

Comments are reviewed before they appear. Your email is never published.