“Qualcomm HS-USB QDLoader 9008” is the name Windows gives a Snapdragon phone or board sitting in Emergency Download (EDL) mode, USB\VID_05C6&PID_9008. Qualcomm now publishes the driver itself on GitHub, signed through Microsoft’s hardware program, so on Windows 11 you no longer need “test mode” or a driver from a mirror site. This page covers where to get it, what every 05C6 port in Device Manager means, how to force EDL, and which driver each flashing tool expects.

⬇ Qualcomm USB Driver (QUD) 1.00.94.13: official link

Windows 10 / 11 · x64 and ARM64 · latest stable Windows release, 25 Aug 2026

Get it from Qualcomm on GitHub

Signed driver package: qud-win-v1.00.94.13_x86_64_arm64_signed.zip · 5.68 MB · SHA-256: bc10912ba76e142996ef14a5f4c4a241cbed1c4c7026f25dfda0b0cd47355571

Installer: qcom_usb_kernel_drivers_x64.exe · 6.15 MB · SHA-256: 2061993e613286ecb19fbd57b02512c0110ba92949e3a55a3578730dfd180692

Not mirrored here: we link Qualcomm’s own release page and publish its checksums. Newer 1.00.95.x builds exist, but Qualcomm marks them “Pre-release”. The .cat files in the zip are signed by “Microsoft Windows Hardware Compatibility Publisher”, so the driver loads with Secure Boot on.


⬇ qdl 2.8 for Windows x64 (open-source EDL flasher)

Download qdl 2.8 (Windows x64)

File: qdl_2.8_windows_x64.zip · 2.6 MB · released 2 Aug 2026 · SHA-256: f013b0a38660957feb5959ee5c625013089e9a1f9a9f5e7f21eb0cbd1cdee159

Unmodified mirror of linux-msm/qdl v2.8. The checksum is the same as GitHub’s published digest; only the outer file name is changed. Inside: qdl.exe plus its libusb/libxml2/libzip DLLs. BSD-3-Clause, © Linaro Ltd., Bjorn Andersson and Qualcomm Technologies, Inc. (licence text). ARM64 build: official release page.

Install the driver on Windows 11

  1. Uninstall old “Qualcomm HS-USB” drivers from driver-pack sites first. In Device Manager, right-click the device, choose Uninstall device and tick Attempt to remove the driver for this device.
  2. Run qcom_usb_kernel_drivers_x64.exe, or extract the signed zip and run, as administrator: pnputil /add-driver qcwdfser.inf /install (the command Qualcomm’s README gives).
  3. Put the device in EDL (table further down) and plug it in. It should appear under Ports (COM & LPT) as Qualcomm HS-USB QDLoader 9008 (COMx).
  4. With no driver at all, it shows under Other devices as QHSUSB__BULK. That is the product string the boot ROM reports; a Linux log in edl issue #59 shows it with manufacturer “Qualcomm CDMA Technologies MSM”.
Qualcomm qcom-usb-kernel-drivers GitHub release page for release-win-v1.00.94.13 with the signed zip and installers
Qualcomm’s official release page for QUD 1.00.94.13, with the checksum of each asset. Capture: github.com/qualcomm, 12 Oct 2026.

What each Qualcomm port in Device Manager means

We read the hardware IDs out of the INF files in Qualcomm’s signed package (qcwdfser.inf alone matches 282 different 05C6 product IDs) and checked each composition against the USB gadget scripts Google ships for Pixel phones in AOSP. The names below are exactly what Windows will show.

VID:PID Device Manager name (QUD 1.00.94.13) What the device is doing What you can do
05C6:9008 Qualcomm HS-USB QDLoader 9008 (one port, whole device) Boot ROM emergency download: Sahara protocol, waiting for a Firehose programmer Flash or read storage with QFIL, qdl or edl, plus a Firehose loader signed for that chip and that OEM
05C6:900E Qualcomm HS-USB Diagnostics 900E Two meanings. After a crash, it is the crash-dump / memory-debug mode (qdl README, edl udev rules). With Android running, it is the plain diag composition (AOSP Pixel 4a script). Crash case: dump RAM (edl memorydump), then force 9008. Android case: it is a diag port, not EDL.
05C6:9006 Qualcomm HS-USB Diagnostics 9006 Listed as “Qualcomm Memory Debug” in edl’s udev rules; seen as QHSUSB__BULK on a Pixel 4a 5G (edl #375) Treat like the crash case of 900E
05C6:901D Android DIAG 901D + ADB Interface 901D Android running, sys.usb.config=diag,adb adb reboot edl
05C6:9091 Diagnostics 9091 (MI_00), Modem 9091 (MI_01), WWAN Adapter 9091 (MI_02), ADB Interface 9091 (MI_03) Android running, diag,serial_cdev,rmnet,adb. AOSP calls it the “Default composition” QPST/QXDM diag work; adb reboot edl
05C6:90DB Diagnostics, Modem, WWAN, DPL Data, QDSS Data and ADB Interface 90DB Android running, diag,serial_cdev,rmnet,dpl,qdss,adb Same as 9091, plus trace ports

Rule of thumb on a phone: 9008 is the Firehose flashing port. If you see 9091, 901D or 90DB with Android on screen, the phone is booted and talking, so nothing is bricked. The PID alone is not proof, though. The qdl README also lists 90DB (“diag dump”) and 901D among the IDs some Qualcomm boards use outside Android. Since v2.8, qdl recognises EDL by the interface signature (vendor class FF, subclass FF, protocol 10, 11, 13 or FF), because “new devices keep appearing with new IDs”.

Forcing EDL

Method Needs Source
adb reboot edl Android booted, USB debugging on; some OEMs block it Qualcomm IQ9 FAQ
“EDL cable” (D+ shorted to GND) + forced reboot (Vol Up + Power over 20 s, or battery disconnect) Working XBL/SBL; eMMC or UFS edl README
Short eMMC DAT0 to GND with the battery out, connect the battery, then remove the short eMMC boards, board open edl README
UFS: interrupt the UFS clock at boot, or use the OEM test point Board-specific test points edl README (“very much more complicated”)

Which driver each tool expects

This is the trap behind most “Device detected… and nothing happens” reports. The tools do not share a driver:

Once you swap 9008 to WinUSB with Zadig, the COM port disappears, so QFIL can no longer see the device. To go back, uninstall the device with “Attempt to remove the driver” ticked and replug.

Common problems

“Driver signature” errors from an old package. Use the signed QUD above instead. If you must load an old unsigned driver once, Windows’ Startup Settings has option 7, “Disable Driver Signature Enforcement”, picked at boot. Avoid bcdedit -set TESTSIGNING ON. Microsoft notes that it needs Secure Boot disabled and leaves a “Test Mode” watermark on the desktop until you turn it off.

Stuck at “Mode detected: sahara”. The port is fine, but the loader is wrong or refused. Firehose programmers are tied to the chip and the OEM signing key (edl names them by msmid_pkhash).

Unknown USB Device instead of QHSUSB__BULK. The phone never enumerated. That is a cable or port problem, not a driver one; see the Unknown USB Device guide. Other IDs are in the VID/PID table.

Sources