Issue configuring PowerA Fusion wired XBox One controller
-
Ok, so I did more testing and the problem is the RetroPie
xpad
driver not installing correctly during an update. Since the install script first removes the RetroPiexpad
driver, then installs it again, you're left with the stock Linux kernel driver, which exhibits the problem of mapping the triggers to axis instead of buttons.The install script runs ok, but in the driver install step it prints an error:
[...] Building module: cleaning build area.... make -j4 KERNELRELEASE=4.14.34-v7+ KVERSION=4.14.34-v7+..... cleaning build area.... DKMS: build completed. xpad.ko: Running module version sanity check. Error! Module version 8E0436A9FBE74C6BE0383CF for xpad.ko is not newer than what is already found in kernel 4.14.34-v7+ (85D9866F0D7E8D4F0C731B6). You may override by specifying --force. [...]
Since during an full RetroPie update the screen scrolls fast, this message doesn't get noticed, but it's logged in the update log.
The
xpad
install fails starting with the stock 4.4 image, which includes kernel 4.14.x that probably has a module version newer than the driver installed by the RetroPie-Setup script. I tried the driver install both on the stock image 4.4 image (with just the RetroPie script updated) and on an updated OS (newer kernel version).TL;DR version : You can force the RetroPie
xpad
driver installation by editing the/home/pi/RetroPie-Setup/scriptmodules/supplementary.xpad.sh
file and (around line 75) replacedkms install -m xpad -v 0.4 -k "$kernel"
with
dkms install --force -m xpad -v 0.4 -k "$kernel"
You can easily check which module driver gets loaded by executing
sudo rmmod xpad sudo modprobe xpad
and looking at the kernel log with
dmesg | tail
# Default Linux driver shows [ 367.808250] input: Microsoft X-Box One pad as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/input/input1 [ 367.808955] usbcore: registered new interface driver xpad # RetroPie driver shows [ 640.816875] xpad: loading out-of-tree module taints kernel. [ 640.818925] input: Microsoft X-Box One pad as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/input/input2 [ 640.819752] usbcore: registered new interface driver xpad
@buzz - you think the
xpad.sh
script can be modified (adding--force
to the install step) to get rid of this error ? -
@mitu yeah. Will sort. Thanks
-
@mitu That would be great, it’s been a major issue of mine since the 4.4 release! Thanks for finding the root of the issue as my previous posts have gone nowhere. As an aside, it does look like the XBOXDRV now works correctly again and seems to be a good option.
-
@jasonw I hope this could fix your Xbox controller problem you reported a while back. I got an Xbox controller only yesterday so I could test the driver's behavior.
In your original post, you mentioned you have an Xbox360 wireless controller - do you have an USB dongle for it ? Thexpad
driver is only used for wired Xbox controllers (but I guess the USB dongle appears as a wired controller). -
I can confirm that having added --force to the supplementary/xpad.sh on my machine and run the Update from Source on xpad, it has now resolved my issue.
-
@mitu yes it’s a 3rd party USB dongle for the XBox 360 controller.
-
@mitu I confirm that xpad now works. I removed xboxdrv as it was not as good as xpad now that xpad is fixed.
-
So I have been having issues mapping my Xbox one controller triggers. They currently map as axis 5+ and axis 4+ (or something similar). This seems to leading to trigger spam when playing psx games.
I found my way to this post and am trying to implement the line changes as mention in xpad.sh but the xpad.sh I'm seeing doesn't look anything like what's mentioned. In fact my build_xpad function has one line:
dkmsManager install xpad "$(_version_xpad)"I'm guessing the scripts have changed in an updated retropie release.
Any help would be appreciated.
-
@wozzashek The
xpad
script has been already modified to do that, though there is a recent change (this week-end ?) that added a helper fordkms
.Did you try just to update
xpad
from source - after any updates to the OS you might have done - and reboot ? -
@mitu not sure if this is related but just updated the retropie setup script and it auto updated my xpad driver. It messed up my ES controller config and I had to reset it.
-
@quicksilver Could be, but updating the driver does not change any configurations you had - when was the last time you updated the
xpad
driver ?
@psyke83 Is the update of installed drivers forced now on each script update ? -
@mitu does sudo apt-get upgrade update the xpad driver? If so then it was only a few days ago. Otherwise it's whatever driver comes with the stock 4.4 retropie image.
-
@quicksilver OS upgrades can potentially update the
xpad
driver, but the RP version should override that. There have been also a few other updates related to Bluetooth, if you have a log of the RP update (from~/RetroPie-Setup/logs
) maybe we can see better what was updated from the script. -
Log started at: Wed 6 Feb 23:37:27 EST 2019 RetroPie-Setup version: 4.4.5 (433d33db) System: Linux retropie 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l GNU/Linux = = = = = = = = = = = = = = = = = = = = = Running post update hooks = = = = = = = = = = = = = = = = = = = = = Compiling /opt/retropie/supplementary/runcommand/joy2key.py ... Already on 'master' Your branch is up-to-date with 'origin/master'. Already up-to-date. HEAD is now in branch 'master' at commit 'b8645a8197d977a0492fc56341dc7248f7d7bb10' = = = = = = = = = = = = = = = = = = = = = Installing dependencies for 'xpad' : Updated Xpad Linux Kernel driver = = = = = = = = = = = = = = = = = = = = = /home/pi/RetroPie-Setup/tmp/build/xpad /home/pi/rpie-art = = = = = = = = = = = = = = = = = = = = = Getting sources for 'xpad' : Updated Xpad Linux Kernel driver = = = = = = = = = = = = = = = = = = = = = git clone --recursive --depth 1 "https://github.com/paroj/xpad.git" "/opt/retropie/supplementary/xpad" Cloning into '/opt/retropie/supplementary/xpad'... HEAD is now in branch 'master' at commit 'a66c53c008572db516a60a8d38ef4f823b3d3980' patching file xpad.c Hunk #2 succeeded at 1785 (offset 1 line). Successfully applied patch: /home/pi/RetroPie-Setup/scriptmodules/supplementary/xpad/01_enable_leds_and_trigmapping.diff /home/pi/rpie-art = = = = = = = = = = = = = = = = = = = = = Building 'xpad' : Updated Xpad Linux Kernel driver = = = = = = = = = = = = = = = = = = = = = Creating symlink /var/lib/dkms/xpad/0.4/source -> /usr/src/xpad-0.4 DKMS: add completed. Kernel preparation unnecessary for this kernel. Skipping... Building module: cleaning build area.... make -j4 KERNELRELEASE=4.14.79-v7+ KVERSION=4.14.79-v7+..... cleaning build area... DKMS: build completed. xpad.ko: Running module version sanity check. - Original module - Found /lib/modules/4.14.79-v7+/kernel/drivers/input/joystick/xpad.ko - Storing in /var/lib/dkms/xpad/original_module/4.14.79-v7+/armv7l/ - Archiving for uninstallation purposes - Installation - Installing to /lib/modules/4.14.79-v7+/extra/ depmod.... DKMS: install completed. /opt/retropie/supplementary/xpad /home/pi/rpie-art = = = = = = = = = = = = = = = = = = = = = Configuring 'xpad' : Updated Xpad Linux Kernel driver = = = = = = = = = = = = = = = = = = = = = /home/pi/rpie-art Log ended at: Wed 6 Feb 23:37:53 EST 2019 Total running time: 0 hours, 0 mins, 26 secs
-
@quicksilver I think I may have a clue what happened - you updated your kernel with
apt-get
, this also updated yourxpad
driver (but it also added the default kernel driver:/lib/modules/4.14.79-v7+/kernel/drivers/input/joystick/xpad.ko
). Running RetroPie setup noticed you didn't have the RP driver for the said kernel and re-added it. -
@mitu I'm going to clear off the SD card and flash the latest (4.4?) Retropie image onto it again. I'm running on a 3B+ btw.
I was also having issues pairing the controller via bluetooth even after adding the disable_ertm command to autostart. So I'm starting to think starting with a fresh build and starting again might solve the issues.
If i'm using a fresh build do I even need to run the "Update from source" on the Xpad driver package from within the Retropie setup?
-
@wozzashek said in Issue configuring PowerA Fusion wired XBox One controller:
If i'm using a fresh build do I even need to run the "Update from source" on the Xpad driver package from within the Retropie setup?
My advice would be to update everything first, before attempting to pair the controller, and get the latest versions of the OS and then the RetroPie Setup script. This should also update the
xpad
controller from source, so you don't have to do it specifically. -
@mitu Got it working
I ran the Update Retropie script, followed by running an update to Retropie & OS.
Reboot
I added my /etc/modprobe.d/bluetooth.conf file to disable the ertm, which worked fine
Ran update from source on the xpad driver package for good measure
Reboot
Controller pairs correctly, emulationstation maps the buttonsWhat I noticed is, I was mapping my triggers and they were coming up as 5- & 4-. This would cause trigger spam in games. I tried remapping them a few times, and noticed I was able to map them in emulationstation as 5+ & 4+. I kind of did a 3/4 trigger press held for a second or two then released.
Playing with this mapping now works fine.
-
I've just run "sudo rpi-update" in order to try standalone KMS, and Emulation Station -> Configure Input is now mapping my Xbox One Elite Controller's Left Trigger as "Axis 2-" and not even detecting my Right Trigger.
My normal Xbox One Controller is working without any problem.
Is the solution above something I should look at (or should I just not try experimental packages when I am such a novice)?
-
@AdamBeGood You should have opened a new topic instead of bumping 2 years old topics.
Your issue is probably caused by the usage ofrpi-update
, which overwrote thexpad
driver with the stock Linux kernel version. As explained throughout the topic, RetroPie includes a patched version, which modifies the default driver behavior and maps the triggers as buttons instead of axis.
Don't userpi-update
as a regular update mechanism - it's not intended to be used as such. RetroPie usesdkms
to install additional Linux kernel drivers, so that any normal Linux kernel update (viaapt
) will automatically re-install the drivers. When usingrpi-update
, this is not possible and causes issues if you rely on a certain driver to be installed and working.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.