Hi, there I’m new to this forum so if it’s not the right place to past this can some please redirect me. I have just recently transferred to Linux everything is going fine so far except that my PDP Xbox 1 controller doesn’t seem to be working and I use for a few games that I play like rocket league so it has been somewhat inconvenient so if someone knows how to get this working, help would be greatly appreciated. If it matters I am using the black camo Xbox, one controller.
This thread might help?
In the last Amazon prime day, I purchased a PDP Wired Controller - Blue Camo (https://www.pdp.com/en/shop/pdp-wired-controller-048-082-na-cm02 ). I think PDP controllers offer the “best bang for the buck” and also I was aware that they work with linux from kernel 4.15 onward (https://www.phoronix.com/scan.php?page=news_item&px=PDP-Xbox-One-Linux-4.15 ).
But the controller did not work, not even the power led was lit. I am running kernel 4.18.
I tested the controller on Windows and it worked, so it was not faulty.
I checked the patch that added support for PDP controllers to XPad and I noticed that the product-ids considered are 0x02AB and 0x02A4:
{ 0x0e6f, 0x02ab, "PDP Controller for Xbox One", 0, XTYPE_XBOXONE },
{ 0x0e6f, 0x02a4, "PDP Wired Controller for Xbox One - Stealth Series", 0, XTYPE_XBOXONE }
My controller has the product-id 0x02A6, so the PDP Wired Controller - Blue Camo is not considered in the patch.
But this is open source, if something is missing, we can add it ourselves.
I had read that PDP controllers have an odd initialization sequence. I can see that sequence in the XPad source code:
/*
* This packet is required for some of the PDP pads to start
* sending input reports. These pads include: (0x0e6f:0x02ab),
* (0x0e6f:0x02a4).
*/
static const u8 xboxone_pdp_init1[] = {
0x0a, 0x20, 0x00, 0x03, 0x00, 0x01, 0x14
};
/*
* This packet is required for some of the PDP pads to start
* sending input reports. These pads include: (0x0e6f:0x02ab),
* (0x0e6f:0x02a4).
*/
static const u8 xboxone_pdp_init2[] = {
0x06, 0x20, 0x00, 0x02, 0x01, 0x00
};
The first step was to check the initialization sequence of my controller, so I needed to see the raw USB data between the Windows driver and the controller. With the help of a friend of mine and Wireshark (and USBPcap https://wiki.wireshark.org/CaptureSetup/USB ) , I was able to see the raw data. For my convenience is the same sequence that XPad already considers.
I added a couple of lines to xpad.c, b…
I tried that but it didnt work, but i just plugged it into my windows laptop and now it’s working on linux so i don’t know what thats about.