If you're using an Xbox One controller on Linux, you should keep an eye on the xow driver which aims to support multiple versions of it and multiple controllers.
xow 0.3 was released last night adding in full rumble functionality "including triggers", udev rules so you no longer require root/super user privileges, there's a Makefile uninstall target and they added support for the Xbox One Elite Controller too. Additionally, it fixes an incompatibility with the mt76 kernel driver and a crash when unplugging the dongle while pairing.
Currently, the people hacking away at it said the driver supports both the slim and bulky versions of the Wireless Dongle and at least the Xbox One controllers with model numbers 1697, 1698 and 1708.
Really great to see people work on projects like this, where no official support is given to our platform it's amazing that people can do this. These types of projects make gaming on Linux just that little bit nicer and easier.
With xow, keep in mind it's still quite early in development and they could likely use more feedback especially on the various different models.
You can find it on GitHub.
Quoting: MayeulCSomeone (I would if I had time and an xbone controller) should really upstream that into a kernel module (it's GPLv2 as well).
If you start a fundraiser I could donate 20€.
Last edited by BrazilianGamer on 24 January 2020 at 2:01 pm UTC
Quoting: MayeulCSomeone (I would if I had time and an xbone controller) should really upstream that into a kernel module (it's GPLv2 as well).Heh, I just looked up the source code... It's C++, so this particular project will provide userspace driver support at best. :( Unless the project will be rewritten in C, it won't be accepted in kernel.
Quoting: PompesdeskyAny chance this would help in case of Bluetooth connection with Xbox One controller ? Mine keeps connecting/deconnecting indefinetely, I could never get it to work.Bluetooth connection to Xbox One S controller (I presume that's the one you are talking about) works (almost) out of the box… except you need to switch a specific bluetooth driver option. Create file /etc/modprobe.d/bluetooth.conf and place following line inside:
options bluetooth disable_ertm=1
Restart computer or reload module after creating the file. If you want to learn what this file is, documentation is in manual pages: man modprobe and man modprobe.d
Quoting: GuestNot even sure how to go about github things..... so how would I install this? Did do a search etc...but not much helping.Instructions are right there in the README.md file. If you don't know how to follow them, then I would advise not to install it and wait for your distribution to prepare a package instead. This is an experimental driver developed outside of the kernel - if you don't know what you're doing, you could easily break your Linux installation.
Last edited by dreamer_ on 24 January 2020 at 4:22 pm UTC
Quoting: PompesdeskyAny chance this would help in case of Bluetooth connection with Xbox One controller ? Mine keeps connecting/deconnecting indefinetely, I could never get it to work.
I have been using bluetooth connectivity for about a year on Linux, after getting the ERTM setting fixed so it didn't repeatedly dis/connect. Even then, I fairly often had problems with multiple XBox One S controllers. They would become unresponsive during a race even though the lights said it was connected fine, or rumble going nuts and not stopping till I quit the game and relaunched to continue. Many times in Rocket League, my controls would just go dead and I'd have to turn off the controller and back on. If I was lucky this would work and I'd only be a bad teammate for <10secs, but otherwise I'd have to completely shut down and power off the PC to do a hardware reset of the bluetooth receiver.
Since switching to xow, it's great. There was a rumble problem with ALL games launched under Proton, but that has been fixed. I've been cloning the repo and building a new version when there's been worthy changes, but now that .3 is out it should be in great shape for use.
Under Windows, you can plug any 3.5mm headset in to the controller and it would automatically divert OS audio to the headset, and switch back when unplugged. I thought this was an amazing feature. The xow author has it on his todo list for Linux, but is looking for help on Github. Would love to see that last part working.
Quoting: PompesdeskyAny chance this would help in case of Bluetooth connection with Xbox One controller ? Mine keeps connecting/deconnecting indefinetely, I could never get it to work.Using xpadneo makes things a bit easier.
But I've experienced a lot of issues with Bluetooth dongles. Particularly dongles that use the Broadcom chipset. They connect easily, but keep disconnecting. Dongles that use the CSR chipset, have trouble connecting initially, but tend to work well afterwards.
At xpadneo, some users have been reporting how different Bluetooth dongles work: https://atar-axis.github.io/xpadneo/#bt-dongles
Quoting: NovaTinyQuoting: MayeulCSomeone (I would if I had time and an xbone controller) should really upstream that into a kernel module (it's GPLv2 as well).
If you start a fundraiser I could donate 20€.
Haha, thanks, but I guess a bounty would be the best way to go about this (and time is harder to get than money right now).
Quoting: dreamer_Quoting: MayeulCSomeone (I would if I had time and an xbone controller) should really upstream that into a kernel module (it's GPLv2 as well).Heh, I just looked up the source code... It's C++, so this particular project will provide userspace driver support at best. :( Unless the project will be rewritten in C, it won't be accepted in kernel.
Well, C code is just there to tell the kernel how the thing works, the hard part is figuring that out. Even if it was written in C, you'd still have to rewrite most of it to leverage the kernel interfaces anyway. And being license-compatible, you're free to open two editors side-by-side, and start using exactly the same algorithms, instead of reverse-engineering them from the hardware, or driver (would have been a shame to have to reverse-engineer an open source driver...).
See more from me