You are not logged in.

#1 2020-08-16 15:03:43

Jack_CM
Member
Registered: 2012-02-10
Posts: 55

Problem with a wired XBOX ONE controller clone

Hello,
I've recently purchased a wired XBOX ONE controller clone and it does not work out of the box

Premise

This controller is detected and it works well on a WIN10 machine and all my packages are up-to-date.

The device is (I assume correctly) listed in lsusb

$ lsusb -v -s 1:3

Bus 001 Device 003: ID 045e:02d1 Microsoft Corp. Xbox One Controller
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass        71 
  bDeviceProtocol       208 
  bMaxPacketSize0        64
  idVendor           0x045e Microsoft Corp.
  idProduct          0x02d1 Xbox One Controller
  bcdDevice            1.01
  iManufacturer           1 
  iProduct                2 
  iSerial                 3 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0020
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass     71 
      bInterfaceProtocol    208 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval              10
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               8

By using dmesg I gathered more information, in particular that the manufacturer is a company called ShanWan

[  348.182719] usb 1-4: New USB device found, idVendor=045e, idProduct=02d1, bcdDevice= 1.01
[  348.182721] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  348.182722] usb 1-4: Product: Controller
[  348.182723] usb 1-4: Manufacturer: ShanWan    
[  348.182724] usb 1-4: SerialNumber: 00008EED983A挷ᠵ࠸挴
[  348.190496] input: Microsoft X-Box One pad as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-4/1-4:1.0/input/input22

As you can see, the device is at least detected.

The problem

The problem is that no input is actually registered and/or recognized, unlike some other controllers I have hanging around. Therefore I started to have a look at this wiki page on the Gamepads

Attempts so far

1) As suggested by the Wiki page I tried to test my configuration with

cat  /dev/input/by-id/usb-ShanWan_Controller-event-joystick

and no key-strokes were indeed detected / shown.
2) Similar results by testing the Joystick API and the evdev API.
3) I tried to install the SteamOS xpad to replace the default xpad kernel module, same results.
4) Tried everything listed under the xboxdrv section, same result.
5) I also tried what specified in the Using generic/clone controllers sub-section, although I don't think it could help me as the I think this device tries to mimic the original XBOX ONE controller ID, unlike other clones.

Some thoughts

I whish I hade the knowledge to "spoof" the communication between the controller Windows10, maybe I could discover and correct some initialization difference, similarly to what described in the  Using generic/clone controllers sub-section. Maybe someone could tell me if this is a good idea worth pursuing?

Any help would be greatly appreciated, even pointing me out some more appropriate places where this questions should be posted.

Offline

#2 2020-08-17 07:48:12

Jack_CM
Member
Registered: 2012-02-10
Posts: 55

Re: Problem with a wired XBOX ONE controller clone

An update, as I think I found some kind of fix: if I use this patched version of xpad.c and I manually load the newly compiled module then I can finally detect events generated by the controller.
So now the question is: should this patched version of be taken into account by upstream or by archlinux? Or should I take other actions? if the former option is (as I think) the more appropriate then I would mark this issue as solved.

Offline

Board footer

Powered by FluxBB