Short answer: ViGEmBus (short for Virtual Gamepad Emulation Bus) is a specialized Windows Kernel-Mode Driver Framework (KMDF) system driver that enables user-mode software to synthesize fully compliant virtual gamepads. Rather than spoofing games via memory hacking or DLL injection, ViGEmBus creates genuine virtual hardware nodes in Windows Device Manager. Operating system subsystems (such as DirectX, XInput, and DirectInput) interact with these virtual nodes identically to genuine physical Microsoft Xbox 360 controllers or Sony DualShock 4 pads. It serves as the foundational kernel bridge powering XOutput, DS4Windows, modern x360ce, Sunshine/Moonlight streaming, and Parsec.
Executive Summary — The Kernel Backbone of PC Controller Emulation
Before virtual bus drivers existed, PC gamers with non-standard gamepads had to rely on fragile user-space DLL hooking. Tools would drop custom-compiled xinput1_3.dll wrappers directly into game directories. As documented in our XOutput vs x360ce technical breakdown, that legacy model suffered from catastrophic flaws: it crashed with 32-bit/64-bit binary mismatches, failed completely on encrypted PC Game Pass titles, and triggered immediate anti-cheat bans.
ViGEmBus solved this paradigm permanently by shifting controller virtualization down to Ring 0 (Kernel Mode). The table below outlines its fundamental technical specifications:
| Specification Attribute | Technical Value / Driver Detail |
|---|---|
| Driver Binary Name | ViGEmBus.sys (Kernel-Mode Driver Framework, KMDF 1.15) |
| Primary Developer | Benjamin Höglinger-Stelzer (known online as Nefarius) |
| Final Release Version | Version 1.22.0 (Release Date: December 2023; Archived Repository) |
| Target Virtual Devices | Microsoft Xbox 360 Controller (XUSB) & Sony DualShock 4 (DirectInput/HID) |
| Hardware Bus Location | Root\System\0000 (System Devices: Virtual Gamepad Emulation Bus) |
| Virtual Hardware IDs | USB\VID_045E&PID_028E (Xbox 360) / USB\VID_054C&PID_05C4 (DS4) |
| Security & Attestation | Microsoft Hardware Quality Labs (WHQL) signed; compatible with HVCI / Memory Integrity |
| Client Libraries | ViGEmClient.dll (C/C++), Nefarius.ViGEm.Client (.NET NuGet library) |
Understanding Windows Driver Architecture and the Need for a Virtual Bus
To grasp why ViGEmBus is indispensable, one must examine how the Microsoft Windows operating system categorizes and trusts input hardware.
Windows enforces a strict boundary between User Mode (Ring 3) and Kernel Mode (Ring 0). An unprivileged user-mode desktop application (such as XOutput, Chrome, or Steam) cannot simply broadcast an arbitrary memory structure and declare: “An Xbox 360 controller is now connected to Port 1.” The operating system’s Plug and Play (PnP) manager will disregard it completely, because no physical or virtual bus has enumerated the device.
In standard Windows operation, genuine hardware enumeration flows as follows:
- You connect a physical controller into a motherboard USB socket.
- The USB Host Controller Driver (
USBPORT.SYS) detects a voltage change on the data lines. - The Windows PnP Manager queries the hardware for its Device Descriptor (Vendor ID, Product ID, and HID Report Descriptor).
- Windows loads the appropriate functional driver: for an Xbox controller, it loads
xusb22.sys; for a standard DirectInput controller, it loadsHIDClass.sysandHIDUSB.SYS. - DirectX and game engines query XInput or DirectInput APIs, which read data directly from the system driver stack.
ViGEmBus operates as a Virtual Bus Enumerator. Rather than representing physical copper traces or USB silicon, ViGEmBus.sys installs as a root bus driver. When user-mode software commands it to spawn a gamepad, ViGEmBus dynamically creates a Physical Device Object (PDO) directly in the Windows kernel device tree. Windows believes that a genuine physical bus has detected a newly connected controller.
Internal Engineering of ViGEmBus.sys and the IOCTL Bridge
The communication channel between user-mode applications and the kernel bus is engineered around the Windows I/O Control (IOCTL) interface. The architectural flow is illustrated below:
1. User-Mode Client Abstraction
User-mode utilities do not communicate with the raw driver directly; they link against the official client library (ViGEmClient.dll or its managed .NET wrapper). When XOutput launches, it initializes the client by acquiring a Win32 file handle to the bus device interface:
CreateFile("\\.\ViGEmBus", GENERIC_READ | GENERIC_WRITE, ..., OPEN_EXISTING, ...)
2. Dynamic Virtual Device Allocation
When the user clicks “Start” in XOutput, the software dispatches an allocation IOCTL (IOCTL_XUSB_PLUGIN). The driver responds by dynamically attaching a child PDO to the bus. Windows immediately launches its PnP device discovery pipeline, associating the node with Microsoft’s certified driver (xusb22.sys).
3. Real-Time Report Submission
As the user manipulates sticks or presses buttons on their physical pad, XOutput maps those inputs into a standard XUSB_REPORT struct containing 16-bit analog stick values, 8-bit trigger depths, and a 16-bit digital button bitmask. This struct is passed across the user/kernel boundary via IOCTL_XUSB_SUBMIT_REPORT. The driver queues this data into an internal ring buffer, updating the virtual controller state within fractions of a microsecond.
4. Force Feedback (Vibration) Reverse Channel
The bridge operates bidirectionally. When a game engine instructs the controller to vibrate, it calls XInputSetState(). Microsoft’s xusb22.sys formats an output report and passes it down to ViGEmBus.sys. The bus driver triggers a kernel asynchronous completion routine, passing the rumble payload (Left/Right motor speeds from 0 to 255) back to XOutput via an awaited IOCTL (IOCTL_XUSB_REQUEST_NOTIFICATION). XOutput then translates this into DirectInput force feedback (force feedback mechanics guide).
The Evolution from ScpVBus to ViGEmBus and Nefarius VirtualPad
The journey of controller emulation on Windows reflects over a decade of community engineering:
| Era / Driver Name | Architectural Strengths | Critical Limitations & Fate |
|---|---|---|
| ScpVBus (2012–2016) Legacy |
Pioneered virtual Xbox 360 controller emulation for Sony DualShock 3 pads (Scarlet.Crush / ScpToolkit). | Severely unstable: BSOD crashes under high packet concurrency, lacked WHQL signature, permanently broke Windows Bluetooth stacks. Deprecated. |
| ViGEmBus (2017–2023) Current Standard |
Engineered from scratch in modern C/KMDF. Added DualShock 4 emulation, WHQL attestation, dynamic plug/unplug, multi-pad support. | The de facto standard for millions of PC players. Stable, secure, archived at v1.22.0 in late 2023 due to driver signing policy changes. |
| Nefarius VirtualPad (2024+) Next Generation |
Modernized rewrite adopting Microsoft’s latest Virtual Device Bus specifications, modular architecture, and modern signing pipeline. | In active development by Nefarius as the future successor once Windows 11 completely phases out legacy driver signing paths. |
If your system still harbors remnants of old Scarlet.Crush drivers from years ago, they will directly collide with ViGEmBus. Refer to our ScpToolkit replacement guide to purge legacy filter drivers with Legacinator before configuring modern tools.
Supported Emulated Target Controllers and Hardware IDs
ViGEmBus is capable of emulating two specific controller targets at the kernel level:
1. Microsoft Xbox 360 Controller (XUSB Target)
- Hardware ID:
USB\VID_045E&PID_028E - Compatible Windows Subsystems: XInput (1.1, 1.3, 1.4), Windows.Gaming.Input (WGI), DirectInput fallback.
- Target Usage: This is the default target generated by XOutput and x360ce. It provides 100% universal compatibility across virtually every PC title released since 2005. It features two analog sticks, two analog triggers (0–255), a digital D-Pad, 10 digital buttons, and dual-motor rumble.
2. Sony DualShock 4 Controller (DS4 Target)
- Hardware ID:
USB\VID_054C&PID_05C4(v1) orUSB\VID_054C&PID_09CC(v2) - Compatible Windows Subsystems: Raw DirectInput HID, Sony Remote Play, PlayStation PC ports.
- Target Usage: Primarily utilized by DS4Windows. This mode allows software to expose gyroscopic 6-axis motion data, capacitive touchpad coordinates, lightbar RGB color states, and audio jack endpoints to games that natively recognize PlayStation hardware.
The Broader ViGEmBus Ecosystem Beyond XOutput
While XOutput relies on ViGEmBus to convert generic DirectInput gamepads into Xbox controllers, the driver serves as the invisible backbone for dozens of flagship gaming utilities across the PC industry:
DS4Windows (Ryochan7)
Translates PlayStation DualShock 4 and DualSense 5 controllers into virtual Xbox 360 pads for games lacking native Sony controller support, while routing gyro input to mouse aiming via ViGEmBus.
Moonlight & Sunshine Game Streaming
When you stream games from your gaming desktop to a phone, laptop, or Steam Deck over your local network, Sunshine captures client gamepad packets and feeds them to ViGEmBus on the host PC.
Parsec Remote Co-op
Parsec utilizes ViGEmBus to inject remote player inputs directly into the host machine, enabling seamless local multiplayer gaming across the internet without latency degradation.
x360ce 4.x (Virtual Device Mode)
The modern iteration of the classic emulator utilizes ViGEmBus to bypass the DLL injection restrictions imposed by modern Windows architectures and anti-cheat software.
Version 1.22.0 Archival Status and Microsoft Driver Signing Realities
A frequent point of confusion among PC gamers is why ViGEmBus ceased releasing updates after version 1.22.0. Understanding the open-source driver landscape clarifies why this is normal and safe:
The Microsoft Driver Signing Dilemma
In recent Windows revisions, Microsoft systematically altered the requirements for running code in Ring 0. Previously, open-source developers could sign kernel drivers using commercial Cross-Certificates. Microsoft officially deprecated cross-certificates, mandating that all kernel drivers must undergo Windows Hardware Quality Labs (WHQL) testing and attestation signing via an active Microsoft Azure Hardware Developer Portal account.
Maintaining an active corporate hardware signing account demands costly annual Extended Validation (EV) code-signing certificates (\$400–\$700/year) and formal legal entity registration — an immense financial and administrative burden for an independent open-source developer maintaining free software.
Feature-Complete Stability
Benjamin Höglinger announced the formal archival of the ViGEm project after securing official WHQL attestation signatures for v1.22.0. The driver does not require continuous rolling updates because its functional requirements are static: Microsoft’s Xbox 360 controller protocol has not altered in twenty years. ViGEmBus v1.22.0 is functionally complete, rock-solid, and carries valid signatures that Windows 10 and Windows 11 trust implicitly.
Security Architecture, WHQL Attestation, and Windows 11 Memory Integrity
Because ViGEmBus executes within the Windows kernel, users naturally question its security implications and system stability (complete XOutput security overview).
1. Hypervisor-Protected Code Integrity (HVCI) Compatibility
Windows 11 enables Core Isolation / Memory Integrity by default. HVCI utilizes hardware virtualization to isolate the kernel memory space, ensuring that unsigned or vulnerable drivers cannot execute malicious payloads. ViGEmBus v1.22.0 was compiled against modern Windows Driver Kit (WDK) guidelines and passes all Microsoft HVCI validation checks without triggering security alerts.
2. Anti-Cheat Friendliness
Because ViGEmBus creates standard hardware nodes authenticated by Microsoft’s own xusb22.sys, kernel-mode anti-cheat systems (such as BattlEye, Easy Anti-Cheat, and Call of Duty RICOCHET) inspect the driver without hostility (anti-cheat guide). ViGEmBus does not touch game memory, scan private processes, or alter operating system binaries.
3. Open-Source Transparency
The entire source code of ViGEmBus.sys and its client libraries is completely public on GitHub. Independent security researchers and developers worldwide have audited its memory buffers and IOCTL dispatch tables for buffer overflows and privilege escalation flaws.
Driver Installation, Health Diagnostics, and Clean Removal
For a detailed installation walkthrough, consult our step-by-step ViGEmBus Windows installation guide. Here is the technical summary for maintaining driver health:
Verifying ViGEmBus in Windows Device Manager
- Press Win + X and select Device Manager.
- Expand the System devices category near the bottom.
- Locate Virtual Gamepad Emulation Bus.
- Right-click the entry and select Properties. The device status box must display: “This device is working properly.”
Clean Uninstallation Procedure
If you ever need to completely remove ViGEmBus from your system:
- Open Windows Settings → Apps → Installed apps.
- Search for ViGEm Bus Driver.
- Click the three dots and select Uninstall.
- Restart your PC to allow Windows PnP to cleanly unregister the virtual root bus node.
Frequently Asked Questions
Does installing ViGEmBus introduce input lag to my PC games?
No. ViGEmBus operates within kernel space using direct asynchronous I/O completion routines. The internal packet processing delta between receiving a user-mode report and notifying the operating system measures beneath 0.05 milliseconds (50 microseconds). Any noticeable input latency in your gaming setup stems from the physical controller’s USB polling rate, display panel latency, or Bluetooth packet loss, rather than ViGEmBus itself.
Do I need to install ViGEmBus if I already own an authentic Xbox controller?
No. If you connect an authentic Microsoft Xbox 360, Xbox One, or Xbox Series X|S controller, Windows communicates with it directly via native XInput drivers. ViGEmBus is only necessary when you need to synthesize a virtual controller — such as translating DirectInput pads, arcade sticks, or streaming remote inputs.
Why does XOutput display “ViGEmBus driver not found” after I ran the installer?
This error occurs under three specific conditions: (1) The system was not restarted after installation, preventing the PnP manager from enumerating the bus; (2) An obsolete driver from a legacy ScpToolkit installation is blocking the driver binding; or (3) An overly aggressive third-party security suite blocked the kernel driver registration. Restart your computer first; if the issue persists, run the installer as Administrator.
Can ViGEmBus damage my physical hardware or controller ports?
No. ViGEmBus is purely software-defined virtualization. It does not manipulate motherboard voltages, alter USB transceiver clocks, or flash controller firmware. It merely creates software endpoints in the Windows device tree.
Is ViGEmBus still maintained, and what replaces it in the future?
ViGEmBus reached its feature-complete milestone and was archived at v1.22.0 in late 2023. It continues to work without restriction on Windows 10 and 11. Its creator, Nefarius, is developing Nefarius VirtualPad as the modern next-generation successor to navigate evolving Windows kernel driver signing frameworks.
