Page 1 of 1

Third Party XBox One S Controller support

Posted: Tue Jun 16, 2020 2:24 pm
by audiossis
Built a GIMX on a RPi 3B+ just recently and I appear to have my UART interface sorted out using an Arduino Micro clone. the RPi communicates with the UART interface via the onboard serial port at /dev/ttyS0.

I have two XBox controllers. One genuine wireless unit supplied with my XBox, and one after market wired unit made by Afterglow.
The genuine unit recently had a firmware update after I (perhaps ignorantly) decided to join Insider and try the Beta XBox streaming project.

It's now running 4.8.1923.0

I'm guessing from what I read here https://gimx.fr/forum/viewtopic.php?f=5&t=3395 that was the wrong thing to do as this controller presents the following error:

Code: Select all

pi@raspberrypi:~ $ /usr/bin/gimx -p /dev/ttyS0 -c XOnePadUsb.xml --nograb
controller #1: option -p with value `/dev/ttyS0'
now reading arguments for controller #2
global option -c with value `XOnePadUsb.xml'
grab flag is unset
GIMX adapter detected, controller type is: XOnePad.
Firmware version: 8.0
Reset sent to the GIMX adapter.
Current baudrate: 500000 bps.
Trying baudrate: 2000000 bps.
Trying baudrate: 1000000 bps.
Trying baudrate: 500000 bps.
Using baudrate: 500000 bps.
found pass-through device 0x045e:0x02ea
registered joystick 0 with name "Microsoft X-Box One S pad"
using default refresh period: 4.00ms
Haptic core has source haptic_source_rumble for device 045e:02d1
No haptic sink found for joystick 0 (Microsoft X-Box One pad)
Rumble pass-through to joystick 0 (Microsoft X-Box One pad)
Press the guide button of the controller for 2 seconds.
Exiting
src/gusb.c:384 transfer_timeout: libusb_interrupt_transfer failed with error: No such device (it may have been disconnected)
connectors/usb_con.c:589 usb_send_interrupt_out_sync: error sending interrupt out
src/gusb.c:872 handle_interfaces: libusb_release_interface failed with error: No such device (it may have been disconnected)

The Afterglow unit however, isn't even detected by GIMX. This is what I see when trying the Afterglow unit:

Code: Select all

/usr/bin/gimx -p /dev/ttyS0 -c XOnePadUsb.xml --nograb
controller #1: option -p with value `/dev/ttyS0'
now reading arguments for controller #2
global option -c with value `XOnePadUsb.xml'
grab flag is unset
GIMX adapter detected, controller type is: XOnePad.
Firmware version: 8.0
Reset sent to the GIMX adapter.
Current baudrate: 500000 bps.
Trying baudrate: 2000000 bps.
Trying baudrate: 1000000 bps.
Trying baudrate: 500000 bps.
Using baudrate: 500000 bps.
Error: No game controller was found on USB ports.
Is there a list of third party Xbox One controllers known to work with GIMX? Or a reliable instruction somewhere on getting the firmware downgraded in my genuine controller? Or is it that I'm just doing something dumb?

Re: Third Party XBox One S Controller support

Posted: Tue Jun 16, 2020 2:45 pm
by LoneWolf81
Hi

As far as I know third party controllers are not supported, the reason its not being detected is GIMX is looking for specific device descriptors and the Afterglow one is not in that list.

Connect both controllers and run lsusb and post the output.

Re: Third Party XBox One S Controller support

Posted: Tue Jun 16, 2020 3:45 pm
by audiossis
Thanks for the reply. I thought that might be the case. Connecting both units at the same time doesn't seem to make any difference. Should I enable some extra debugging options?

The device 0e6f:0139 "Logic3" in the out put below is the Afterglow controller and the 06a3:0d62 "Saitek PLC" is an old joystick connected for testing/educational purposes

Code: Select all

pi@raspberrypi:~ $ 
pi@raspberrypi:~ $ lsusb
Bus 001 Device 004: ID 06a3:0d62 Saitek PLC 
Bus 001 Device 028: ID 0e6f:0139 Logic3 
Bus 001 Device 013: ID 046d:c534 Logitech, Inc. Unifying Receiver
Bus 001 Device 012: ID 05ac:024f Apple, Inc. 
Bus 001 Device 011: ID 05ac:1006 Apple, Inc. Hub in Aluminum Keyboard
Bus 001 Device 029: ID 045e:02ea Microsoft Corp. Xbox One S Controller
Bus 001 Device 007: ID 0424:7800 Standard Microsystems Corp. 
Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
pi@raspberrypi:~ $ 
pi@raspberrypi:~ $ 
pi@raspberrypi:~ $ 
pi@raspberrypi:~ $ 
pi@raspberrypi:~ $ 
pi@raspberrypi:~ $ /usr/bin/gimx -p /dev/ttyS0 -c XOnePadUsb.xml --nograb
controller #1: option -p with value `/dev/ttyS0'
now reading arguments for controller #2
global option -c with value `XOnePadUsb.xml'
grab flag is unset
GIMX adapter detected, controller type is: XOnePad.
Firmware version: 8.0
Reset sent to the GIMX adapter.
Current baudrate: 500000 bps.
Trying baudrate: 2000000 bps.
Trying baudrate: 1000000 bps.
Trying baudrate: 500000 bps.
Using baudrate: 500000 bps.
found pass-through device 0x045e:0x02ea
registered joystick 0 with name "Microsoft X-Box One S pad"
using default refresh period: 4.00ms
Haptic core has source haptic_source_rumble for device 045e:02d1
No haptic sink found for joystick 0 (Microsoft X-Box One pad)
Rumble pass-through to joystick 0 (Microsoft X-Box One pad)
Press the guide button of the controller for 2 seconds.
Exiting
src/gusb.c:384 transfer_timeout: libusb_interrupt_transfer failed with error: No such device (it may have been disconnected)
connectors/usb_con.c:589 usb_send_interrupt_out_sync: error sending interrupt out
src/gusb.c:872 handle_interfaces: libusb_release_interface failed with error: No such device (it may have been disconnected)
pi@raspberrypi:~ $ 


Re: Third Party XBox One S Controller support

Posted: Tue Jun 16, 2020 6:10 pm
by LoneWolf81
No it would not have made a difference as you can see the identification is completely different I just wanted to show you why its not detecting in GIMX.

GIMX is looking for the vendor ID in this case 045e

Re: Third Party XBox One S Controller support

Posted: Tue Jun 16, 2020 10:24 pm
by audiossis
Any idea where in the code the Vendor ID's are? I wonder what happens if I add the Afterglow VID to that list?

Re: Third Party XBox One S Controller support

Posted: Thu Jun 18, 2020 1:10 pm
by LoneWolf81
There is no way of simply adding them as its quite a bit of work as its coded into GIMX as a whole, as far as I am aware there is work being done on a fix for the newer firmware. When its going to be released I cant say.

Re: Third Party XBox One S Controller support

Posted: Thu Jun 18, 2020 2:02 pm
by Matlo
Hello,

It would take too much time and energy to support all third party controllers for authentication, which is why only official controllers are currently supported for authentication. Support for the Xbox One controller firmware v4 is work in progress.

Re: Third Party XBox One S Controller support

Posted: Fri Jun 19, 2020 3:33 am
by audiossis
Matlo wrote: Thu Jun 18, 2020 2:02 pm Hello,

It would take too much time and energy to support all third party controllers for authentication, which is why only official controllers are currently supported for authentication. Support for the Xbox One controller firmware v4 is work in progress.
I kinda though you might be working on support for later controller firmwares. I'd picked up on that from some of the other threads I'd seen you comment in. Any idea how far way that support might be?

I can understand not supporting third party controllers. I was more thinking to have a little fun trying to do that on my own and I've already discovered that the original controller has two interrupt driven endpoints where my Afterglow has one interrupt and one isochronous. I'm sure that's only the beginning of the differences though..