diff --git a/XBOXONE.cpp b/XBOXONE.cpp index d3f1fd77..8411140d 100644 --- a/XBOXONE.cpp +++ b/XBOXONE.cpp @@ -179,7 +179,10 @@ uint8_t XBOXONE::Init(uint8_t parent, uint8_t port, bool lowspeed) { // initialize the controller for input writeBuf[0] = 0x05; writeBuf[1] = 0x20; - rcode = XboxCommand(writeBuf, 2); + writeBuf[2] = 0x00; + writeBuf[3] = 0x01; + writeBuf[4] = 0x00; + rcode = XboxCommand(writeBuf, 5); if (rcode) goto Fail; diff --git a/XBOXONE.h b/XBOXONE.h index 11710fcf..60c2806d 100644 --- a/XBOXONE.h +++ b/XBOXONE.h @@ -36,7 +36,8 @@ // PID and VID of the different devices #define XBOX_VID 0x045E // Microsoft Corporation -#define XBOX_ONE_PID 0x02D1 // Microsoft One Wired controller +#define XBOX_ONE_PID1 0x02D1 // Microsoft One Wired controller +#define XBOX_ONE_PID2 0x02DD // Microsoft One Wired controller #define XBOX_REPORT_BUFFER_SIZE 14 // Size of the input report buffer @@ -94,7 +95,7 @@ public: * @return Returns true if the device's VID and PID matches this driver. */ virtual bool VIDPIDOK(uint16_t vid, uint16_t pid) { - return (vid == XBOX_VID && pid == XBOX_ONE_PID); + return (vid == XBOX_VID && (pid == XBOX_ONE_PID1 || pid == XBOX_ONE_PID2)); }; /**@}*/