You are not logged in.

#1 2021-01-28 10:30:06

tofiffe
Member
Registered: 2016-02-14
Posts: 33

Getting wired Xbox One S clone controller to work

I have a clone controller, that supposedly supports original controller's protocol (says so on the box), and features USB connector.

In lsusb it shows up like the following:

Bus 001 Device 013: ID 045e:02ea Microsoft Corp. Xbox One S Controller

It also shows up in /dev/input/js0 as a new device. jstest/dev/input/js0 prints the following:

Driver version is 2.1.0.
Joystick (Microsoft X-Box One S pad) has 8 axes (X, Y, Z, Rx, Ry, Rz, Hat0X, Hat0Y)
and 11 buttons (BtnA, BtnB, BtnX, BtnY, BtnTL, BtnTR, BtnSelect, BtnStart, BtnMode, BtnThumbL, BtnThumbR).
Testing ... (interrupt to exit)
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:-32767  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:-32767  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:-32767  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:-32767  3:     0  4:     0  5:-32767  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:-32767  3:     0  4:     0  5:-32767  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3
Axes:  0:     0  1:     0  2:-32767  3:     0  4:     0  5:-32767  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:off

And the whole thing does not change regardless of what I press on the controller. Perhaps worthy of note is that if I attach the USB there is immediate vibration feedback, and lights on it start to blink, the lights continue to blink as long as the controller is attached.

dmesg after attaching contains the following:

[16258.720234] usb 1-3: USB disconnect, device number 13
[16260.425212] usb 1-3: new full-speed USB device number 14 using xhci_hcd
[16260.585521] usb 1-3: New USB device found, idVendor=045e, idProduct=02ea, bcdDevice= 3.01
[16260.585524] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[16260.585525] usb 1-3: Product: Controller
[16260.585525] usb 1-3: Manufacturer: ZEROPLUS
[16260.585526] usb 1-3: SerialNumber: 3136303033313032363445303234
[16260.597517] input: Microsoft X-Box One S pad as /devices/pci0000:00/0000:00:01.2/0000:01:00.0/0000:02:08.0/0000:05:00.1/usb1/1-3/1-3:1.0/input/input45

I have tried manually loading xpad, with no difference, running `sudo xboxdrv -L` reports that no controllers have been detected. I have also tried running the script suggested in https://wiki.archlinux.org/index.php/Ga … trollers_2, adjusting the vendorId and productId, getting byte response back, but the controller continues to blink and jstest reports no changes.

How can I fix this?

Offline

#2 2021-01-28 11:06:05

Awebb
Member
Registered: 2010-05-06
Posts: 6,286

Re: Getting wired Xbox One S clone controller to work

What device is that? Can you provide manufacturer and model or perhaps a link? Amazon link would do the trick.

Offline

#3 2021-01-28 11:15:41

tofiffe
Member
Registered: 2016-02-14
Posts: 33

Re: Getting wired Xbox One S clone controller to work

Offline

#4 2021-01-28 20:31:54

tofiffe
Member
Registered: 2016-02-14
Posts: 33

Re: Getting wired Xbox One S clone controller to work

After checking through the source code of xpad it would seem that indeed some initialization sequence needs to be sent to the controller, but I don't know how to force that send to happen, and I don't know what to modify the script to: https://github.com/torvalds/linux/blob/ … pad.c#L470

By the looks of it, this controller is missing from xboxdrv, adding it manually in xbox mode fails, as interface class, subclass and protocol dont match, they're 255, 255, 208 in the controller I have, expected values being 88, 66, 0

Offline

#5 2021-01-30 10:55:59

tofiffe
Member
Registered: 2016-02-14
Posts: 33

Re: Getting wired Xbox One S clone controller to work

I have done some more digging, using the xpad module from github, by the looks of it there's an error in xpad, printed 5 times:

[ 6037.026458] xpad 3-1:1.0: xpad_irq_in - urb shutting down with status: -2

Looking through the source code the response seems to be ENOENT, device does not exist

Offline

Board footer

Powered by FluxBB