Also known as: Zadig, WinUSB
Zadig is a small Windows utility that installs the generic WinUSB driver onto an SDR dongle. Out of the box, Windows binds an RTL-SDR to its TV-tuner (DVB-T) driver, because the RTL2832U chip was designed as a digital television receiver; Zadig replaces that with WinUSB so SDR software can bypass the TV stack and talk to the USB device directly.1
How it works
On Windows, a USB device is claimed by whatever driver matches its vendor/product ID — for
an RTL dongle that is the bundled DVB-T television driver, which only knows how to hand back
demodulated TV, not the raw IQ an SDR needs. Zadig is a friendly
front end to libwdi, a library that generates and installs a signed driver package on
the fly.2 You pick the device from a list, choose a target driver — WinUSB is the
usual choice, with libusb-win32 and libusbK as alternatives — and Zadig builds a
matching .inf, signs it, and swaps the binding. Afterwards the device is a generic USB
endpoint that libusb-based SDR software (via the librtlsdr driver) can open directly, read
bulk-transfer samples from, and control.
The change is per-device and per-USB-port association, and it is reversible: Windows’ Device Manager can roll the driver back to the original TV driver if you ever want the DVB-T function again. A frequent gotcha is installing WinUSB onto the wrong interface of a composite device, or onto only one physical USB port — plugging the dongle into a different port can present it as “new” hardware that needs the assignment repeated.
In practice
Zadig is a Windows-only concern, and only for the first-time setup of a device. The typical
flow: plug in the dongle, run Zadig, enable Options → List All Devices, select
“Bulk-In, Interface (Interface 0)” (or the RTL entry), confirm the target is WinUSB, and
click Replace Driver. Do this before launching any SDR application. On Linux and
macOS there is no equivalent step — libusb (and IOKit on macOS) can claim the device
without swapping a kernel driver, so tools like rtl_tcp and
GQRX work straight away, sometimes after blacklisting the dvb_usb_rtl28xxu
kernel module.
Relevance to SDR
Nearly every Windows SDR newcomer meets Zadig on day one, because without the WinUSB swap the dongle simply will not appear to SDR software. GopherTrunk’s Windows installer bundles Zadig to automate this step, so the driver is in place before the decoder first runs. GopherTrunk itself talks to the radio through the standard libusb/librtlsdr path — the same interface Zadig unlocks — so once the driver is swapped, the platform difference disappears and the decode chain behaves identically to Linux and macOS.
Sources
-
Zadig — the official Zadig site, the USB driver installer that swaps a dongle’s driver for WinUSB. ↩
-
libusb on Windows — the libusb project wiki, on the WinUSB/libusbK back ends that Zadig (via libwdi) installs to give user-space access to USB devices. ↩