Gamepad detected but no controller inputs

I’ve had a long running issue where my cheap gamepad I bought from china doesn’t work in linux. Using steam’s controller tester, the device appears and can rumble, but no input works. I’ve read online that I may have to setup a python script to send some magical code to activate the device, but comparing the wireshark traces and doing anything with that was beyond my capabilities. dmesg doesn’t come up with any issues which has made this particularly difficult to diagnose. Any help would be greatly appreaciated!
Something odd I’ve noticed is that the gamepad works on the steam-link hardware device, so linux desktops are the only place I can’t get it working.

[  202.324351] usb 3-2: new full-speed USB device number 11 using xhci_hcd
[  202.471118] usb 3-2: New USB device found, idVendor=20d6, idProduct=a01a, bcdDevice= 1.51
[  202.471128] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  202.471133] usb 3-2: Product: Xbox ONE liquid metal controller
[  202.471137] usb 3-2: Manufacturer: Microsoft Inc.
[  202.471140] usb 3-2: SerialNumber: 00009C543E76A1D2
[  202.483320] input: Generic X-Box pad as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:07:00.3/usb3/3-2/3-2:1.0/input/input30

You could try the Kernel Driver Xone which is specifically for the Microsoft controller.
Try following in your config:

hardware.xone.enable = true;
1 Like

I just gave that a shot, and while the logs in dmesg do change, it still doesn’t seem to register any input.

[  100.425305] usb 3-2: new full-speed USB device number 5 using xhci_hcd
[  100.571825] usb 3-2: New USB device found, idVendor=20d6, idProduct=a01a, bcdDevice= 1.51
[  100.571834] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  100.571838] usb 3-2: Product: Xbox ONE liquid metal controller
[  100.571841] usb 3-2: Manufacturer: Microsoft Inc.
[  100.571844] usb 3-2: SerialNumber: 00009C543E76A1D2
[  101.202835] usb 3-2: reset full-speed USB device number 5 using xhci_hcd
[  101.341952] usbcore: registered new interface driver xone-wired
[  101.414581] input: Microsoft Xbox Controller as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:07:00.3/usb3/3-2/3-2:1.0/gip0/gip0.0/input/input26

So how do you connect your controler. Do you have it connected with the usb wireless dongle?
You said it somewhat works in steam. What does actually work and what not (not only steam)
Could you also post the output of lsmod

1 Like

It’s a wired only controller (a cheap chinese knock-off). By somewhat working in steam, I mean the button layout displays properly, and hitting “rumble” will cause the controller to rumble, but the controller’s input isn’t actually working (pc->controller works, controller->pc doesn’t). jstest-gtk shows the layout as well, but once again input doesn’t register.

I’ve also tried following: Out of tree kernel modules (xpad)? - #4 by SKyletoft and modified it for my device, but it doesn’t seem to help.

Lastly, I’ve tried adding a udev rule to force the use of xone_wired, but that doesn’t fix it either (verified through udevadm monitor --property)

lsmod:

Module                  Size  Used by
snd_seq_dummy          12288  0
snd_hrtimer            12288  1
snd_seq               110592  7 snd_seq_dummy
rfcomm                102400  16
qrtr                   57344  2
xt_MASQUERADE          16384  2
xt_mark                12288  2
nft_chain_nat          12288  2
nf_nat                 61440  2 nft_chain_nat,xt_MASQUERADE
af_packet              65536  6
cmac                   12288  2
algif_hash             12288  1
algif_skcipher         12288  1
af_alg                 32768  6 algif_hash,algif_skcipher
bnep                   28672  2
uvcvideo              180224  1
videobuf2_vmalloc      20480  1 uvcvideo
uvc                    12288  1 uvcvideo
videobuf2_memops       16384  1 videobuf2_vmalloc
videobuf2_v4l2         40960  1 uvcvideo
snd_usb_audio         475136  2
videodev              380928  2 videobuf2_v4l2,uvcvideo
snd_usbmidi_lib        53248  1 snd_usb_audio
snd_ump                32768  1 snd_usb_audio
hid_apple              28672  0
snd_rawmidi            53248  2 snd_usbmidi_lib,snd_ump
videobuf2_common       86016  4 videobuf2_vmalloc,videobuf2_v4l2,uvcvideo,videobuf2_memops
snd_seq_device         16384  3 snd_seq,snd_ump,snd_rawmidi
apple_mfi_fastcharge    16384  0
mc                     90112  6 videodev,snd_usb_audio,videobuf2_v4l2,uvcvideo,videobuf2_common
xone_gip_gamepad       12288  0
ff_memless             16384  1 xone_gip_gamepad
nvidia_drm            139264  69
nvidia_modeset       1970176  31 nvidia_drm
iwlmvm                614400  0
nvidia              11517952  691 nvidia_modeset
snd_hda_codec_realtek   200704  1
mac80211             1576960  1 iwlmvm
snd_hda_codec_generic   110592  1 snd_hda_codec_realtek
snd_hda_codec_hdmi     98304  1
eeepc_wmi              12288  0
asus_wmi               98304  1 eeepc_wmi
snd_hda_intel          65536  2
battery                28672  1 asus_wmi
edac_mce_amd           53248  0
snd_intel_dspcfg       36864  1 snd_hda_intel
snd_intel_sdw_acpi     16384  1 snd_intel_dspcfg
libarc4                12288  1 mac80211
edac_core             110592  0
snd_hda_codec         217088  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
btusb                  86016  0
intel_rapl_msr         20480  0
intel_rapl_common      40960  1 intel_rapl_msr
btrtl                  32768  1 btusb
crc32_pclmul           12288  0
polyval_clmulni        12288  0
ledtrig_audio          12288  2 snd_hda_codec_generic,asus_wmi
btintel                57344  1 btusb
snd_hda_core          139264  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
polyval_generic        12288  1 polyval_clmulni
sparse_keymap          12288  1 asus_wmi
gf128mul               16384  1 polyval_generic
ghash_clmulni_intel    16384  0
snd_hwdep              20480  2 snd_usb_audio,snd_hda_codec
btbcm                  24576  1 btusb
platform_profile       12288  1 asus_wmi
btmtk                  12288  1 btusb
i8042                  57344  1 asus_wmi
wmi_bmof               12288  0
snd_pcm               184320  5 snd_hda_codec_hdmi,snd_hda_intel,snd_usb_audio,snd_hda_codec,snd_hda_core
asus_ec_sensors        28672  0
sha512_ssse3           53248  0
xone_wired             20480  0
btrfs                2064384  1
iwlwifi               544768  1 iwlmvm
sp5100_tco             20480  0
sha256_ssse3           32768  2
bluetooth            1081344  44 btrtl,btmtk,btintel,btbcm,bnep,btusb,rfcomm
snd_timer              49152  3 snd_seq,snd_hrtimer,snd_pcm
sha1_ssse3             32768  0
aesni_intel           360448  3
watchdog               49152  1 sp5100_tco
xone_gip               61440  2 xone_gip_gamepad,xone_wired
crypto_simd            16384  1 aesni_intel
evdev                  28672  43
input_leds             12288  0
cryptd                 28672  3 crypto_simd,ghash_clmulni_intel
mousedev               24576  0
snd                   151552  24 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_usb_audio,snd_usbmidi_lib,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_ump,snd_pcm,snd_rawmidi
video                  77824  2 asus_wmi,nvidia_modeset
blake2b_generic        24576  0
led_class              20480  7 snd_hda_codec_generic,videodev,input_leds,xone_gip,iwlmvm,hid_apple,asus_wmi
xor                    20480  1 btrfs
ecdh_generic           16384  2 xone_gip,bluetooth
rapl                   20480  0
acpi_cpufreq           32768  0
k10temp                16384  0
i2c_piix4              32768  0
mac_hid                12288  0
backlight              28672  3 video,asus_wmi,nvidia_modeset
soundcore              16384  1 snd
joydev                 24576  0
ecc                    40960  2 ecdh_generic,nvidia
cfg80211             1343488  3 iwlmvm,iwlwifi,mac80211
igb                   335872  0
xt_conntrack           12288  2
ptp                    45056  2 iwlmvm,igb
nf_conntrack          204800  3 xt_conntrack,nf_nat,xt_MASQUERADE
pps_core               32768  1 ptp
dca                    16384  1 igb
rfkill                 40960  10 iwlmvm,asus_wmi,bluetooth,cfg80211
tpm_crb                28672  0
i2c_algo_bit           20480  1 igb
nf_defrag_ipv6         24576  1 nf_conntrack
nf_defrag_ipv4         12288  1 nf_conntrack
tpm_tis                16384  0
wmi                    45056  3 video,asus_wmi,wmi_bmof
tiny_power_button      12288  0
raid6_pq              122880  1 btrfs
tpm_tis_core           32768  1 tpm_tis
tpm                   114688  3 tpm_tis,tpm_crb,tpm_tis_core
ip6t_rpfilter          12288  1
button                 24576  0
ipt_rpfilter           12288  1
xt_pkttype             12288  2
xt_LOG                 16384  2
nf_log_syslog          24576  2
xt_tcpudp              16384  3
nft_compat             24576  15
nf_tables             376832  415 nft_compat,nft_chain_nat
libcrc32c              12288  4 nf_conntrack,nf_nat,btrfs,nf_tables
sch_fq_codel           20480  4
uinput                 20480  3
atkbd                  40960  0
libps2                 24576  1 atkbd
serio                  28672  2 atkbd,i8042
vivaldi_fmap           12288  1 atkbd
loop                   40960  0
tun                    69632  2
tap                    32768  0
macvlan                36864  0
bridge                397312  0
stp                    12288  1 bridge
llc                    16384  2 bridge,stp
kvm_amd               208896  0
ccp                   155648  1 kvm_amd
rng_core               20480  2 ccp,tpm
kvm                  1347584  1 kvm_amd
irqbypass              12288  1 kvm
fuse                  192512  5
efi_pstore             12288  0
configfs               69632  1
nfnetlink              20480  3 nft_compat,nf_tables
dmi_sysfs              24576  0
ip_tables              28672  0
x_tables               53248  10 xt_conntrack,ip6t_rpfilter,nft_compat,xt_LOG,xt_tcpudp,ipt_rpfilter,xt_pkttype,ip_tables,xt_MASQUERADE,xt_mark
autofs4                61440  0
ext4                 1146880  1
crc32c_generic         12288  0
crc16                  12288  2 bluetooth,ext4
mbcache                16384  1 ext4
jbd2                  204800  1 ext4
sd_mod                 90112  1
hid_generic            12288  0
usbhid                 81920  0
hid                   180224  3 usbhid,hid_apple,hid_generic
ahci                   57344  1
libahci                61440  1 ahci
libata                483328  2 libahci,ahci
nvme                   65536  1
xhci_pci               28672  0
xhci_pci_renesas       24576  1 xhci_pci
nvme_core             233472  2 nvme
xhci_hcd              389120  1 xhci_pci
scsi_mod              327680  2 sd_mod,libata
nvme_common            20480  1 nvme_core
t10_pi                 20480  2 sd_mod,nvme_core
crc32c_intel           16384  4
crc64_rocksoft         16384  1 t10_pi
crc64                  16384  1 crc64_rocksoft
crc_t10dif             16384  1 t10_pi
scsi_common            16384  3 scsi_mod,sd_mod,libata
crct10dif_generic      12288  0
crct10dif_pclmul       12288  1
crct10dif_common       12288  3 crct10dif_generic,crc_t10dif,crct10dif_pclmul
rtc_cmos               28672  1
dm_mod                217088  0
dax                    53248  1 dm_mod

that is strange.
Normally with xone you should be able to connect XBox one Controllers per cable.
You could try hardware.xpadneo.enable = true; , reboot. But that should only work when using the controller wireless.
Could you tell me the concert Model you have?
Also can you test it with a real XBox Controller?

1 Like

That was my impression too which is what lead me to believe something like This script should no longer be necessary thanks to the latest changes made to the master branch of the xpad [https://github.com/paroj/xpad] driver, please give it a try and report any regressions you find. · GitHub could help, but I couldn’t figure out what to send to the controller.

I tried xpadneo as well but it doesn’t work either.
The model number is T-X101, which is vague and not very accurate (it seems to be identical to some other wireless knock-off models). But here’s a link to an alibaba listing for it: https://www.alibaba.com/product-detail/T-X101-Wired-Controller-For-Xboxes_1600937901579.html

My normal xbox one controller works without problems.

Did it work in Windows and if yes did you need to install specific drivers?
If so its probably not gonna work on linux since you probably need to set the controller in a specific mode and, because it is such a unknown controller, I don’t see how we can figure it out.
The only thing you can try is changing the port to at least a 3.0 Port. Maybe this will work.
If not you will need to use your original Xbox one controller.

1 Like

Yeah defining a udev rule would most likely be necessary, but because it such an unknown controller I could not find what to send to the controller to put it in PC mode.

1 Like

It works on windows without any special driver. I would post wireshark traces but don’t really know how I could (and wireshark won’t let me save the linux trace for some reason). I wish I could just use my normal xbox controller, but thanks to microsoft’s non-existent QC, the left bumper is broken.

you could try to put the internals of Xbox controller inside the casing of your T-X101 controller.
But other than that I don’t see a way how you could use this controller in LInux

My biggest confusion here is why it even works on the steam-link (which I assumes runs a stripped down version of linux). Maybe it worked on older kernels but changes to xpad broke support.