Post: [GitHub Code] Updated Xpad Linux Kernel Driver for Xbox One/360
04-09-2017, 06:46 AM #1
Hydrogen
Super Mod
(adsbygoogle = window.adsbygoogle || []).push({}); Hello NextGenUpdate, today I found this neat GitHub that was recently updated a few weeks ago with the Xpad Kernel Drivers you could use for the Xbox One/360. Everything you need to read and learn is in the GitHub I will provide for you.

GitHub: You must login or register to view this content.

Here is what the README.md had to say from the developer: "Updated Xpad Linux Kernel Driver"

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


Installing

    sudo git clone https://github.com/paroj/xpad.git /usr/src/xpad-0.4
sudo dkms install -m xpad -v 0.4


Updating

    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


Removing

    
sudo dkms remove -m xpad -v 0.4 --all
sudo rm -rf /usr/src/xpad-0.4


Usage

This driver creates three devices for each attached gamepad

1.) /dev/input/jsN


  • Example:
        jstest /dev/input/js0
    



2.) /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


The generic event device:


  • Example:
         fftest /dev/input/by-id/usb-*360*event*



Debugging

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.

Sending Upstream


    git format-patch --cover-letter upstream..master
git send-email --to xxx *.patch
Last edited by Hydrogen ; 04-09-2017 at 06:49 AM.

The following user thanked Hydrogen for this useful post:

Mr_Snake_-
04-20-2017, 10:10 PM #2
Mr_Snake_-
Little One
this sounds cool!

Copyright © 2024, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo