Driver for the Xbox/ Xbox 360/ Xbox 360 Wireless/ Xbox One Controllers
This driver includes the latest changes in the upstream linux kernel and additionally carries the following staging changes:
- enable debug outputs to ease resolving issues
- some minor code refactoring improving readability
This driver does not support the XBox One Wireless Adapter (WiFi)
To get that running, see: medusalix/xow
So you've been trying to make your ZEROPLUS Xbox One S controller work, and maybe you've also been tearing your hair apart at it like I was. Well, fret no more! Because of this lovely individual, you can now finally get the damn thing to work! As not everyone'd like to go edit a bunch of lines in a .c file, this fork already includes the xpad.c file with the proper changes. The rest goes on like normal (you have to reboot after the installation btw).
ONLY USE THIS FORK IF YOU'RE SURE YOU HAVE A ZEROPLUS CONTROLLER
sudo git clone https://github.com/sirkhancision/xpad.git /usr/src/xpad-0.4
sudo dkms install -m xpad -v 0.4
cd /usr/src/xpad-0.4
sudo git fetch
sudo git checkout origin/master
sudo dkms remove -m xpad -v 0.4 --all
sudo dkms install -m xpad -v 0.4
sudo dkms remove -m xpad -v 0.4 --all
sudo rm -rf /usr/src/xpad-0.4
This driver creates three devices for each attached gamepad
- /dev/input/jsN
- example
jstest /dev/input/js0
- example
- /sys/class/leds/xpadN/brightness
- example
echo COMMAND > /sys/class/leds/xpad0/brightness
where COMMAND is one of- 0: off
- 1: all blink, then previous setting
- 2: 1/top-left blink, then on
- 3: 2/top-right blink, then on
- 4: 3/bottom-left blink, then on
- 5: 4/bottom-right blink, then on
- 6: 1/top-left on
- 7: 2/top-right on
- 8: 3/bottom-left on
- 9: 4/bottom-right on
- 10: rotate
- 11: blink, based on previous setting
- 12: slow blink, based on previous setting
- 13: rotate with two lights
- 14: persistent slow all blink
- 15: blink once, then previous setting
- example
- the generic event device
- example
fftest /dev/input/by-id/usb-*360*event*
- example
As a regular unpriveledged user
Setup console to display kernel log.
dmesg --level=debug --follow
Open a new console and access the device with jstest.
jstest /dev/input/jsX
Interact with the device and observe that data packets recieved from device are printed to kernel log.
[ 3968.772128] xpad-dbg: 00000000: 20 00 b5 0e 00 00 00 00 00 00 0c 03 04 fd 6c 01 40 fe 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 3968.772135] xpad-dbg: 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 3968.804137] xpad-dbg: 00000000: 20 00 b6 0e 00 00 00 00 00 00 0c 03 04 fd 6c 01 fc fd 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 3968.804145] xpad-dbg: 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 3969.152120] xpad-dbg: 00000000: 20 00 b7 0e 00 00 00 00 00 00 0c 03 04 fd 6c 01 b8 fd 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 3969.152129] xpad-dbg: 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Save dmesg buffer and attach to bug report, don't forget to describe button sequences in bug report.
dmesg --level=debug > dmesg.txt
Ctrl+C to close interactive console sessions when finished.
git format-patch --cover-letter upstream..master
git send-email --to xxx *.patch