Steam Link

Steam Link

How To: Use an Xbox One Wireless Adapter with VirtualHere
I just had to reimage my raspberry pi 4, and in the process I had to figure out how I had gotten my Xbox One Elite 2 to connect via the Wireless Adapter. I figure this might be helpful to someone else in the future (maybe myself) so I wanted to write it down. This may not be the best way to do this, but it works for me.

My goal is to have an Xbox One wireless adapter plugged into the raspberry pi, which is then connected to my host PC via VirtualHere. While I could go the route of having the Xbox One controller natively recognized by the raspberry pi, I found that this is actually not a great experience--in particular, I noticed issues with the joystick curves/mappings being messed up. I'd much rather load the windows driver directly, and USB over TCP/IP has low enough latency that this works great.

I'm running a 32bit build of Raspian Buster on my raspberry pi 4. I'm not sure if Xow will build for arm64, and I haven't tried it yet.

First, connect the dongle to your host PC directly and pair it to the controller. Remove the dongle and take it to the raspberry pi.

Perform steps 1-3 here:

https://github.com/medusalix/xow

Don't do step 4 (or if you do, stop and then disable xow).

After rebooting (no idea if its necessary, unplugging and replugging the wireless adapter might work), start Steam Link, enable VirtualHere sharing of the wireless adapter and then start streaming your desktop.

Hold the pairing button on the adapter and see if it starts flashing the LED. If it doesn't, disconnect the adapter and reconnect it, and then try again. Once the adapter is in pairing mode, pair it with your controller and you'll be good. The only thing that won't work right is that if you stop streaming, you'll need to reboot the raspberry pi or connect/disconnect the adapter in order for it to work again. However, it will retain the pairing for the controller permanently. This is actually why you have to leave xow installed (necessary for pairing to work in the first place) but disabled--when xow is running, the pairing gets wiped out every time the adapter is reconnected.

I'm not sure if the issues that this works around are resolved in the successor to xow (xone). However, this works fine for me at the moment, and I prefer using the windows driver to a linux driver anyway.

Hope this helps someone.