Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

XBox one Bluetooth Controller #53

Open
DigitalKrony opened this issue Nov 21, 2016 · 93 comments

Comments

Projects
None yet
@DigitalKrony
Copy link

commented Nov 21, 2016

This is a question more than an issue,

Is there any information on pairing and connecting the new XBox One Wireless controller released with the S?

While using bluetoothctl

  • The controller is seen
  • I can pair the controller
  • I add it to the trust list
  • When I attempt a connect to the controller, I get a bluez error.
    • there's little information other than Failed to Connect
@paroj

This comment has been minimized.

Copy link
Owner

commented Nov 22, 2016

echo 1 > /sys/module/bluetooth/parameters/disable_ertm

see here: #14 (comment)

@DigitalKrony

This comment has been minimized.

Copy link
Author

commented Nov 22, 2016

Brilliant. Now to get that surfaced better on a search or "How To" so it's more easily found. Thanks so much for pointing me in the right direction.

@paroj paroj added the question label Nov 22, 2016

@Zsuark

This comment has been minimized.

Copy link

commented Nov 28, 2016

Hi everyone,

I'm using the xpad driver under linux (Linux Mint 18) - still no joy having the XBox One S controller supported. It connects temporarily, but the controller isn't recognised in steam or jstest. (Yes I've tried echo 1 > /sys/module/bluetooth/parameters/disable_ertm - which helps but no button presses or stick movements register, and the connection still drops and reconnects and drops a lot.)

If there is anything I can do to help - please let me know.

Thanks

R

@Spiffyk

This comment has been minimized.

Copy link

commented Dec 1, 2016

Hi, I'm having this problem on Linux Mint 18, too. I did try disable_ertm but no luck. When hooked up with a cable, it works as expected.

@terramare

This comment has been minimized.

Copy link

commented Dec 15, 2016

After much trial and error, my Xbox wireless controller is paired and connects to Retropie. Two things made the difference for me: 1) first connecting the controller to a Windows 10 VM vis USB and updating the firmware via the XBox Accessories app, and 2) running the echo 1 > /sys/module/bluetooth/parameters/disable_ertm command mentioned above. Now if I could just get all buttons to register in the Configure Input process in emulationstation, I'd be in business.

@terramare

This comment has been minimized.

Copy link

commented Dec 17, 2016

@DigitalKrony Is your Xbox One S controller fully functional over Bluetooth? I can't get my Select button to be recognized in Input Configuration. Every other button is fine. What's more, if I press the Select button to initiate the configuration, it shows "Keyboard" rather than "Xbox Wireless Controller" on-screen.

I know the physical button is okay because I have two controllers and both are fine wired and both exhibit the same Select button problem over Bluetooth. I have also done a fresh Retropie install.

I am new to the platform and have run out of ideas of things to try. Any leads or ideas most welcome.

Should I submit this as an issue here?

@Spiffyk

This comment has been minimized.

Copy link

commented Dec 18, 2016

After doing pretty much what @terramare did (upgrading the firmware via a VM and disabling ertm) I also managed to connect my Xbox One S controller via bluetooth. However, the mappings are all messed up with many games. I have found one oddity that might be related to the problem: When using jstest-gtk, the controller is displayed as Microsoft X-Box One S pad when hooked up using a cable. However, when I connect it via bluetooth, it is displayed as Xbox Wireless Controller. Also, all the mappings of buttons and axes are in a different order and have different names for each of these cases. There are also more buttons registered when it's connected via Bluetooth.

Here's what it looks like when connected via USB:
jstest-usb

Here's what it looks like when connected via Bluetooth:
jstest-bluetooth

@cgutman

This comment has been minimized.

Copy link
Contributor

commented Dec 18, 2016

Yes, that's because the controller exposes an Android-friendly mapping over Bluetooth since the November firmware update.

This is also the reason that some special buttons like back don't work correctly in some applications. They are now HID Consumer usages rather than HID Button usages. This is required to get the desired back and home behavior on Android's default keymap.

I believe an SDL2 patch has been checked in to fix the inability to use consumer buttons in controller configurations.

@DigitalKrony

This comment has been minimized.

Copy link
Author

commented Jan 2, 2017

@terramare - I wasn't able to try things out til now. I've been denied permission by the system to run the bash task successfully. Trying to track down the case of that now. So as of right now, I've had not progress.

@terramare

This comment has been minimized.

Copy link

commented Jan 2, 2017

@DigitalKrony Do you mean when you are trying to run the echo command? Depending on your distro, first type sudo su, followed by the echo command, and then issue exit to get out of the root account.

@DigitalKrony

This comment has been minimized.

Copy link
Author

commented Jan 2, 2017

@terramare - Thanks for that. I got it connect. Solid light on the Controller but no access in RetroPie. When I run jstest-gtk the Controller throws numbers so I know it's connected and is sharing data. However, on restart of the PI, I loosed the capability to connect to the controller. Also, because it's not showing up in RetroPie, it's not building a *.cfg file so I can't set the appropriate button mappings.

@DigitalKrony

This comment has been minimized.

Copy link
Author

commented Jan 3, 2017

Ok, general update.

I did fresh RetroPie install.
switched into root and ran the bash command from putty.
paired/trusted/connect the XBox One controller.
restarted just emulation station (not the entire OS).
emulation station was able to read and setup the XBox One Controller.
After reboot, however, the XBox controller no longer connects.

Anyone have any ideas?

P.S. when I run the echo bash command from root it doesn't echo anything back. Is that normal? or should I expect a response from a lasting and successful command request?

@terramare

This comment has been minimized.

Copy link

commented Jan 3, 2017

@DigitalKrony Your echo command is working as it should; this change does not persist a reboot on Retropie. You can add this command to your rc.local file and it will run each time your Pi reboots.

Open the file in a text editor:

sudo nano /etc/rc.local

and then add:

echo 1 > /sys/module/bluetooth/parameters/disable_ertm

near the bottom of the file, but before the exit 0 line at the end.

This should get you to the same boat I'm in, which is a non-functional Select button, but otherwise working bluetooth controller. Please confirm if this is the case.

Would love to know of a workaround.

@DigitalKrony

This comment has been minimized.

Copy link
Author

commented Jan 4, 2017

@terramare - Got it. I was able to get things up and running. As for the select button issue you're running into. It's a quick and easy solution.

Utilizing $ jstest /dev/input/js0 I was able to record all of the Axes and Buttons associated with the new controller. This is what I got.

select working in game and EmulationStation.
EDIT

input_device = "Xbox Wireless Controller"
input_driver = "udev"

input_up_btn = "h0up"
input_right_btn = "h0right"
input_down_btn = "h0down"
input_left_btn = "h0left"

input_a_btn = "0"
input_b_btn = "1"
input_x_btn = "2"
input_y_btn = "3"

input_l_btn = "4"
input_l3_btn = "8"
input_l2_axis = "+2"

input_r_btn = "5"
input_r3_btn = "9"
input_r2_axis = "-3"

input_l_y_plus_axis = "+1"
input_l_x_plus_axis = "+0"
input_l_y_minus_axis = "-1"
input_l_x_minus_axis = "-0"

input_r_y_plus_axis = "+4"
input_r_x_plus_axis = "+3"
input_r_y_minus_axis = "-4"
input_r_x_minus_axis = "-3"

input_start_btn = "7"
input_select_btn = "6"

input_enable_hotkey_btn = "6"

input_reset_btn = "1"
input_exit_emulator_btn = "7"

input_save_state_btn = "4"
input_load_state_btn = "5"
input_state_slot_increase_btn = "h0right"
input_state_slot_decrease_btn = "h0left"

input_menu_toggle_btn = "2"

EDIT
These settings were for an RPi2 with a Bluetooth dongle attached. When swapping over to an RPi3, these button settings were no longer valid and the select button no longer throws response in EmulationStation or in JSTest.

@Jacob-Newton

This comment has been minimized.

Copy link

commented Jan 23, 2017

I've managed to connect mine up to the point where everything works except the select button, and binding the triggers never seems to work correctly in emulation station. Has anyone managed to get these working?
Using the model 1708, and a raspberry pi 3 with the built in Bluetooth chip

Also the only way I can get the controller to pair is by using the echo command mentioned above, followed by going into bluetoothctl and running the agent on commands, as well as removing and repairing the controller. Is there any way to run these commands on boot?

@codeart1st

This comment has been minimized.

Copy link

commented Feb 4, 2017

Hey guys which version of bluez do you use. I have no success with my 5.37 version.

bluetoothctl
scan on
scan off

connect, pair, trust all combinations of it didn't seem to work. Also using register-profile with the given HID uuid didn't work for me.

I also tried with updating the firmware of the gamepad to the newest version, but still not working.

I using an ODROID C2 instead of pi2 or pi3.

@mauriliodc

This comment has been minimized.

Copy link

commented Feb 20, 2017

@DigitalKrony how did you manage to get the select working via Bluetooth?
All my buttons are working but the select (using the built-in Bluetooth of my laptop, 16.04 4.4.0-31)

@DigitalKrony

This comment has been minimized.

Copy link
Author

commented Feb 20, 2017

@mauriliodc I gotta be honest, I didn't do anything special. I was using a Raspberry Pi 2 and a Bluetooth Dongle. But when I moved the SD card with the active OS loaded on it to a Pi 3 and a built-in BT, I got totally different button mappings and the select button no longer worked.

@howl

This comment has been minimized.

Copy link

commented Jun 3, 2017

The issue with the keys is more than only the back, homepage, gas, brake codenames issue.

When using with usb cable the module used is xpad, and it works as expected, I mean, the buttons and axes the pad have are detected. When using with bluetooth connection xpad is not used, I suppouse that there is a generic bluetooth hid, and the problem is that despite select becames back and mode becames homepage, there are buttons detected that doesn't exists in the pad.

This makes A button0, B button 1, X button 3 and Y button 4, and the button 2 doesn't exists in the pad.

With evtest and usb you can see:

Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x45e product 0x2ea version 0x301
Input device name: "Microsoft X-Box One S pad"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 304 (BTN_SOUTH)
    Event code 305 (BTN_EAST)
    Event code 307 (BTN_NORTH)
    Event code 308 (BTN_WEST)
    Event code 310 (BTN_TL)
    Event code 311 (BTN_TR)
    Event code 314 (BTN_SELECT)
    Event code 315 (BTN_START)
    Event code 316 (BTN_MODE)
    Event code 317 (BTN_THUMBL)
    Event code 318 (BTN_THUMBR)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value   1538
      Min   -32768
      Max    32767
      Fuzz      16
      Flat     128
    Event code 1 (ABS_Y)
      Value    582
      Min   -32768
      Max    32767
      Fuzz      16
      Flat     128
    Event code 2 (ABS_Z)
      Value      0
      Min        0
      Max     1023
    Event code 3 (ABS_RX)
      Value   -439
      Min   -32768
      Max    32767
      Fuzz      16
      Flat     128
    Event code 4 (ABS_RY)
      Value   -340
      Min   -32768
      Max    32767
      Fuzz      16
      Flat     128
    Event code 5 (ABS_RZ)
      Value      0
      Min        0
      Max     1023
    Event code 16 (ABS_HAT0X)
      Value      0
      Min       -1
      Max        1
    Event code 17 (ABS_HAT0Y)
      Value      0
      Min       -1
      Max        1
  Event type 21 (EV_FF)
    Event code 80 (FF_RUMBLE)
    Event code 81 (FF_PERIODIC)
    Event code 88 (FF_SQUARE)
    Event code 89 (FF_TRIANGLE)
    Event code 90 (FF_SINE)
    Event code 96 (FF_GAIN)
Properties:

And with bluetooth:

Input driver version is 1.0.1
Input device ID: bus 0x5 vendor 0x45e product 0x2fd version 0x903
Input device name: "Xbox Wireless Controller"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 158 (KEY_BACK)
    Event code 172 (KEY_HOMEPAGE)
    Event code 304 (BTN_SOUTH)
    Event code 305 (BTN_EAST)
    Event code 306 (BTN_C)
    Event code 307 (BTN_NORTH)
    Event code 308 (BTN_WEST)
    Event code 309 (BTN_Z)
    Event code 310 (BTN_TL)
    Event code 311 (BTN_TR)
    Event code 312 (BTN_TL2)
    Event code 313 (BTN_TR2)
    Event code 314 (BTN_SELECT)
    Event code 315 (BTN_START)
    Event code 316 (BTN_MODE)
    Event code 317 (BTN_THUMBL)
    Event code 318 (BTN_THUMBR)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value  34120
      Min        0
      Max    65535
      Fuzz     255
      Flat    4095
    Event code 1 (ABS_Y)
      Value  33514
      Min        0
      Max    65535
      Fuzz     255
      Flat    4095
    Event code 2 (ABS_Z)
      Value  32261
      Min        0
      Max    65535
      Fuzz     255
      Flat    4095
    Event code 5 (ABS_RZ)
      Value  32244
      Min        0
      Max    65535
      Fuzz     255
      Flat    4095
    Event code 9 (ABS_GAS)
      Value      0
      Min        0
      Max     1023
      Fuzz       3
      Flat      63
    Event code 10 (ABS_BRAKE)
      Value      0
      Min        0
      Max     1023
      Fuzz       3
      Flat      63
    Event code 16 (ABS_HAT0X)
      Value      0
      Min       -1
      Max        1
    Event code 17 (ABS_HAT0Y)
      Value      0
      Min       -1
      Max        1
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Properties:

So over bluetooth there are 17 buttons where the pad only have 11, BTN_C, BTN_Z, BTN_TL2, BTN_TR2, BTN_SELECT and BTN_MODE shouldn't appear.

Also over usb with xpad there are events for force feedback to work, but they aren't over bluetooth.

And over bluetooth event msc scan appears.

I don't know where to file bug for the bluetooth mapping get corrected.

Also using MAME under windows it shows button names, for example, Joy 1 button 0 is shown in linux but in Windows shows something like this Joy 1 Button A.

@daviderickson

This comment has been minimized.

Copy link

commented Jun 3, 2017

All-
I've got a couple of fixes that solve the select problem for Retropie emulators using libsdl or libretro:

libretro/RetroArch#4692 - MERGED

RetroPie/SDL-mirror#4
RetroPie/SDL-mirror#5
RetroPie/SDL-mirror#6

The last three have not been merged, despite the fact that the code in the pull requests is actually just backported code that has already been accepted into libsdl upstream. I encourage you to comment on these and encourage @joolswills to test/merge them.

@howl

This comment has been minimized.

Copy link

commented Jun 3, 2017

The problem about appearing more buttons than the pad have over bluetooth is not related to that patches.

@daviderickson

This comment has been minimized.

Copy link

commented Jun 4, 2017

@howl the problem at least in Retropie is that the emulators and their libraries are not expecting to scan for key codes outside of a very specific range, and the Xbox One pad via Bluetooth is sending these keys. So these patches fix that. The main problem folks were reporting there was the lack of a select button, which is one of these other key codes.

@howl

This comment has been minimized.

Copy link

commented Jun 4, 2017

I know that issue, moreover there should be also lack of MODE button as it's HOMEPAGE button over bluetooth, also I don't know in retropie, but it's very possible to be also a problem with the button order, as there are buttons detected over bluetooth than doesn't exists in the pad.

Also if we are 100% purist, all this issue is not related to xpad, and that's what i'm asking for, where is the code for the mapping of the pad over bluetooth? In BlueZ layer? or evdev input layer? Because there are more issues over bluetooth to address, I repeat not related to xpad, like your patches that also are not related to xpad.

@howl

This comment has been minimized.

Copy link

commented Jun 4, 2017

I have found that in https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/input/gamepad.rst says the mapping scheme for gamepads over the kernel.

There are discrepancies with the xbox one buttons over usb and over bluetooth as north and west buttons are swapped, Y should be north button but it's west, and X should be west but it's north. Also with xbox 360 pads north and west are also swapped.

Also If I understand it right DPAD should be buttons instead axis, as hat axis are for pressure buttons and at least the xbox pads I could test are just 0 1 buttons.

@BlackVodka

This comment has been minimized.

Copy link

commented Jun 17, 2017

Hi there folks,
please excuse my short question here in between your discussion:
@daviderickson, I cloned and compiled your forked and patched SDL repo from https://github.com/RetroPie/SDL-mirror.git and built and installed that on my retropie / RPi 3 system, as well.
Also, I built the current master of Retroarch, as your patches are already merged into upstream/master branch there AFAIK.
Shouldn't the select button on my Xbox One Bluetooth pad now be working?
It still outputs justs an '@' in jstest .
Am I missing something here, perhaps something quite stupid as a 'sudo ldconfig' or so?
I'd really love to get this pad working here.
Thanks in advance and let me know if I could anyhow help you or if you need more information.

@Spiffyk

This comment has been minimized.

Copy link

commented Jun 17, 2017

@BlackVodka I've been facing this problem yesterday. I've found that the Xbox One S controller probably has two modes for Bluetooth. One intended for Android (which causes these problems) and one intended for Windows (which works correctly). My assumption is that these modes are set via some signal from the host (that xpad does not send). I managed to switch the controller into "Windows mode" by connecting it to a Windows machine via Bluetooth.

edit: fix typo

@BlackVodka

This comment has been minimized.

Copy link

commented Jun 17, 2017

@Spiffyk Thanks for your quick response.
This is an interesting idea, will try that.
Have you complete unpaired the controller from the Pi before connecting to the windows client?
Also, has anybody tried the original 'Microsoft Wireless receiver' bluetooth-dongle on the pi?
Perhaps this thingy does some sort of remapping?
edit ok, nothing changes when using the microsoft bt receiver, blacklisted btbcm and re-paired the pi, no change visible in jstest at all.

@Spiffyk

This comment has been minimized.

Copy link

commented Jun 17, 2017

@BlackVodka Well I haven't tried it with a Pi, I use Ubuntu on my laptop but I don't think this behaviour would be affected by this. I also assume the vendor of your Bluetooth receiver has nothing to do with this, I'd say this is a software issue (may or may not have to do with xpad directly, I don't know what xpad does and does not deal with exactly).

Regarding your question: I think I did unpair the controller from my laptop before trying to connect it to a Windows PC. Basically what I did was unpair the controller from my laptop, paired it with the Windows machine, waited for Windows to identify the device as an Xbox Controller, then unpaired it from the Windows machine and paired it back to the laptop and since then it worked as intended.

@daviderickson

This comment has been minimized.

Copy link

commented Jun 17, 2017

@BlackVodka FYI the receiver is actually 802.11 not bluetooth.

@atar-axis

This comment has been minimized.

Copy link

commented Jul 13, 2018

not really, it's intention is to support the newer (neo) devices - everything from One S upwards...

the new protocol does not fit into the old driver very well, but lets dicuss that somewhere else :)

goldDaniel added a commit to goldDaniel/shape_shooter that referenced this issue Sep 14, 2018

Restructuring code mostly, explained in description
Removed a few features
-Level start / end
-working timer
As I am reworking the Level data and have begun working on loading it from a file.

Also tuned A lot of values regarding gameplay.

NOTE: Linux driver, gamepad inputs are different depending on if the controller is connected via USB vs BLUETOOTH 
thread for bug: 
paroj/xpad#53
@ipkpjersi

This comment has been minimized.

Copy link

commented Nov 2, 2018

Hi guys,

I guess this is a known issue? Does anyone have any updated advice for getting the Xbox One Bluetooth Controller to properly work on Ubuntu 16.04 (I'm on kernel 4.15.0-38-generic x86_64)? Does anyone know if it works properly on Ubuntu 18.04 or is it literally a problem that is inherent with Linux? I'd love to get this problem solved, my 360 controller works fine of course. Honestly, I might even be willing to pay a bit of money to someone who can fix this problem if it helps out because this is something I definitely want to see working on Ubuntu 16.04, it's literally the only thing I can think of that doesn't work...

I'm new to Bluetooth and I just ordered some Bluetooth headphones, hopefully it is plug-n-play and Bluetooth isn't just inherently broken on Linux...

Thanks guys.

@lowlyocean

This comment has been minimized.

Copy link

commented Nov 2, 2018

Xpad is used for xinput devices. The XBox One S gamepad isn't an XInput device when it's used in Bluetooth mode. In bluetooth mode, the xpad driver isn't even aware of it. Instead, the Bluetooth HID drivers on the system perform the mapping. Those drivers don't reflect Microsoft's button mapping properly, which is what causes the confusing behavior

Edit: see #53 (comment) above, particularly the sections Controller is detected as a generic HID device and Incorrect button mapping and Back and Home buttons don't work

@ipkpjersi

This comment has been minimized.

Copy link

commented Nov 2, 2018

Thanks for explaining the issue, and so quickly too. I'm glad it's a common issue and it's not just me, I guess that means it's more likely for this to be fixed. Has anyone found a solution?

@lowlyocean

This comment has been minimized.

Copy link

commented Nov 2, 2018

Looks like you may need to apply these patches to the kernel source code and then rebuild a custom kernel with the patches. And here's a guide for building kernel from source code

@kakra

This comment has been minimized.

Copy link

commented Nov 2, 2018

@ipkpjersi You could try the xpadneo driver from @atar-axis, it works great here:
https://github.com/atar-axis/xpadneo

Here's my kernel patch to build it right into the kernel:
https://github.com/kakra/linux/commits/rebase-4.18/xpadneo

@ipkpjersi

This comment has been minimized.

Copy link

commented Nov 2, 2018

Thanks for all the information. Hmm... I'm guessing there's probably a zero percent chance I will ever see this in Ubuntu 16.04 standard kernels, or is it still possible?

Does this work in Ubuntu 18.04?

@lowlyocean

This comment has been minimized.

Copy link

commented Nov 2, 2018

One of these gentlemen might be able to set up an automated daily build recipe on launchpad mirroring the git repos for their custom kernels, and then you'd be able to get the latest build by just adding their PPA to your sources. Something similar to this.

As for official, official? Not likely... if you don't see these kernel patches packaged in Ubuntu Bionic then they probably won't be backported to Xenial-backports

@kakra

This comment has been minimized.

Copy link

commented Nov 2, 2018

@lowlyocean @ipkpjersi I think @atar-axis added DKMS support to his project, including instructions how to use it. I'm using Gentoo which builds from source anyway, so no need for DKMS. But since Ubuntu is Debian-based, it should work.

@lowlyocean

This comment has been minimized.

Copy link

commented Nov 2, 2018

nice! with DKMS support I think following instructions here will be the way to go. I assume there's no need to blacklist any kernel modules that could conflict with this

@kakra

This comment has been minimized.

Copy link

commented Nov 2, 2018

@lowlyocean I think with the kernel patch you mentioned the gamepad would generally work but support no rumble. At least back when I started working on it, this was the case with that patch.

@ipkpjersi

This comment has been minimized.

Copy link

commented Nov 2, 2018

@kakra
Oh, I had no idea there was a solution (xpadneo) that works so well. Now I'm glad I asked here, now other people who find this issue can see that there's a solution to it!

With DKMS, does that mean it will survive kernel upgrades? That means I shouldn't need to keep re-patching it, I just install it once with the install.sh script and then it's done?

@lowlyocean Wait, do you mean Ubuntu 18.04 does not have this controller supported officially currently? Will it ever be supported officially? Would that xpadneo work on Ubuntu 18.04 as well?

I guess overall what I'm asking is, are there any "downsides" or known limitations to xpadneo or is it perfectly stable and works without any issues?

Thanks for all the quick responses guys, I really appreciate it!

@lowlyocean

This comment has been minimized.

Copy link

commented Nov 2, 2018

With DKMS, does that mean it will survive kernel upgrades? That means I shouldn't need to keep re-patching it, I just install it once with the install.sh script and then it's done?

Yes, that's the idea

@lowlyocean Wait, do you mean Ubuntu 18.04 does not have this controller supported officially currently? Will it ever be supported officially? Would that xpadneo work on Ubuntu 18.04 as well?

AFAIK, Ubuntu 18.04 does not have this controller officially supported. I don't know if it will be supported. I suspect that xpadneo would work fine on Ubuntu 18.04 especially since it's a kernel module not a userspace driver

I guess overall what I'm asking is, are there any "downsides" or known limitations to xpadneo or is it perfectly stable and works without any issues?

No idea- TBH I haven't used xpadneo myself but it appears to work as expected with Bluetooth (maybe not USB)

@kakra

This comment has been minimized.

Copy link

commented Nov 2, 2018

@ipkpjersi I'm using xpadneo here successfully since many months, in native Linux games, in Steam with SteamPlay/Proton, and in Wine. That driver also has some sophisticated workarounds for the various "button-mapping fixes" that have gone into various layers of software (i.e., some versions of SDL have fixes, Steam has fixes, Wine games would map correctly sometimes, sometimes not, depending on which game controller API is used, if two layers apply fixes everything becomes messed up even more). This is all fixed by faking the version/serial identifier of the HID interface. There's some details on this in the docs of xpadneo. It took quite a while for @atar-axis and me to find a proper fix for this. But I'm not sure if this fix is enabled by default but I guess so.

Not sure how DKMS works internally but I think it's designed to rebuild modules upon kernel updates.

@lowlyocean xpadneo is designed to work with a bluetooth dongle. The one provided with the gamepad is actually not bluetooth but wifi-direct. It would enable using the audio jack of the gamepad. So that's the only feature not supported by xpadneo. Apparently, there's no kernel driver for that wifi-direct dongle yet. I think @atar-axis put some research into it already but I don't know about the progress.

@kakra

This comment has been minimized.

Copy link

commented Nov 2, 2018

@ipkpjersi BTW: You may need to upgrade the firmware version of the controller first using a Windows machine... The different firmware versions mess around with the button mappings. The latest firmware seems to have stabilized wrt the mappings.

@lowlyocean

This comment has been minimized.

Copy link

commented Nov 2, 2018

I've never heard of the wifi-direct dongle- the controller has bluetooth built-in. I wouldn't spend much energy if I were @atar-axis on getting the dongle to work just for audio purposes. A case of diminishing returns, I think. Spoofing the version/serial identifier is a clever solution to avoiding bespoke workarounds

@ipkpjersi

This comment has been minimized.

Copy link

commented Nov 2, 2018

I actually have an Xbox One X so I used that to update the firmware of my controller, I tried out this DKMS xpadneo project and wow it works really well, and of course my 360 controller still works too. You guys are awesome, thanks for all the help!

@kakra

This comment has been minimized.

Copy link

commented Nov 2, 2018

@ipkpjersi BTW xpadneo also supports the rumble motors in the triggers which even Windows doesn't support (it's an exclusive XBox feature). Tho, I've not seen a game that could support this yet. But this is also likely a problem with properly exposing the rumble API (it should work with games that use directional rumble). If you find a game that supports this, I'd be happy to test and improve the code.

@ipkpjersi

This comment has been minimized.

Copy link

commented Nov 2, 2018

I can't say I know any games that do support this. Is it possible to turn the rumble off? I find I don't like rumble most of the time. Is there any way to turn it off globally, or is it something that'd have to be done on a per-game basis only?

@kakra

This comment has been minimized.

Copy link

commented Nov 2, 2018

I prefer rumble as a haptic feedback in many games (like in Tomb Raider when you're nearby some hidden treasure). So, I never felt the urge to disable it globally. Maybe ask in the xpadneo issues or look at the configuration sections in the docs. The module may have a parameter to turn rumble off globally. Tho, most games should have an option for this. And Steam may have an option, too, if you turn on Steam controller configuration support for the gamepad.

@chivigoku

This comment has been minimized.

Copy link

commented Nov 2, 2018

Hi folks,

I`ve tried many times xpadneo driver and it works properly in Debian and Raspbian.
However, this driver doesn´t work (at least, I couldn´t) in OSMC.

As far as I could investigate about it, it´s because in OSMC they don't recommend install DKMS and even installing it, you got errors when installing headers (in this case rbp2 headers).

I´m working disabling ertm on my OS but as you guys mentioned above, home and select buttons are not working at all.

Have you guys made work Xbox One S controller on OSMC via bluetooth properly?

@lowlyocean

This comment has been minimized.

Copy link

commented Nov 2, 2018

I switched back to Raspbian because OSMC wasn't much more than Raspbian with pre-installed Kodi media center and auto-boot to Kodi. OSMC guys also made some radical deviations from Raspbian that kept causing me issues

@atar-axis

This comment has been minimized.

Copy link

commented Nov 2, 2018

feel free to open a new issue at xpadneo @chivigoku, I will then give it a try to come up with a solution.

@amueller

This comment has been minimized.

Copy link

commented Jan 28, 2019

Unfortunately the echo 1 > /sys/module/bluetooth/parameters/disable_ertm and variants of that didn't work for me for connecting. It still keeps disconnecting, using Ubuntu 18.04 with Xbox wireless controller and firmware 3.1.1221.0 (which it claims is the newest)

@atar-axis

This comment has been minimized.

Copy link

commented Jan 28, 2019

@amueller give xpadneo a try ;)

@amueller

This comment has been minimized.

Copy link

commented Jan 29, 2019

@atar-axis sweet, worked out of the box! a ppa for ubuntu would be nice ;)

@atar-axis

This comment has been minimized.

Copy link

commented Jan 29, 2019

@amueller Feel free to open a new issue - or even better: a pull request ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.