Dev Tools

Self-Signing an Unsigned Android USB Driver INF for Windows

Published: July 6, 2026 Applies to: Windows 10, Windows 11, unsigned or self-built Android USB drivers

Turning off driver signature enforcement system-wide is the fastest way to get an unsigned Android USB driver installed, but it's a blunt instrument — it weakens Windows' protection against any unsigned kernel driver, not just the one you're trying to install, for as long as it stays disabled. Self-signing the specific driver package with a local test certificate is more work up front, but it lets the driver install normally afterward without leaving the whole system less protected.

When This Approach Makes Sense

Self-signing is worth the extra steps when a driver needs to be reinstalled repeatedly — across a reformat, a different machine, or after Windows Update resets driver state — since a self-signed package installs cleanly every time afterward without needing signature enforcement toggled off first. For a one-time install of a driver you'll never touch again, the standard disable signature enforcement approach is simpler and perfectly adequate; this is the option for anyone building or repeatedly deploying custom driver packages.

What You Need First

The Signing Process

  1. Generate a test certificate with MakeCert, specifying a subject name and marking it for code signing (-eku 1.3.6.1.5.5.7.3.3).
  2. Install the resulting certificate into both the Trusted Root Certification Authorities and Trusted Publishers certificate stores on the machine that will install the driver — missing either store is the most common reason this process appears to fail silently.
  3. Run Inf2Cat against the driver folder, targeting the correct OS version, to generate a fresh catalog file that matches the current INF contents.
  4. Sign the generated catalog file with SignTool, using the test certificate created earlier.
  5. Right-click the INF file and choose Install, or point Device Manager's Update Driver wizard at the folder as usual — with test signing on and the certificate trusted, the previously unsigned package now installs without a warning.

What This Doesn't Do

A self-signed test certificate only works on machines where Test Mode is explicitly enabled; it has no effect on a normal, out-of-the-box Windows install, and it isn't a way to get a driver genuinely trusted by Microsoft or distributed to other people's machines without them repeating the same setup. It's strictly a local development and repeated-personal-use workaround, not a substitute for a real Microsoft-issued signing certificate, which is a separate paid program intended for actual driver vendors.

Turning Test Mode Off Again

Since Test Mode weakens signature checking system-wide while active (similar in effect to disabling enforcement, just scoped differently), running bcdedit /set testsigning off and rebooting once the driver is no longer needed restores normal signing requirements. Microsoft's own Test Mode documentation covers the option in more depth for anyone doing this regularly as part of driver development rather than a one-off Android driver install.

Secure Boot Interaction

Test Mode and Secure Boot don't always coexist cleanly, and on some systems, enabling Test Mode with Secure Boot active in firmware prevents the test-signed driver from loading even though the certificate itself installed without complaint. If a self-signed driver still won't load after following every step correctly, checking Secure Boot status in the BIOS/UEFI settings, and temporarily disabling it if Test Mode alone doesn't resolve the load failure, is worth trying before concluding the certificate or signing process itself was done wrong.

Who Actually Needs to Do This

For the overwhelming majority of people installing an unsigned Android USB driver a single time, this entire process is more effort than it's worth, and the simpler signature-enforcement bypass is the right tool. Self-signing earns its extra complexity specifically for repeated deployment scenarios: technicians reimaging multiple machines with the same custom driver set, developers iterating on their own driver package during testing, or IT environments that need a driver to survive Windows Update resets without repeating the boot-menu bypass every time. Recognizing which category a given situation falls into before starting saves time either way.