Linux gaming has grown up. Steam, Proton, Lutris, Heroic, emulators, and a suspiciously large pile of “just one more game” all run beautifully on modern distributions. Then you plug in your beloved Xbox One controller wirelessly and Linux says, in its calmest possible voice, “Interesting object. No idea what you want me to do with it.”
That is where XOW enters the room wearing a cape made of terminal commands. XOW is a Linux user-mode driver designed for the official Xbox One wireless dongle. It lets many Xbox One wireless controllers communicate with Linux through Microsoft’s USB adapter, then exposes the controller as a normal input device that games can understand.
There is one important modern note before we start mashing buttons: XOW is now considered a maintenance-mode project, and many users should consider Xone, the newer driver from the same developer, especially for Xbox Series X|S accessories. Still, XOW remains useful for older Xbox One controller setups, lightweight systems, and people who already know their dongle works with it. Think of XOW as the reliable older mechanic who still knows exactly where the carburetor is.
What Is XOW?
XOW is a Linux driver for the Xbox One wireless dongle, also known as the Xbox Wireless Adapter for Windows. Instead of using Bluetooth, it communicates through the official USB adapter. That matters because Xbox Wireless and Bluetooth are not the same thing. Bluetooth is the polite neighborhood bus. Xbox Wireless is a private shuttle with its own route, snacks, and occasionally confusing boarding rules.
Under the hood, XOW talks to the dongle through libusb and creates joystick input through Linux’s uinput system. In plain English, XOW listens to the adapter, translates the controller data, and presents it to Linux as a usable gamepad. Games, emulators, and Steam do not need to know the whole dramatic backstory. They simply see a controller and get on with the important business of letting you miss jumps in platformers.
Before You Install: Check Your Hardware
XOW is not for every Xbox controller connection method. Use it when you have the official Microsoft Xbox Wireless Adapter and a compatible Xbox One-era controller. It is not the best choice for a purely wired USB setup, where the kernel’s built-in xpad driver often works automatically. It is also not usually the best choice for Bluetooth, where xpadneo is commonly preferred for Xbox One S, Xbox Series, and Elite Series 2 Bluetooth connections.
Good XOW Candidates
- Xbox One controller model 1537, 1697, 1698, 1708, or Elite Series 2 model 1797
- Official Xbox Wireless Adapter, either the older bulky model or the smaller slim model
- A Linux distribution using systemd
- A desktop, laptop, mini PC, or living-room gaming box where USB dongle wireless is preferred over Bluetooth
When You Should Consider Xone Instead
Use Xone instead of XOW if you want broader support for Xbox One and Xbox Series X|S accessories, audio features, LED control, battery reporting, or newer controller support. Xone is a kernel driver, while XOW is a user-mode driver. That difference is not just nerd confetti; it affects how the controller integrates with the system.
However, if your goal is simple“I have an Xbox One controller, a wireless dongle, and I want to play games tonight without creating a research paper”XOW can still be a practical answer.
Install Dependencies
The exact packages vary by distribution, but you need the same basic ingredients: Git to download the source code, build tools to compile it, curl and cabextract for the firmware script, libusb development files, and systemd for the service.
Ubuntu, Debian, Linux Mint, Pop!_OS
Fedora
Arch Linux, EndeavourOS, Manjaro
openSUSE
Once those packages are installed, you have the software equivalent of a clean workbench. Now we can actually build the driver.
Download, Build, and Install XOW
Open a terminal and choose a temporary working folder. The /tmp directory is fine for a one-time build, but a folder such as ~/src is better if you like keeping source code around for updates.
The BUILD=RELEASE option builds XOW for normal use. If a developer ever asks for debug logs, you can rebuild with BUILD=DEBUG, but for regular gaming, release mode is the cleaner choice.
Install the Wireless Dongle Firmware
XOW needs firmware for the Xbox wireless dongle. After installation, XOW provides a helper script:
Read the prompt shown by the script. It downloads and extracts the required firmware components so the dongle can initialize correctly. If you skip this step, the adapter may sit there like a tiny USB monument to disappointment.
Enable and Start the XOW Service
XOW should run as a systemd service. Do not casually launch it by hand every time you want to play. That is the Linux equivalent of starting your car by opening the hood and poking the starter with a spoon.
Check the service status:
You can also watch live logs while plugging in the dongle or pairing the controller:
If the service is active and waiting for the dongle, you are moving in the right direction. If it fails, do not panic. Linux error messages often look like they were written by a haunted printer, but most XOW problems are fixable.
Plug In the Xbox Wireless Adapter
Insert the Xbox Wireless Adapter directly into a USB port. If possible, avoid a mystery front-panel USB port at first. Use a rear motherboard USB port on desktops or a direct laptop port. Once everything works, you can experiment with hubs and extensions.
To confirm Linux sees the adapter, run:
You should see a Microsoft Xbox Wireless Adapter entry. If it does not appear, try another USB port. If it appears in lsusb but XOW does not initialize it, check the service logs.
Pair the Xbox One Controller
Now comes the fun part: making the controller and dongle notice each other across the room like two shy robots at a school dance.
Pairing With the Adapter Button
- Plug in the Xbox Wireless Adapter.
- Start or restart the XOW service if needed.
- Press and hold the pairing button on the adapter until its light starts blinking.
- Turn on the Xbox controller by pressing the Xbox button.
- Hold the controller’s pairing button until the Xbox button flashes quickly.
- Wait for the controller light to become steady.
Pairing With a Terminal Command
If the adapter button is awkward, stuck, tiny, or clearly designed by someone with the fingers of a watchmaker, XOW can enable pairing mode with a signal:
Then put the controller into pairing mode. Remember that the signal only works after the dongle is plugged in and XOW is running. If you send it before the dongle exists, Linux may simply shrug.
Test the Controller
Once the controller is connected, test it before launching a game. This saves you from debugging controller input while a boss fight is already turning your character into decorative paste.
Quick Terminal Checks
For a more useful test, install evtest or jstest-gtk depending on your distribution. Then press buttons, move sticks, and check whether Linux receives input.
Testing in Steam
Open Steam, go to controller settings, and test the device. Many games work best with Steam Input enabled, while some older or native Linux games prefer direct controller input. If a game behaves strangely, try toggling Steam Input for that specific game instead of changing global settings first.
Troubleshooting Common XOW Problems
Most XOW issues fall into a few familiar buckets: missing firmware, permissions, USB weirdness, pairing memory, or game compatibility. Let’s wrestle them one at a time.
Problem: InputException No Such File or Directory
This usually means the uinput device is missing. Load the module:
To load it automatically at boot, create a small configuration file:
Problem: Permission Denied
XOW needs permission to access input devices and the USB dongle. The installation should add udev rules, but if something went sideways, reload udev and restart the service:
If you built XOW from source in a folder that still contains the install files, you can also copy the udev rules manually if needed:
Problem: Failed to Load Firmware
Run the firmware script again:
If the dongle was already initialized by another driver or process, unplug it, restart the XOW service, and plug it back in.
Problem: LIBUSB_ERROR_BUSY or LIBUSB_ERROR_NO_DEVICE
This means something else may be talking to the dongle, or XOW lost access to it. Stop duplicate processes, unplug the adapter, restart XOW, then plug the adapter back in:
Avoid running multiple XOW instances. One driver per dongle is enough. Two drivers fighting over one adapter is not “high performance.” It is a tiny USB custody battle.
Problem: Pairing Fails Again and Again
Xbox controllers remember their last connection. If you recently used the controller through USB, Bluetooth, Windows, or an Xbox console, it may not reconnect automatically to the dongle. Put both the dongle and controller into pairing mode again. If necessary, remove old Bluetooth pairings from your Linux desktop so the controller stops trying to return to its ex.
Problem: A Game Does Not Detect the Controller
Some games are picky about controller names and mappings. XOW includes a compatibility option that can make connected controllers appear more like Xbox 360 controllers. This can help older games or stubborn launchers. After changing XOW service configuration, reload systemd and restart XOW:
In Steam, also test per-game Steam Input settings. Sometimes the driver is working perfectly, but Steam Input is translating the controller in a way that the game does not expect.
XOW vs Xone vs Xpadneo: Which Should You Use?
Here is the simple version. Use XOW for older Xbox One wireless dongle setups when it works well on your machine. Use Xone for the official wireless adapter if you want the newer route and broader Xbox accessory support. Use xpadneo when connecting over Bluetooth. Use the kernel’s xpad driver when connecting by USB cable.
Linux gives you choices because Linux loves choices. It also loves making you choose between four similar names that all start with “x,” but we forgive it because the penguin is charming.
Keeping XOW Updated or Removing It
Because XOW is installed from source, updates are manual. First stop and disable the service, uninstall the old build, pull new code, rebuild, and reinstall.
If you decide to switch to Xone, uninstall XOW first. Do not keep both fighting over the same dongle unless your weekend plans include reading logs with the emotional intensity of a detective drama.
Real-World Experience: Living With XOW After Setup
Once XOW is working, the experience can feel surprisingly console-like. You press the Xbox button, the controller wakes, the dongle catches it, and your Linux PC is suddenly ready for Rocket League, Hollow Knight, Elden Ring, RetroArch, or whatever game is currently pretending to be relaxing while secretly raising your blood pressure. The best part is that you are not dragging a USB cable across the room like a tripwire designed by a villain.
In day-to-day use, placement matters more than beginners expect. The Xbox Wireless Adapter does not need to be on a throne, but it does appreciate not being buried behind a metal PC case, next to a nest of cables, or wedged under a desk where Wi-Fi signals go to retire. A short USB extension cable can make a big difference. Move the dongle to the front of the desk, and suddenly the controller behaves less like it is communicating through a potato.
Steam is usually friendly once the controller appears correctly. For modern Steam games, enabling Steam Input can improve consistency, especially when games expect Xbox-style prompts. For older native Linux titles, emulators, or non-Steam games launched through Lutris or Heroic, direct input may be better. The practical rule is simple: if the controller is detected but buttons are weird, toggle Steam Input for that game and test again. This is not elegant, but neither is crouching behind a sofa to blow into a cartridge, and gamers have survived worse.
Suspend and resume can be mixed depending on the system. On many desktops, XOW survives sleep just fine. On some laptops or mini PCs, the dongle may need to be unplugged and reinserted after wake. If that happens often, restarting the service is faster than rebooting:
The controller’s pairing memory is another little gremlin. If you pair it to an Xbox console, Windows PC, or Bluetooth device, do not be shocked when it forgets the Linux dongle. That is normal behavior. Re-pair it with the adapter, and life continues. Controllers are loyal, but only to the last device that fed them.
For couch gaming, XOW can be excellent. It keeps latency low enough for most players, avoids the inconsistency some people experience with Bluetooth, and lets an older Xbox One controller remain useful instead of becoming drawer archaeology. Multiplayer can also work well if your controllers and dongle cooperate, though testing one controller first is smarter than inviting three friends over and discovering that Player Two is controlled by cosmic rays.
The honest experience is this: XOW is not the shiny new recommendation for every setup in 2026, but it can still be the perfect fix for a specific problem. If your hardware matches, your USB port behaves, and your firmware installs cleanly, it turns Linux wireless controller setup from “why is this blinking at me?” into “finally, time to play.” That is a beautiful thing.
Conclusion
Using wireless Xbox One controllers on Linux with XOW is absolutely possible, especially when you have the official Xbox Wireless Adapter and a compatible Xbox One controller. The process is straightforward: install dependencies, build XOW, install the dongle firmware, enable the systemd service, pair the controller, and test it in Steam or your favorite game launcher.
The biggest key is choosing the right driver for the right connection. XOW is for the Xbox wireless dongle. Xpadneo is usually for Bluetooth. Xpad is often enough for wired USB. Xone is the newer path for many Xbox One and Xbox Series accessories. Pick the correct tool, and Linux gaming becomes much less mysterious.
And when the controller finally connects, the blinking light turns solid, and your game recognizes every button, take a moment to enjoy it. You have successfully convinced Linux, Microsoft hardware, USB permissions, firmware, systemd, and a plastic gamepad to cooperate. That deserves at least one celebratory lap around the menu screen.