Afterglow Prismatic Wired Controller for XBox One
-
Has anyone had any joy getting this 3rd party XBone controller to work under the latest retropie?
I've gotten as far as thinking that the xpad driver does not recognise it, and thus is not loading, i've also had no joy with xboxdrv,
What i find odd however is the driver does support this pad, the lsusb command shows it as a logic3 device with following,
Bus 001 Device 005: ID 0e6f:0139 Logic3
And sure enough this device ID is listed under xpad.c
(line 182)
https://github.com/paroj/xpad/blob/1bb421878c002dc198d0d6107e5104441c6ff803/xpad.c{ 0x0e6f, 0x0139, "Afterglow Prismatic Wired Controller", 0, XTYPE_XBOXONE },
Which matches what it is, but no joy..
Trying to clone and compile the (i assume later) version of this kernel module results in compilation error, at first it was a missing kernel header issue, but after (i think) satisfying that, i got a new error
././include/linux/kconfig.h:4:32: fatal error: generated/autoconf.h: No such file or directory
#include <generated/autoconf.h>
^
compilation terminated.
scripts/Makefile.build:264: recipe for target '/var/lib/dkms/xpad/0.4/build/xpad.o' failedI'm now stuck here...
-
Sorry to reply to my own post, but i fixed the issue.
The above source compile error was due to <censored> Kernel sources that are supplied on github. (missing lots of symlinks and so fourth)
I instead followed the accepted answer here http://raspberrypi.stackexchange.com/questions/39845/how-compile-a-loadable-kernel-module-without-recompiling-kernel
to install decent source with required links.after that, I re-ran the dkms command as per the xpad instructions here https://github.com/paroj/xpad
Now this controller works, so I can confirm, Xbox One controller working on retropie using xpad driver (not xboxdrv!) and the shipped version of xpad is hideously out of date.
-
The shipped version of xpad is the version in the 4.4 Kernel. Newer versions will come with kernel updates - but it might be worth me adding an updated xpad driver perhaps as a retropie-setup module. Will add it to our bugtracker.
-
@BuZz that might help a lot of people out! the shipped xpad version works fine for most/OEM cases, but 3rd party pads like this one use different vendor/device ids which the default module won't match and load for, even though they are compatible. the version I compiled contains the device ID for my pad, and as expected the pad now works (All be it limited, cant control LEDs etc. but the important functionality works at least)
An option for bleeding edge xpad under the source install menu would be a good option to have for sure. :D -
I have added the updated xpad driver now to packages -> drivers
-
Im going to add this here because I ran in to another issue, this time with Retroarch (and because this thread comes up on google when searching)
While the controller worked for the ES menu and other port stuff I had previously configured with 360 controller mappings, the config generation script does not properly find and recognise the controller named "Afterglow Prismatic Wired Controller" and is not creating a config for it under /opt/retropie/configs/all/retroarch-joypads
so consequently, when launching an emulator (NES for example) resulted in the message in yellow saying Afterglow Prismatic Wired Controller not configured. Try as i might, it was not auto generating, and for some reason kept defaulting and regenerating configs for my LogitechF310 which wasn't even plugged in this time.
I had to get around this by manually copying an xbox360 mapping .cfg file I had previously, and replacing as follows.
[/opt/retropie/configs/all/retroarch-joypads/AfterglowPrismaticWiredController.cfg ]
input_device = "Afterglow Prismatic Wired Controller"
input_driver = "udev"
input_r_y_plus_axis = "+4"
input_l3_btn = "9"
input_r_x_minus_axis = "-3"
input_r_axis = "+5"
input_save_state_axis = "+5"
input_l2_btn = "4"
input_start_btn = "7"
input_exit_emulator_btn = "7"
input_l_y_minus_axis = "-1"
input_l_axis = "+2"
input_load_state_axis = "+2"
input_up_btn = "h0up"
input_r_y_minus_axis = "-4"
input_a_btn = "0"
input_b_btn = "1"
input_reset_btn = "1"
input_down_btn = "h0down"
input_r2_btn = "5"
input_l_x_plus_axis = "+0"
input_l_y_plus_axis = "+1"
input_r3_btn = "10"
input_right_btn = "h0right"
input_state_slot_increase_btn = "h0right"
input_x_btn = "2"
input_menu_toggle_btn = "2"
input_select_btn = "6"
input_enable_hotkey_btn = "6"
input_l_x_minus_axis = "-0"
input_y_btn = "3"
input_left_btn = "h0left"
input_state_slot_decrease_btn = "h0left"
input_r_x_plus_axis = "+3"
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.