Skip to content

Connecting USB devices to WSL

This might allow me to use EmulationStation with the RetroPie script in WSL2. I was able to get it running, but it couldn't detect my Xbox gamepad because there is no USB passthrough yet in WSL2.

These are the constraints of my personal scenario:

  • I dual-boot Windows 11 and Fedora 35.

  • EmulationStation is a pain to configure natively on any system, so the RetroPie script is super convenient.

  • RetroPie setup script only works well on Raspberry Pi OS or Debian/Ubuntu-based armhf, armv8, or x86/64 PCs. This would be fine if I used Debian or Ubuntu as my main Linux OS, because then I can just run it natively. But my setup is already kind of entrenched in the Fedora ecosystem, and I enjoy using Fedora.

  • Modifying the script for Fedora is non-trivial.

  • Certain emulators I want to use with EmulationStation are only available for x64, so running it on my armv8 Raspberry Pi is not preferable.

  • I'd prefer to keep my gaming stuff in one place, i.e. Windows 11.

WSL2 allows running graphical GNU/Linux applications. Ubuntu and Debian are both available as WSL distros, and the architecture would be x64. This means the RetroPie script would work, I could run EmulationStation with less overhead** than in a full virtual machine, I can keep my gaming in one place, and I don't have to triple-boot Windows 11, Fedora, and Debian/Ubuntu. So my constraints are satisfied.

** Less overhead in terms of computing ergonomics -- a combination of physical comfort and efficient use of computing resources. It just has more of an out-of-the-box sort of efficiency-feeling, I guess.

UPDATE 2021-11-12: I tried this out last night, and I was able to get the Xbox gamepad available to WSL and see it in the output of lsusb, but for some reason EmulationStation doesn't pick it up.

UPDATE 2021-11-18: I'm very much considering taking up the task of porting the RetroPie setup scripts to Fedora. At the time of this writing, the scripts require Debian, because many of the emulation pacakges depend on Debian tooling, systemd init scripts, Debian-specific filesystem paths, and so forth.


Last updated: 2021-11-19