Skip to content

Instantly share code, notes, and snippets.

@dnmodder
Last active March 10, 2024 14:25
Show Gist options
  • Star 43 You must be signed in to star a gist
  • Fork 11 You must be signed in to fork a gist
  • Save dnmodder/de2df973323b7c6acf45f40dc66e8db3 to your computer and use it in GitHub Desktop.
Save dnmodder/de2df973323b7c6acf45f40dc66e8db3 to your computer and use it in GitHub Desktop.
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.
#!/usr/bin/env python3
import os
import sys
try:
import usb.core
import usb.util
except ImportError:
print("First, install the pyusb module with PIP or your package manager.")
else:
if os.geteuid() != 0:
print("You need to run this script with sudo")
sys.exit()
dev = usb.core.find(find_all=True)
for d in dev:
if d.idVendor == 0x045e and d.idProduct == 0x028e:
d.ctrl_transfer(0xc1, 0x01, 0x0100, 0x00, 0x14)
finally:
sys.exit()
@Breakthru
Copy link

@amardhruva I have tried the xpad kernel driver and can confirm it fixes the problem without having to run the workaround script.

@zyriab
Copy link

zyriab commented Nov 27, 2022

Thank you! I've tried everything on the net and this fixed my controller being detected but not outputting anything on Kali Linux 6.0.0

@alfem
Copy link

alfem commented Jun 13, 2023

Unfortunately this script does nothing in my G-LAB Thorium Gamepad (detected as Shanwan Android gamepad), even when usb ids are 25a7:fa23 :-(

@alfem
Copy link

alfem commented Jun 13, 2023

Hi @dnmodder, Could you give me a clue of how to extract the required hex sequence from the wireshark usb capture? I suppose control sequence must be among the Configuration Requests I read in my capture file, but I do not know what values are.

@zyriab
Copy link

zyriab commented Aug 20, 2023

Also works well on Ubuntu Budgie 22.04.3 LTS - Kernel 6.2.0-26-generic
Make sure to sudo apt install python3-usb first and run the script with sudo
I also have to run xboxdrv (and let it run) beforehand
You da man

@KrisDevelopment
Copy link

KrisDevelopment commented Feb 19, 2024

Here, if you have trouble with pip, try this: fork

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment