Qualcomm userspace drivers provides logical representations of Qualcomm chipset-enabled mobile devices over USB connection. The drivers support Windows & Linux environments.
- Supports Windows and Linux platforms.
- Supports X64/X86/ARM64 architectures.
- Compatible with Qualcomm tools like QUTS, QXDM, QDL, and more.
This userspace driver solution does not include support for the Qualcomm Messaging Interface (QMI) protocol. QMI is used to communicate with Qualcomm modem subsystems for functions such as data connectivity, voice, SMS, and network management. Applications or tools that rely on QMI-based communication are not supported by this driver.
Users requiring QMI functionality should use the appropriate kernel-mode drivers or a dedicated QMI userspace stack operating over those kernel interfaces.
The Linux userspace driver uses libusb to communicate directly with the USB device. Qualcomm devices typically enumerate as USB composite devices, exposing multiple interfaces simultaneously (e.g., ADB, Diag, modem, DPL). When the Android Debug Bridge (ADB) daemon is active and has claimed its interface on the composite device, libusb operations from this driver may encounter the following issues:
- Interface claim failures — libusb may fail to claim a required interface with
LIBUSB_ERROR_ACCESSorLIBUSB_ERROR_BUSYif the ADB daemon or another process already holds it. - Unreliable I/O — Even when interface claiming succeeds, concurrent access by ADB and libusb on the same composite device can cause dropped transfers, timeouts, or corrupted data.
- Device re-enumeration — In some cases, the conflict may cause the USB device to disconnect and re-enumerate, interrupting both ADB and the userspace driver session.
Workaround: Disable ADB on the device (or stop the ADB daemon on the host with adb kill-server) before using this userspace driver, to avoid interface contention on the composite device.
/
├─ src/ # Qualcomm USB userspace driver source root directory
│ ├── linux/ # Linux userspace driver source
│ └── windows/ # Windows userspace driver source
│ ├── filter/ # Qualcomm USB composite device driver binaries
│ └── ... # Signed driver setup information (INF) and catalog files
├─ README.md # This file
└─ ... # Other files and directories
-
Installation
Right click the
.inffile in output folder and select Install. Or install all drivers by executingsrc\usb\windows\install.bat -
Uninstallation (Device Manager)
- Open Device Manager.
- Right click the target device and select Uninstall device.
- Check Attempt to remove the driver for this device.
- Click Uninstall.
- Uninstallation (Command Line)
- Locate the Published Name of the installed driver package:
pnputil /enum-drivers- Delete the driver from system
pnputil /delete-driver oemxx.inf /uninstall /forceOption 1. Directly using scripts for installation/uninstallation.
Navigate to folder src/linux/build
- Installation
./qcom_userspace.sh install- Uninstallation
./qcom_userspace.sh uninstallOption 2. Create debian package using pack_deb bash script.
Navigate to folder src/linux/
- sudo chmod +x pack_deb
- ./pack_deb zipunzip and follow the instructions in the README.md inside the zip file.
- CMake 3.10 or higher
- GCC 7 or higher (Linux)
- Visual Studio 2019 or higher (Windows)
- Navigate to
src/linux/build - Run
cmake .. - Run
make
- Navigate to
src/windows - Open
qcom-usb-userspace.slnin Visual Studio - Build the solution
The drivers are automatically loaded when a compatible Qualcomm device is
- Fork the repository.
- Create a feature branch (
git checkout -b feature/my-feature). - Make your changes and ensure they compile on all supported platforms.
- Submit a pull request with a clear description of the changes.
Please follow the existing coding style and run the appropriate static analysis tools before submitting.
Please review the security before reporting vulnerabilities with the project
Please review the Qualcomm product license, code of conduct & terms and conditions before contributing.
For questions, bug reports, or feature requests, please open an issue on GitHub or contact the maintainers