Skip to content

Instantly share code, notes, and snippets.

@dnmodder
Last active October 3, 2024 21:43
Show Gist options
  • 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()
@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

@AmerXz
Copy link

AmerXz commented Jun 30, 2024

i have a fake ps3 controller that doesn't work even with these scripts i need help

dmesg :
[ 3224.411687] sony 0003:054C:0268.0010: input,hiddev97,hidraw2: USB HID v81.10 Joystick [Nintendo Co., Ltd. USB Gamepad] on usb-0000:00:14.0-1/input0

lsusb :
Bus 003 Device 012: ID 045e:028e Microsoft Corp. Xbox360 Controller

journalctl -f :

Jun 30 19:55:17 Abdulhafez-PC mtp-probe[87962]: checking bus 3, device 45: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1"
Jun 30 19:55:17 Abdulhafez-PC mtp-probe[87962]: bus: 3, device: 45 was not an MTP device
Jun 30 19:55:17 Abdulhafez-PC mtp-probe[87997]: checking bus 3, device 45: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1"
Jun 30 19:55:17 Abdulhafez-PC mtp-probe[87997]: bus: 3, device: 45 was not an MTP device
Jun 30 19:58:06 Abdulhafez-PC sudo[89041]: pam_systemd_home(sudo:auth): New sd-bus connection (system-bus-pam-systemd-home-89041) opened.
Jun 30 19:58:10 Abdulhafez-PC sudo[89041]: abdulhafez : TTY=pts/14 ; PWD=/home/abdulhafez ; USER=root ; COMMAND=/usr/bin/udevadm control --log-priority=info
Jun 30 19:58:10 Abdulhafez-PC sudo[89041]: pam_unix(sudo:session): session opened for user root(uid=0) by abdulhafez(uid=1000)
Jun 30 19:58:10 Abdulhafez-PC sudo[89041]: pam_unix(sudo:session): session closed for user root
Jun 30 19:58:19 Abdulhafez-PC kernel: usb 3-1: USB disconnect, device number 45
Jun 30 19:58:19 Abdulhafez-PC kernel: xpad 3-1:1.0: xpad_try_sending_next_out_packet - usb_submit_urb failed with result -19
Jun 30 19:58:40 Abdulhafez-PC kernel: usb 3-1: new full-speed USB device number 46 using xhci_hcd
Jun 30 19:58:40 Abdulhafez-PC kernel: usb 3-1: device descriptor read/64, error -71
Jun 30 19:58:41 Abdulhafez-PC kernel: usb 3-1: New USB device found, idVendor=054c, idProduct=0268, bcdDevice= 1.00
Jun 30 19:58:41 Abdulhafez-PC kernel: usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Jun 30 19:58:41 Abdulhafez-PC kernel: usb 3-1: Product: USB Gamepad
Jun 30 19:58:41 Abdulhafez-PC kernel: usb 3-1: Manufacturer: Nintendo Co., Ltd.
Jun 30 19:58:41 Abdulhafez-PC kernel: input: Nintendo Co., Ltd. USB Gamepad Motion Sensors as /devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:1.0/0003:054C:0268.0017/input/input79
Jun 30 19:58:41 Abdulhafez-PC kernel: input: Nintendo Co., Ltd. USB Gamepad as /devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:1.0/0003:054C:0268.0017/input/input78
Jun 30 19:58:41 Abdulhafez-PC kernel: sony 0003:054C:0268.0017: input,hiddev97,hidraw2: USB HID v81.10 Joystick [Nintendo Co., Ltd. USB Gamepad] on usb-0000:00:14.0-1/input0
Jun 30 19:58:41 Abdulhafez-PC mtp-probe[89255]: checking bus 3, device 46: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1"
Jun 30 19:58:41 Abdulhafez-PC mtp-probe[89255]: bus: 3, device: 46 was not an MTP device
Jun 30 19:58:41 Abdulhafez-PC kernel: usb 3-1: USB disconnect, device number 46
Jun 30 19:58:41 Abdulhafez-PC mtp-probe[89269]: checking bus 3, device 46: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1"
Jun 30 19:58:41 Abdulhafez-PC mtp-probe[89269]: bus: 3, device: 46 was not an MTP device
Jun 30 19:58:41 Abdulhafez-PC kernel: usb 3-1: new full-speed USB device number 47 using xhci_hcd
Jun 30 19:58:41 Abdulhafez-PC kernel: usb 3-1: New USB device found, idVendor=045e, idProduct=028e, bcdDevice= 5.72
Jun 30 19:58:41 Abdulhafez-PC kernel: usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jun 30 19:58:41 Abdulhafez-PC kernel: usb 3-1: Product: XBOX 360 For Windows
Jun 30 19:58:41 Abdulhafez-PC kernel: usb 3-1: Manufacturer: Nintendo Co., Ltd.
Jun 30 19:58:41 Abdulhafez-PC kernel: usb 3-1: SerialNumber: 000000000001
Jun 30 19:58:41 Abdulhafez-PC kernel: input: Microsoft X-Box 360 pad as /devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:1.0/input/input80
Jun 30 19:58:41 Abdulhafez-PC mtp-probe[89291]: checking bus 3, device 47: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1"
Jun 30 19:58:41 Abdulhafez-PC mtp-probe[89291]: bus: 3, device: 47 was not an MTP device
Jun 30 19:58:42 Abdulhafez-PC mtp-probe[89337]: checking bus 3, device 47: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1"
Jun 30 19:58:42 Abdulhafez-PC mtp-probe[89337]: bus: 3, device: 47 was not an MTP device

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