├── README.md ├── dualsense ├── DescriptorDump_Wireless_Controller (DualSense Model CFI-ZCT1W).txt ├── controller_update_from_282_to_297.pcapng.gz ├── dualsense.pcap ├── dualsense_bluetooth.pcap ├── dualsense_bluetooth_hid_report_descriptor.bin ├── dualsense_bluetooth_hid_report_descriptor.txt ├── dualsense_hid_report_descriptor.bin └── dualsense_hid_report_descriptor.txt ├── dualshock4 ├── DescriptorDump_Wireless_Controller (DualShock4 Model CUH-ZCT2E).txt ├── dualshock4.pcap ├── dualshock4_bluetooth_hid_report_descriptor.bin ├── dualshock4_bluetooth_hid_report_descriptor.txt ├── dualshock4_hid_report_descriptor.bin └── dualshock4_hid_report_descriptor.txt ├── lunacontroller ├── DescriptorDump_HID_Amazon_Game_Controller (Luna Controller Model T28B69).txt ├── DescriptorDump_XINPUT_Amazon_Game_Controller (Luna Controller Model T28B69).txt ├── README.md ├── luna_bluetoothle_hid_report_descriptor.bin ├── luna_bluetoothle_hid_report_descriptor.txt ├── luna_usb_hid_report_descriptor.bin └── luna_usb_hid_report_descriptor.txt ├── photo.jpg ├── stadiacontroller ├── DescriptorDump_Stadia_Controller (Model H2B).txt ├── README.md ├── stadiacontroller.pcap ├── stadiacontroller_bluetoothle_hid_report_descriptor.bin ├── stadiacontroller_bluetoothle_hid_report_descriptor.txt ├── stadiacontroller_hid_report_descriptor_old.bin └── stadiacontroller_hid_report_descriptor_old.txt ├── switchpro ├── DescriptorDump_Pro_Controller (Nintendo Switch Pro Model HAC-013).txt ├── switchpro.pcap ├── switchpro_hid_report_descriptor.bin └── switchpro_hid_report_descriptor.txt ├── xbox360 ├── DescriptorDump_Controller (Xbox 360 Wired Model X854237-001).txt ├── xusb_arcadestick_hid_report_descriptor.bin ├── xusb_arcadestick_hid_report_descriptor.txt ├── xusb_callbutton_hid_report_descriptor.bin ├── xusb_callbutton_hid_report_descriptor.txt ├── xusb_dancepad_hid_report_descriptor.bin ├── xusb_dancepad_hid_report_descriptor.txt ├── xusb_flightstick_hid_report_descriptor.bin ├── xusb_flightstick_hid_report_descriptor.txt ├── xusb_gamepad1_hid_report_descriptor.bin ├── xusb_gamepad1_hid_report_descriptor.txt ├── xusb_gamepad2_hid_report_descriptor.bin ├── xusb_gamepad2_hid_report_descriptor.txt ├── xusb_gamepad_hid_separate_triggers(like DualShock4).reg ├── xusb_gamepad_hid_separate_triggers.reg ├── xusb_guitar1_hid_report_descriptor.bin ├── xusb_guitar1_hid_report_descriptor.txt ├── xusb_guitar2_hid_report_descriptor.bin ├── xusb_guitar2_hid_report_descriptor.txt ├── xusb_wheel1_hid_report_descriptor.bin ├── xusb_wheel1_hid_report_descriptor.txt ├── xusb_wheel2_hid_report_descriptor.bin └── xusb_wheel2_hid_report_descriptor.txt ├── xboxone ├── DescriptorDump_Adapter (Xbox Wireless Adapter for Windows).txt ├── DescriptorDump_Controller (Xbox Elite Series 2 Model 1797).txt ├── DescriptorDump_Controller (Xbox One Elite Model 1698).txt ├── DescriptorDump_Controller (Xbox One Model 1537).txt ├── DescriptorDump_Controller (Xbox One Model 1708).txt ├── DescriptorDump_Controller (Xbox Series Model 1914).txt ├── xboxgip_gamepad_hid_report_descriptor.bin ├── xboxgip_gamepad_hid_report_descriptor.txt ├── xboxone_model_1708_bluetooth_hid_report_descriptor.bin ├── xboxone_model_1708_bluetooth_hid_report_descriptor.txt ├── xboxone_model_1708_firmware_5_13_hid_report_descriptor.bin ├── xboxone_model_1708_firmware_5_13_hid_report_descriptor.txt ├── xboxone_model_1708_firmware_5_17_hid_report_descriptor.bin ├── xboxone_model_1708_firmware_5_17_hid_report_descriptor.txt ├── xboxone_model_1797_bluetooth_dump.pcap ├── xboxone_model_1797_bluetooth_hid_report_descriptor.bin ├── xboxone_model_1797_bluetooth_hid_report_descriptor.txt ├── xboxone_model_1914_bluetoothle_hid_report_descriptor.bin ├── xboxone_model_1914_bluetoothle_hid_report_descriptor.txt ├── xboxone_model_1914_firmware_5_17_hid_report_descriptor.bin └── xboxone_model_1914_firmware_5_17_hid_report_descriptor.txt └── zeroplusxboxwireless ├── DescriptorDump_Controller (Zeroplus Controller).txt ├── README.md ├── zeropluscontroller.pcap ├── zeroplusxboxwireless_hid_report_descriptor.bin └── zeroplusxboxwireless_hid_report_descriptor.txt /README.md: -------------------------------------------------------------------------------- 1 | ### HID Gamepad Descriptors 2 | 3 | This repo contains info on various game controlles. 4 | USB dumps were made via [Wireshark](https://www.wireshark.org/). 5 | 6 | HID descriptors were decoded via [RDD! HID Report Descriptor Decoder](https://github.com/abend0c1/hidrdd) tool: 7 | ``` 8 | rexx rd.rex -d -b -x -f "hid_report_descriptor.bin" -o "hid_report_descriptor.txt" 9 | ``` 10 | 11 | This info may be userfull for writing gamepad mappings for these controllers or making your own HID game controller. 12 | 13 | ![](photo.jpg) 14 | 15 | ### Userfull links 16 | 17 | [Human Interface Devices (HID) Information from usb.org](https://www.usb.org/hid): 18 | 19 | - [Device Class Definition for HID 1.11](https://www.usb.org/document-library/device-class-definition-hid-111) 20 | > The Device Class Definition for HID 1.11 is intended to supplement the USB Specification and provide HID manufacturers with the information necessary to build USB-compatible devices. It also specifies how the HID class driver should extract data from USB devices. The primary and underlying goals of the HID class definition are to: 21 | > - be as compact as possible to save device data space 22 | > - allow the software application to skip unknown information 23 | > - be extensible and robust 24 | > - support nesting and collections 25 | > - be self-describing to allow generic software applications 26 | 27 | - [HID Usage Tables 1.21](https://usb.org/document-library/hid-usage-tables-121) 28 | > The HID Usage Tables 1.21 document defines constants that can be interpreted by an application to identify the purpose and meaning of a data field in a HID report. 29 | > Usages are also used to define the meaning of groups of related data items. This is accomplished by the hierarchical assignment of usage information to collections. 30 | > Usages identify the purpose of a collection and the items it contains. Each Input, Output, Feature, and/or Collection data item within a Collection item can be assigned a purpose with its own usage item. Usages assigned to a collection apply to the items within the collection. 31 | - [Device Class Definition for PID 1.0](https://www.usb.org/document-library/device-class-definition-pid-10-0) 32 | > The Device Class Definition For Pid 1.0 Provides Information For The Development Of Physical Interface Devices. These Devices Include Force Feedback Joysticks, Steering Wheels, Etc. It Allows Peripheral And Driver Developers To Use A Common Set Of Hid Report Descriptors, Device Usages And Reports To Describe The Characteristics Of A Pid Class Device. 33 | 34 | [Bluetooth Profiles Specifications from bluetooth.com](https://www.bluetooth.com/specifications/profiles-overview/): 35 | 36 | - [Bluetooth Human Interface Device (HID) Profile 1.1.1](https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=309012) 37 | > This profile defines how devices with Bluetooth wireless communications can use the HID Specification initially to discover the feature set of a Bluetooth HID device, and then communicate with the Bluetooth HID device. This profile further defines how a device with Bluetooth wireless communications can support HID services over the Bluetooth protocol stack using the Logical Link Control and Adaptation Protocol (L2CAP) layer. 38 | - [HID Service (HIDS) 1.0](https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=245140) 39 | > This service exposes HID reports and other HID data intended for HID Hosts and HID Devices. 40 | - [HID over GATT Profile (HOGP) 1.0](https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=245141) 41 | > This profile defines how a device with Bluetooth low energy wireless communications can support HID services over the Bluetooth low energy protocol stack using the Generic Attribute Profile. 42 | -------------------------------------------------------------------------------- /dualsense/controller_update_from_282_to_297.pcapng.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/dualsense/controller_update_from_282_to_297.pcapng.gz -------------------------------------------------------------------------------- /dualsense/dualsense.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/dualsense/dualsense.pcap -------------------------------------------------------------------------------- /dualsense/dualsense_bluetooth.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/dualsense/dualsense_bluetooth.pcap -------------------------------------------------------------------------------- /dualsense/dualsense_bluetooth_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/dualsense/dualsense_bluetooth_hid_report_descriptor.bin -------------------------------------------------------------------------------- /dualsense/dualsense_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/dualsense/dualsense_hid_report_descriptor.bin -------------------------------------------------------------------------------- /dualshock4/DescriptorDump_Wireless_Controller (DualShock4 Model CUH-ZCT2E).txt: -------------------------------------------------------------------------------- 1 | Information for device Wireless Controller (VID=0x054C PID=0x09CC): 2 | 3 | Connection Information: 4 | ------------------------------ 5 | Device current bus speed: FullSpeed 6 | Device supports USB 1.1 specification 7 | Device supports USB 2.0 specification 8 | Device address: 0x001F 9 | Current configuration value: 0x01 10 | Number of open pipes: 2 11 | 12 | Device Descriptor: 13 | ------------------------------ 14 | 0x12 bLength 15 | 0x01 bDescriptorType 16 | 0x0200 bcdUSB 17 | 0x00 bDeviceClass 18 | 0x00 bDeviceSubClass 19 | 0x00 bDeviceProtocol 20 | 0x40 bMaxPacketSize0 (64 bytes) 21 | 0x054C idVendor 22 | 0x09CC idProduct 23 | 0x0100 bcdDevice 24 | 0x01 iManufacturer "Sony Interactive Entertainment" 25 | 0x02 iProduct "Wireless Controller" 26 | 0x00 iSerialNumber 27 | 0x01 bNumConfigurations 28 | 29 | Configuration Descriptor: 30 | ------------------------------ 31 | 0x09 bLength 32 | 0x02 bDescriptorType 33 | 0x00E1 wTotalLength (225 bytes) 34 | 0x04 bNumInterfaces 35 | 0x01 bConfigurationValue 36 | 0x00 iConfiguration 37 | 0xC0 bmAttributes (Self-powered Device) 38 | 0xFA bMaxPower (500 mA) 39 | 40 | Interface Descriptor: 41 | ------------------------------ 42 | 0x09 bLength 43 | 0x04 bDescriptorType 44 | 0x00 bInterfaceNumber 45 | 0x00 bAlternateSetting 46 | 0x00 bNumEndPoints 47 | 0x01 bInterfaceClass (Audio Device Class) 48 | 0x01 bInterfaceSubClass (Audio Control Interface) 49 | 0x00 bInterfaceProtocol (Audio Protocol undefined) 50 | 0x00 iInterface 51 | 52 | AC Interface Header Descriptor: 53 | ------------------------------ 54 | 0x0A bLength 55 | 0x24 bDescriptorType 56 | 0x01 bDescriptorSubtype 57 | 0x0100 bcdADC 58 | 0x0047 wTotalLength (71 bytes) 59 | 0x02 bInCollection 60 | 0x01 baInterfaceNr(1) 61 | 0x02 baInterfaceNr(2) 62 | 63 | AC Input Terminal Descriptor: 64 | ------------------------------ 65 | 0x0C bLength 66 | 0x24 bDescriptorType 67 | 0x02 bDescriptorSubtype 68 | 0x01 bTerminalID 69 | 0x0101 wTerminalType (USB Streaming) 70 | 0x06 bAssocTerminal 71 | 0x02 bNrChannels (2 channels) 72 | 0x0003 wChannelConfig 73 | 0x00 iChannelNames 74 | 0x00 iTerminal 75 | 76 | AC Feature Unit Descriptor: 77 | ------------------------------ 78 | 0x0A bLength 79 | 0x24 bDescriptorType 80 | 0x06 bDescriptorSubtype 81 | 0x02 bUnitID 82 | 0x01 bSourceID 83 | 0x01 bControlSize 84 | bmaControls: 85 | 0x03 Channel(0) - Mute / Volume 86 | 0x00 Channel(1) 87 | 0x00 Channel(2) 88 | 0x00 iFeature 89 | 90 | 91 | AC Output Terminal Descriptor: 92 | ------------------------------ 93 | 0x09 bLength 94 | 0x24 bDescriptorType 95 | 0x03 bDescriptorSubtype 96 | 0x03 bTerminalID 97 | 0x0402 wTerminalType (Headset) 98 | 0x04 bAssocTerminal 99 | 0x02 bSourceID 100 | 0x00 iTerminal 101 | 102 | AC Input Terminal Descriptor: 103 | ------------------------------ 104 | 0x0C bLength 105 | 0x24 bDescriptorType 106 | 0x02 bDescriptorSubtype 107 | 0x04 bTerminalID 108 | 0x0402 wTerminalType (Headset) 109 | 0x03 bAssocTerminal 110 | 0x01 bNrChannels (1 channels) 111 | 0x0000 wChannelConfig 112 | 0x00 iChannelNames 113 | 0x00 iTerminal 114 | 115 | AC Feature Unit Descriptor: 116 | ------------------------------ 117 | 0x09 bLength 118 | 0x24 bDescriptorType 119 | 0x06 bDescriptorSubtype 120 | 0x05 bUnitID 121 | 0x04 bSourceID 122 | 0x01 bControlSize 123 | bmaControls: 124 | 0x03 Channel(0) - Mute / Volume 125 | 0x00 Channel(1) 126 | 0x00 iFeature 127 | 128 | 129 | AC Output Terminal Descriptor: 130 | ------------------------------ 131 | 0x09 bLength 132 | 0x24 bDescriptorType 133 | 0x03 bDescriptorSubtype 134 | 0x06 bTerminalID 135 | 0x0101 wTerminalType (USB Streaming) 136 | 0x01 bAssocTerminal 137 | 0x05 bSourceID 138 | 0x00 iTerminal 139 | 140 | Interface Descriptor: 141 | ------------------------------ 142 | 0x09 bLength 143 | 0x04 bDescriptorType 144 | 0x01 bInterfaceNumber 145 | 0x00 bAlternateSetting 146 | 0x00 bNumEndPoints 147 | 0x01 bInterfaceClass (Audio Device Class) 148 | 0x02 bInterfaceSubClass (Audio Streaming Interface) 149 | 0x00 bInterfaceProtocol (Audio Protocol undefined) 150 | 0x00 iInterface 151 | 152 | Interface Descriptor: 153 | ------------------------------ 154 | 0x09 bLength 155 | 0x04 bDescriptorType 156 | 0x01 bInterfaceNumber 157 | 0x01 bAlternateSetting 158 | 0x01 bNumEndPoints 159 | 0x01 bInterfaceClass (Audio Device Class) 160 | 0x02 bInterfaceSubClass (Audio Streaming Interface) 161 | 0x00 bInterfaceProtocol (Audio Protocol undefined) 162 | 0x00 iInterface 163 | 164 | AS Interface Descriptor: 165 | ------------------------------ 166 | 0x07 bLength 167 | 0x24 bDescriptorType 168 | 0x01 bDescriptorSubtype 169 | 0x01 bTerminalLink 170 | 0x01 bDelay 171 | 0x0001 wFormatTag (PCM) 172 | 173 | AS Format Type 1 Descriptor: 174 | ------------------------------ 175 | 0x0B bLength 176 | 0x24 bDescriptorType 177 | 0x02 bDescriptorSubtype 178 | 0x01 bFormatType (FORMAT_TYPE_1) 179 | 0x02 bNrChannels (2 channels) 180 | 0x02 bSubframeSize 181 | 0x10 bBitResolution (16 bits per sample) 182 | 0x01 bSamFreqType (Discrete sampling frequencies) 183 | 0x007D00 tSamFreq(1) (32000 Hz) 184 | 185 | Endpoint Descriptor (Audio/MIDI 1.0): 186 | ------------------------------ 187 | 0x09 bLength 188 | 0x05 bDescriptorType 189 | 0x01 bEndpointAddress (OUT endpoint 1) 190 | 0x09 bmAttributes (Transfer: Isochronous / Synch: Adaptive / Usage: Data) 191 | 0x0084 wMaxPacketSize (1 x 132 bytes) 192 | 0x01 bInterval (1 frames) 193 | 0x00 bRefresh 194 | 0x00 bSynchAddress 195 | 196 | AS Isochronous Data Endpoint Descriptor: 197 | ------------------------------ 198 | 0x07 bLength 199 | 0x25 bDescriptorType 200 | 0x01 bDescriptorSubtype 201 | 0x00 bmAttributes 202 | 0x00 bLockDelayUnits (undefined) 203 | 0x0000 wLockDelay 204 | 205 | Interface Descriptor: 206 | ------------------------------ 207 | 0x09 bLength 208 | 0x04 bDescriptorType 209 | 0x02 bInterfaceNumber 210 | 0x00 bAlternateSetting 211 | 0x00 bNumEndPoints 212 | 0x01 bInterfaceClass (Audio Device Class) 213 | 0x02 bInterfaceSubClass (Audio Streaming Interface) 214 | 0x00 bInterfaceProtocol (Audio Protocol undefined) 215 | 0x00 iInterface 216 | 217 | Interface Descriptor: 218 | ------------------------------ 219 | 0x09 bLength 220 | 0x04 bDescriptorType 221 | 0x02 bInterfaceNumber 222 | 0x01 bAlternateSetting 223 | 0x01 bNumEndPoints 224 | 0x01 bInterfaceClass (Audio Device Class) 225 | 0x02 bInterfaceSubClass (Audio Streaming Interface) 226 | 0x00 bInterfaceProtocol (Audio Protocol undefined) 227 | 0x00 iInterface 228 | 229 | AS Interface Descriptor: 230 | ------------------------------ 231 | 0x07 bLength 232 | 0x24 bDescriptorType 233 | 0x01 bDescriptorSubtype 234 | 0x06 bTerminalLink 235 | 0x01 bDelay 236 | 0x0001 wFormatTag (PCM) 237 | 238 | AS Format Type 1 Descriptor: 239 | ------------------------------ 240 | 0x0B bLength 241 | 0x24 bDescriptorType 242 | 0x02 bDescriptorSubtype 243 | 0x01 bFormatType (FORMAT_TYPE_1) 244 | 0x01 bNrChannels (1 channels) 245 | 0x02 bSubframeSize 246 | 0x10 bBitResolution (16 bits per sample) 247 | 0x01 bSamFreqType (Discrete sampling frequencies) 248 | 0x003E80 tSamFreq(1) (16000 Hz) 249 | 250 | Endpoint Descriptor (Audio/MIDI 1.0): 251 | ------------------------------ 252 | 0x09 bLength 253 | 0x05 bDescriptorType 254 | 0x82 bEndpointAddress (IN endpoint 2) 255 | 0x05 bmAttributes (Transfer: Isochronous / Synch: Asynchronous / Usage: Data) 256 | 0x0022 wMaxPacketSize (1 x 34 bytes) 257 | 0x01 bInterval (1 frames) 258 | 0x00 bRefresh 259 | 0x00 bSynchAddress 260 | 261 | AS Isochronous Data Endpoint Descriptor: 262 | ------------------------------ 263 | 0x07 bLength 264 | 0x25 bDescriptorType 265 | 0x01 bDescriptorSubtype 266 | 0x00 bmAttributes 267 | 0x00 bLockDelayUnits (undefined) 268 | 0x0000 wLockDelay 269 | 270 | Interface Descriptor: 271 | ------------------------------ 272 | 0x09 bLength 273 | 0x04 bDescriptorType 274 | 0x03 bInterfaceNumber 275 | 0x00 bAlternateSetting 276 | 0x02 bNumEndPoints 277 | 0x03 bInterfaceClass (Human Interface Device Class) 278 | 0x00 bInterfaceSubClass 279 | 0x00 bInterfaceProtocol 280 | 0x00 iInterface 281 | 282 | HID Descriptor: 283 | ------------------------------ 284 | 0x09 bLength 285 | 0x21 bDescriptorType 286 | 0x0111 bcdHID 287 | 0x00 bCountryCode 288 | 0x01 bNumDescriptors 289 | 0x22 bDescriptorType (Report descriptor) 290 | 0x01FB bDescriptorLength 291 | 292 | Endpoint Descriptor: 293 | ------------------------------ 294 | 0x07 bLength 295 | 0x05 bDescriptorType 296 | 0x84 bEndpointAddress (IN endpoint 4) 297 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 298 | 0x0040 wMaxPacketSize (1 x 64 bytes) 299 | 0x05 bInterval (5 frames) 300 | 301 | Endpoint Descriptor: 302 | ------------------------------ 303 | 0x07 bLength 304 | 0x05 bDescriptorType 305 | 0x03 bEndpointAddress (OUT endpoint 3) 306 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 307 | 0x0040 wMaxPacketSize (1 x 64 bytes) 308 | 0x05 bInterval (5 frames) 309 | 310 | Microsoft OS Descriptor is not available. Error code: 0x0000001F 311 | 312 | String Descriptor Table 313 | -------------------------------- 314 | Index LANGID String 315 | 0x00 0x0000 0x0409 316 | 0x01 0x0409 "Sony Interactive Entertainment" 317 | 0x02 0x0409 "Wireless Controller" 318 | 319 | ------------------------------ 320 | 321 | Connection path for device: 322 | USB xHCI Compliant Host Controller 323 | Root Hub 324 | Wireless Controller (VID=0x054C PID=0x09CC) Port: 1 325 | 326 | Running on: Windows 10 or greater (Build Version 18363) 327 | 328 | Brought to you by TDD v2.15.0, Jun 8 2020, 17:18:07 329 | -------------------------------------------------------------------------------- /dualshock4/dualshock4.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/dualshock4/dualshock4.pcap -------------------------------------------------------------------------------- /dualshock4/dualshock4_bluetooth_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/dualshock4/dualshock4_bluetooth_hid_report_descriptor.bin -------------------------------------------------------------------------------- /dualshock4/dualshock4_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/dualshock4/dualshock4_hid_report_descriptor.bin -------------------------------------------------------------------------------- /lunacontroller/DescriptorDump_HID_Amazon_Game_Controller (Luna Controller Model T28B69).txt: -------------------------------------------------------------------------------- 1 | Information for device Amazon Game Controller (VID=0x1949 PID=0x0419): 2 | 3 | ------------------------------ 4 | Connection Information: 5 | ------------------------------ 6 | Device current bus speed: HighSpeed 7 | Device supports USB 1.1 specification 8 | Device supports USB 2.0 specification 9 | Device address: 0x0006 10 | Current configuration value: 0x01 11 | Number of open pipes: 6 12 | 13 | 14 | ------------------------------ 15 | Device Descriptor: 16 | ------------------------------ 17 | 0x12 bLength 18 | 0x01 bDescriptorType 19 | 0x0200 bcdUSB 20 | 0xEF bDeviceClass (Miscellaneous device) 21 | 0x02 bDeviceSubClass 22 | 0x01 bDeviceProtocol 23 | 0x40 bMaxPacketSize0 (64 bytes) 24 | 0x1949 idVendor 25 | 0x0419 idProduct 26 | 0x0101 bcdDevice 27 | 0x01 iManufacturer "Amazon" 28 | 0x02 iProduct "Amazon Game Controller" 29 | 0x03 iSerialNumber "G0G159090273003V" 30 | 0x01 bNumConfigurations 31 | 32 | Device Qualifier Descriptor is not available. Error code: 0x0000001F 33 | 34 | 35 | ------------------------- 36 | Configuration Descriptor: 37 | ------------------------- 38 | 0x09 bLength 39 | 0x02 bDescriptorType 40 | 0x0134 wTotalLength (308 bytes) 41 | 0x06 bNumInterfaces 42 | 0x01 bConfigurationValue 43 | 0x00 iConfiguration 44 | 0xC0 bmAttributes (Self-powered Device) 45 | 0x32 bMaxPower (100 mA) 46 | 47 | Interface Descriptor: 48 | ------------------------------ 49 | 0x09 bLength 50 | 0x04 bDescriptorType 51 | 0x00 bInterfaceNumber 52 | 0x00 bAlternateSetting 53 | 0x02 bNumEndPoints 54 | 0x03 bInterfaceClass (Human Interface Device Class) 55 | 0x00 bInterfaceSubClass 56 | 0x00 bInterfaceProtocol 57 | 0x02 iInterface "Amazon Game Controller" 58 | 59 | HID Descriptor: 60 | ------------------------------ 61 | 0x09 bLength 62 | 0x21 bDescriptorType 63 | 0x0111 bcdHID 64 | 0x00 bCountryCode 65 | 0x01 bNumDescriptors 66 | 0x22 bDescriptorType (Report descriptor) 67 | 0x005D bDescriptorLength 68 | 69 | Endpoint Descriptor: 70 | ------------------------------ 71 | 0x07 bLength 72 | 0x05 bDescriptorType 73 | 0x81 bEndpointAddress (IN endpoint 1) 74 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 75 | 0x0020 wMaxPacketSize (1 x 32 bytes) 76 | 0x05 bInterval (16 microframes) 77 | 78 | Endpoint Descriptor: 79 | ------------------------------ 80 | 0x07 bLength 81 | 0x05 bDescriptorType 82 | 0x01 bEndpointAddress (OUT endpoint 1) 83 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 84 | 0x0020 wMaxPacketSize (1 x 32 bytes) 85 | 0x05 bInterval (16 microframes) 86 | 87 | Interface Association Descriptor: 88 | ------------------------------ 89 | 0x08 bLength 90 | 0x0B bDescriptorType 91 | 0x01 bFirstInterface 92 | 0x03 bInterfaceCount 93 | 0x01 bFunctionClass (Audio Device Class) 94 | 0x01 bFunctionSubClass (Audio Control Interface) 95 | 0x00 bFunctionProtocol (Audio Protocol undefined) 96 | 0x02 iFunction "Amazon Game Controller" 97 | 98 | Interface Descriptor: 99 | ------------------------------ 100 | 0x09 bLength 101 | 0x04 bDescriptorType 102 | 0x01 bInterfaceNumber 103 | 0x00 bAlternateSetting 104 | 0x01 bNumEndPoints 105 | 0x01 bInterfaceClass (Audio Device Class) 106 | 0x01 bInterfaceSubClass (Audio Control Interface) 107 | 0x00 bInterfaceProtocol (Audio Protocol undefined) 108 | 0x00 iInterface 109 | 110 | AC Interface Header Descriptor: 111 | ------------------------------ 112 | 0x0A bLength 113 | 0x24 bDescriptorType 114 | 0x01 bDescriptorSubtype 115 | 0x0100 bcdADC 116 | 0x0047 wTotalLength (71 bytes) 117 | 0x02 bInCollection 118 | 0x02 baInterfaceNr(1) 119 | 0x03 baInterfaceNr(2) 120 | 121 | AC Input Terminal Descriptor: 122 | ------------------------------ 123 | 0x0C bLength 124 | 0x24 bDescriptorType 125 | 0x02 bDescriptorSubtype 126 | 0x01 bTerminalID 127 | 0x0201 wTerminalType (Microphone) 128 | 0x00 bAssocTerminal 129 | 0x01 bNrChannels (1 channels) 130 | 0x0000 wChannelConfig 131 | 0x00 iChannelNames 132 | 0x00 iTerminal 133 | 134 | AC Feature Unit Descriptor: 135 | ------------------------------ 136 | 0x09 bLength 137 | 0x24 bDescriptorType 138 | 0x06 bDescriptorSubtype 139 | 0x02 bUnitID 140 | 0x01 bSourceID 141 | 0x01 bControlSize 142 | bmaControls: 143 | 0x03 Channel(0) - Mute / Volume 144 | 0x00 Channel(1) 145 | 0x00 iFeature 146 | 147 | 148 | AC Output Terminal Descriptor: 149 | ------------------------------ 150 | 0x09 bLength 151 | 0x24 bDescriptorType 152 | 0x03 bDescriptorSubtype 153 | 0x03 bTerminalID 154 | 0x0101 wTerminalType (USB Streaming) 155 | 0x00 bAssocTerminal 156 | 0x02 bSourceID 157 | 0x00 iTerminal 158 | 159 | AC Input Terminal Descriptor: 160 | ------------------------------ 161 | 0x0C bLength 162 | 0x24 bDescriptorType 163 | 0x02 bDescriptorSubtype 164 | 0x04 bTerminalID 165 | 0x0101 wTerminalType (USB Streaming) 166 | 0x00 bAssocTerminal 167 | 0x02 bNrChannels (2 channels) 168 | 0x0003 wChannelConfig 169 | 0x00 iChannelNames 170 | 0x00 iTerminal 171 | 172 | AC Feature Unit Descriptor: 173 | ------------------------------ 174 | 0x0A bLength 175 | 0x24 bDescriptorType 176 | 0x06 bDescriptorSubtype 177 | 0x05 bUnitID 178 | 0x04 bSourceID 179 | 0x01 bControlSize 180 | bmaControls: 181 | 0x03 Channel(0) - Mute / Volume 182 | 0x00 Channel(1) 183 | 0x00 Channel(2) 184 | 0x00 iFeature 185 | 186 | 187 | AC Output Terminal Descriptor: 188 | ------------------------------ 189 | 0x09 bLength 190 | 0x24 bDescriptorType 191 | 0x03 bDescriptorSubtype 192 | 0x06 bTerminalID 193 | 0x0301 wTerminalType (Speaker) 194 | 0x00 bAssocTerminal 195 | 0x05 bSourceID 196 | 0x00 iTerminal 197 | 198 | Endpoint Descriptor (Audio/MIDI 1.0): 199 | ------------------------------ 200 | 0x09 bLength 201 | 0x05 bDescriptorType 202 | 0x82 bEndpointAddress (IN endpoint 2) 203 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 204 | 0x0008 wMaxPacketSize (1 x 8 bytes) 205 | 0x08 bInterval (128 microframes) 206 | 0x00 bRefresh 207 | 0x00 bSynchAddress 208 | 209 | Interface Descriptor: 210 | ------------------------------ 211 | 0x09 bLength 212 | 0x04 bDescriptorType 213 | 0x02 bInterfaceNumber 214 | 0x00 bAlternateSetting 215 | 0x00 bNumEndPoints 216 | 0x01 bInterfaceClass (Audio Device Class) 217 | 0x02 bInterfaceSubClass (Audio Streaming Interface) 218 | 0x00 bInterfaceProtocol (Audio Protocol undefined) 219 | 0x00 iInterface 220 | 221 | Interface Descriptor: 222 | ------------------------------ 223 | 0x09 bLength 224 | 0x04 bDescriptorType 225 | 0x02 bInterfaceNumber 226 | 0x01 bAlternateSetting 227 | 0x01 bNumEndPoints 228 | 0x01 bInterfaceClass (Audio Device Class) 229 | 0x02 bInterfaceSubClass (Audio Streaming Interface) 230 | 0x00 bInterfaceProtocol (Audio Protocol undefined) 231 | 0x00 iInterface 232 | 233 | AS Interface Descriptor: 234 | ------------------------------ 235 | 0x07 bLength 236 | 0x24 bDescriptorType 237 | 0x01 bDescriptorSubtype 238 | 0x03 bTerminalLink 239 | 0x00 bDelay 240 | 0x0001 wFormatTag (PCM) 241 | 242 | AS Format Type 1 Descriptor: 243 | ------------------------------ 244 | 0x0B bLength 245 | 0x24 bDescriptorType 246 | 0x02 bDescriptorSubtype 247 | 0x01 bFormatType (FORMAT_TYPE_1) 248 | 0x02 bNrChannels (2 channels) 249 | 0x02 bSubframeSize 250 | 0x10 bBitResolution (16 bits per sample) 251 | 0x01 bSamFreqType (Discrete sampling frequencies) 252 | 0x00BB80 tSamFreq(1) (48000 Hz) 253 | 254 | Endpoint Descriptor (Audio/MIDI 1.0): 255 | ------------------------------ 256 | 0x09 bLength 257 | 0x05 bDescriptorType 258 | 0x83 bEndpointAddress (IN endpoint 3) 259 | 0x01 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Data) 260 | 0x00C0 wMaxPacketSize (1 x 192 bytes) 261 | 0x04 bInterval (8 microframes) 262 | 0x00 bRefresh 263 | 0x00 bSynchAddress 264 | 265 | AS Isochronous Data Endpoint Descriptor: 266 | ------------------------------ 267 | 0x07 bLength 268 | 0x25 bDescriptorType 269 | 0x01 bDescriptorSubtype 270 | 0x00 bmAttributes 271 | 0x00 bLockDelayUnits (undefined) 272 | 0x0000 wLockDelay 273 | 274 | Interface Descriptor: 275 | ------------------------------ 276 | 0x09 bLength 277 | 0x04 bDescriptorType 278 | 0x03 bInterfaceNumber 279 | 0x00 bAlternateSetting 280 | 0x00 bNumEndPoints 281 | 0x01 bInterfaceClass (Audio Device Class) 282 | 0x02 bInterfaceSubClass (Audio Streaming Interface) 283 | 0x00 bInterfaceProtocol (Audio Protocol undefined) 284 | 0x00 iInterface 285 | 286 | Interface Descriptor: 287 | ------------------------------ 288 | 0x09 bLength 289 | 0x04 bDescriptorType 290 | 0x03 bInterfaceNumber 291 | 0x01 bAlternateSetting 292 | 0x01 bNumEndPoints 293 | 0x01 bInterfaceClass (Audio Device Class) 294 | 0x02 bInterfaceSubClass (Audio Streaming Interface) 295 | 0x00 bInterfaceProtocol (Audio Protocol undefined) 296 | 0x00 iInterface 297 | 298 | AS Interface Descriptor: 299 | ------------------------------ 300 | 0x07 bLength 301 | 0x24 bDescriptorType 302 | 0x01 bDescriptorSubtype 303 | 0x04 bTerminalLink 304 | 0x01 bDelay 305 | 0x0001 wFormatTag (PCM) 306 | 307 | AS Format Type 1 Descriptor: 308 | ------------------------------ 309 | 0x0B bLength 310 | 0x24 bDescriptorType 311 | 0x02 bDescriptorSubtype 312 | 0x01 bFormatType (FORMAT_TYPE_1) 313 | 0x02 bNrChannels (2 channels) 314 | 0x02 bSubframeSize 315 | 0x10 bBitResolution (16 bits per sample) 316 | 0x01 bSamFreqType (Discrete sampling frequencies) 317 | 0x00BB80 tSamFreq(1) (48000 Hz) 318 | 319 | Endpoint Descriptor (Audio/MIDI 1.0): 320 | ------------------------------ 321 | 0x09 bLength 322 | 0x05 bDescriptorType 323 | 0x02 bEndpointAddress (OUT endpoint 2) 324 | 0x0D bmAttributes (Transfer: Isochronous / Synch: Synchronous / Usage: Data) 325 | 0x00C0 wMaxPacketSize (1 x 192 bytes) 326 | 0x04 bInterval (8 microframes) 327 | 0x00 bRefresh 328 | 0x00 bSynchAddress 329 | 330 | AS Isochronous Data Endpoint Descriptor: 331 | ------------------------------ 332 | 0x07 bLength 333 | 0x25 bDescriptorType 334 | 0x01 bDescriptorSubtype 335 | 0x00 bmAttributes 336 | 0x00 bLockDelayUnits (undefined) 337 | 0x0000 wLockDelay 338 | 339 | Interface Association Descriptor: 340 | ------------------------------ 341 | 0x08 bLength 342 | 0x0B bDescriptorType 343 | 0x04 bFirstInterface 344 | 0x02 bInterfaceCount 345 | 0x02 bFunctionClass (Communication Device Class) 346 | 0x02 bFunctionSubClass (Abstract Control Model - ACM) 347 | 0x00 bFunctionProtocol 348 | 0x02 iFunction "Amazon Game Controller" 349 | 350 | Interface Descriptor: 351 | ------------------------------ 352 | 0x09 bLength 353 | 0x04 bDescriptorType 354 | 0x04 bInterfaceNumber 355 | 0x00 bAlternateSetting 356 | 0x01 bNumEndPoints 357 | 0x02 bInterfaceClass (Communication Device Class) 358 | 0x02 bInterfaceSubClass (Abstract Control Model - ACM) 359 | 0x00 bInterfaceProtocol 360 | 0x00 iInterface 361 | 362 | CDC Header Functional Descriptor: 363 | ------------------------------ 364 | 0x05 bFunctionalLength 365 | 0x24 bDescriptorType 366 | 0x00 bDescriptorSubtype 367 | 0x0110 bcdCDC 368 | 369 | CDC Call Management Functional Descriptor: 370 | ------------------------------ 371 | 0x05 bFunctionalLength 372 | 0x24 bDescriptorType 373 | 0x01 bDescriptorSubtype 374 | 0x01 bmCapabilities 375 | 0x01 bDataInterface 376 | 377 | CDC Abstract Control Management Functional Descriptor: 378 | ------------------------------ 379 | 0x04 bFunctionalLength 380 | 0x24 bDescriptorType 381 | 0x02 bDescriptorSubtype 382 | 0x06 bmCapabilities 383 | 384 | CDC Union Functional Descriptor: 385 | ------------------------------ 386 | 0x05 bFunctionalLength 387 | 0x24 bDescriptorType 388 | 0x06 bDescriptorSubtype 389 | 0x04 bControlInterface 390 | 0x05 bSubordinateInterface(0) 391 | 392 | Endpoint Descriptor: 393 | ------------------------------ 394 | 0x07 bLength 395 | 0x05 bDescriptorType 396 | 0x84 bEndpointAddress (IN endpoint 4) 397 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 398 | 0x0010 wMaxPacketSize (1 x 16 bytes) 399 | 0x07 bInterval (64 microframes) 400 | 401 | Interface Descriptor: 402 | ------------------------------ 403 | 0x09 bLength 404 | 0x04 bDescriptorType 405 | 0x05 bInterfaceNumber 406 | 0x00 bAlternateSetting 407 | 0x02 bNumEndPoints 408 | 0x0A bInterfaceClass (CDC Data) 409 | 0x00 bInterfaceSubClass 410 | 0x00 bInterfaceProtocol 411 | 0x00 iInterface 412 | 413 | Endpoint Descriptor: 414 | ------------------------------ 415 | 0x07 bLength 416 | 0x05 bDescriptorType 417 | 0x85 bEndpointAddress (IN endpoint 5) 418 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 419 | 0x0200 wMaxPacketSize (512 bytes) 420 | 0x00 bInterval 421 | 422 | Endpoint Descriptor: 423 | ------------------------------ 424 | 0x07 bLength 425 | 0x05 bDescriptorType 426 | 0x03 bEndpointAddress (OUT endpoint 3) 427 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 428 | 0x0200 wMaxPacketSize (512 bytes) 429 | 0x00 bInterval 430 | 431 | Microsoft OS Descriptor is not available. Error code: 0x0000001F 432 | 433 | 434 | -------------------------------- 435 | String Descriptor Table 436 | -------------------------------- 437 | Index LANGID String 438 | 0x00 0x0000 0x0409 439 | 0x01 0x0409 "Amazon" 440 | 0x02 0x0409 "Amazon Game Controller" 441 | 0x03 0x0409 "G0G159090273003V" 442 | 443 | ------------------------------ 444 | 445 | Connection path for device: 446 | USB xHCI Compliant Host Controller 447 | Root Hub 448 | Amazon Game Controller (VID=0x1949 PID=0x0419) Port: 12 449 | 450 | Running on: Windows 10 or greater (Build Version 19044) 451 | 452 | Brought to you by TDD v2.17.0, Feb 23 2021, 14:04:02 453 | -------------------------------------------------------------------------------- /lunacontroller/DescriptorDump_XINPUT_Amazon_Game_Controller (Luna Controller Model T28B69).txt: -------------------------------------------------------------------------------- 1 | Information for device Amazon Game Controller (VID=0x1949 PID=0x041A): 2 | 3 | Connection Information: 4 | ------------------------------ 5 | Device current bus speed: HighSpeed 6 | Device supports USB 1.1 specification 7 | Device supports USB 2.0 specification 8 | Device address: 0x0007 9 | Current configuration value: 0x01 10 | Number of open pipes: 6 11 | 12 | Device Descriptor: 13 | ------------------------------ 14 | 0x12 bLength 15 | 0x01 bDescriptorType 16 | 0x0200 bcdUSB 17 | 0xEF bDeviceClass (Miscellaneous device) 18 | 0x02 bDeviceSubClass 19 | 0x01 bDeviceProtocol 20 | 0x40 bMaxPacketSize0 (64 bytes) 21 | 0x1949 idVendor 22 | 0x041A idProduct 23 | 0x0101 bcdDevice 24 | 0x01 iManufacturer "Amazon" 25 | 0x02 iProduct "Amazon Game Controller" 26 | 0x03 iSerialNumber "G0G159090273003V" 27 | 0x01 bNumConfigurations 28 | 29 | Device Qualifier Descriptor is not available. Error code: 0x0000001F 30 | 31 | Configuration Descriptor: 32 | ------------------------------ 33 | 0x09 bLength 34 | 0x02 bDescriptorType 35 | 0x013C wTotalLength (316 bytes) 36 | 0x06 bNumInterfaces 37 | 0x01 bConfigurationValue 38 | 0x00 iConfiguration 39 | 0xC0 bmAttributes (Self-powered Device) 40 | 0x32 bMaxPower (100 mA) 41 | 42 | Interface Descriptor: 43 | ------------------------------ 44 | 0x09 bLength 45 | 0x04 bDescriptorType 46 | 0x00 bInterfaceNumber 47 | 0x00 bAlternateSetting 48 | 0x02 bNumEndPoints 49 | 0xFF bInterfaceClass (Vendor specific) 50 | 0x5D bInterfaceSubClass 51 | 0x01 bInterfaceProtocol 52 | 0x00 iInterface 53 | 54 | Unknown Descriptor: 55 | ------------------------------ 56 | 0x11 bLength 57 | 0x21 bDescriptorType 58 | Hex dump: 59 | 0x11 0x21 0x00 0x01 0x01 0x25 0x81 0x14 0x00 0x00 60 | 0x00 0x00 0x13 0x01 0x08 0x00 0x00 61 | 62 | Endpoint Descriptor: 63 | ------------------------------ 64 | 0x07 bLength 65 | 0x05 bDescriptorType 66 | 0x81 bEndpointAddress (IN endpoint 1) 67 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 68 | 0x0020 wMaxPacketSize (1 x 32 bytes) 69 | 0x05 bInterval (16 microframes) 70 | 71 | Endpoint Descriptor: 72 | ------------------------------ 73 | 0x07 bLength 74 | 0x05 bDescriptorType 75 | 0x01 bEndpointAddress (OUT endpoint 1) 76 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 77 | 0x0020 wMaxPacketSize (1 x 32 bytes) 78 | 0x05 bInterval (16 microframes) 79 | 80 | Interface Association Descriptor: 81 | ------------------------------ 82 | 0x08 bLength 83 | 0x0B bDescriptorType 84 | 0x01 bFirstInterface 85 | 0x03 bInterfaceCount 86 | 0x01 bFunctionClass (Audio Device Class) 87 | 0x01 bFunctionSubClass (Audio Control Interface) 88 | 0x00 bFunctionProtocol (Audio Protocol undefined) 89 | 0x02 iFunction "Amazon Game Controller" 90 | 91 | Interface Descriptor: 92 | ------------------------------ 93 | 0x09 bLength 94 | 0x04 bDescriptorType 95 | 0x01 bInterfaceNumber 96 | 0x00 bAlternateSetting 97 | 0x01 bNumEndPoints 98 | 0x01 bInterfaceClass (Audio Device Class) 99 | 0x01 bInterfaceSubClass (Audio Control Interface) 100 | 0x00 bInterfaceProtocol (Audio Protocol undefined) 101 | 0x00 iInterface 102 | 103 | AC Interface Header Descriptor: 104 | ------------------------------ 105 | 0x0A bLength 106 | 0x24 bDescriptorType 107 | 0x01 bDescriptorSubtype 108 | 0x0100 bcdADC 109 | 0x0047 wTotalLength (71 bytes) 110 | 0x02 bInCollection 111 | 0x02 baInterfaceNr(1) 112 | 0x03 baInterfaceNr(2) 113 | 114 | AC Input Terminal Descriptor: 115 | ------------------------------ 116 | 0x0C bLength 117 | 0x24 bDescriptorType 118 | 0x02 bDescriptorSubtype 119 | 0x01 bTerminalID 120 | 0x0201 wTerminalType (Microphone) 121 | 0x00 bAssocTerminal 122 | 0x01 bNrChannels (1 channels) 123 | 0x0000 wChannelConfig 124 | 0x00 iChannelNames 125 | 0x00 iTerminal 126 | 127 | AC Feature Unit Descriptor: 128 | ------------------------------ 129 | 0x09 bLength 130 | 0x24 bDescriptorType 131 | 0x06 bDescriptorSubtype 132 | 0x02 bUnitID 133 | 0x01 bSourceID 134 | 0x01 bControlSize 135 | bmaControls: 136 | 0x03 Channel(0) - Mute / Volume 137 | 0x00 Channel(1) 138 | 0x00 iFeature 139 | 140 | 141 | AC Output Terminal Descriptor: 142 | ------------------------------ 143 | 0x09 bLength 144 | 0x24 bDescriptorType 145 | 0x03 bDescriptorSubtype 146 | 0x03 bTerminalID 147 | 0x0101 wTerminalType (USB Streaming) 148 | 0x00 bAssocTerminal 149 | 0x02 bSourceID 150 | 0x00 iTerminal 151 | 152 | AC Input Terminal Descriptor: 153 | ------------------------------ 154 | 0x0C bLength 155 | 0x24 bDescriptorType 156 | 0x02 bDescriptorSubtype 157 | 0x04 bTerminalID 158 | 0x0101 wTerminalType (USB Streaming) 159 | 0x00 bAssocTerminal 160 | 0x02 bNrChannels (2 channels) 161 | 0x0003 wChannelConfig 162 | 0x00 iChannelNames 163 | 0x00 iTerminal 164 | 165 | AC Feature Unit Descriptor: 166 | ------------------------------ 167 | 0x0A bLength 168 | 0x24 bDescriptorType 169 | 0x06 bDescriptorSubtype 170 | 0x05 bUnitID 171 | 0x04 bSourceID 172 | 0x01 bControlSize 173 | bmaControls: 174 | 0x03 Channel(0) - Mute / Volume 175 | 0x00 Channel(1) 176 | 0x00 Channel(2) 177 | 0x00 iFeature 178 | 179 | 180 | AC Output Terminal Descriptor: 181 | ------------------------------ 182 | 0x09 bLength 183 | 0x24 bDescriptorType 184 | 0x03 bDescriptorSubtype 185 | 0x06 bTerminalID 186 | 0x0301 wTerminalType (Speaker) 187 | 0x00 bAssocTerminal 188 | 0x05 bSourceID 189 | 0x00 iTerminal 190 | 191 | Endpoint Descriptor (Audio/MIDI 1.0): 192 | ------------------------------ 193 | 0x09 bLength 194 | 0x05 bDescriptorType 195 | 0x82 bEndpointAddress (IN endpoint 2) 196 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 197 | 0x0008 wMaxPacketSize (1 x 8 bytes) 198 | 0x08 bInterval (128 microframes) 199 | 0x00 bRefresh 200 | 0x00 bSynchAddress 201 | 202 | Interface Descriptor: 203 | ------------------------------ 204 | 0x09 bLength 205 | 0x04 bDescriptorType 206 | 0x02 bInterfaceNumber 207 | 0x00 bAlternateSetting 208 | 0x00 bNumEndPoints 209 | 0x01 bInterfaceClass (Audio Device Class) 210 | 0x02 bInterfaceSubClass (Audio Streaming Interface) 211 | 0x00 bInterfaceProtocol (Audio Protocol undefined) 212 | 0x00 iInterface 213 | 214 | Interface Descriptor: 215 | ------------------------------ 216 | 0x09 bLength 217 | 0x04 bDescriptorType 218 | 0x02 bInterfaceNumber 219 | 0x01 bAlternateSetting 220 | 0x01 bNumEndPoints 221 | 0x01 bInterfaceClass (Audio Device Class) 222 | 0x02 bInterfaceSubClass (Audio Streaming Interface) 223 | 0x00 bInterfaceProtocol (Audio Protocol undefined) 224 | 0x00 iInterface 225 | 226 | AS Interface Descriptor: 227 | ------------------------------ 228 | 0x07 bLength 229 | 0x24 bDescriptorType 230 | 0x01 bDescriptorSubtype 231 | 0x03 bTerminalLink 232 | 0x00 bDelay 233 | 0x0001 wFormatTag (PCM) 234 | 235 | AS Format Type 1 Descriptor: 236 | ------------------------------ 237 | 0x0B bLength 238 | 0x24 bDescriptorType 239 | 0x02 bDescriptorSubtype 240 | 0x01 bFormatType (FORMAT_TYPE_1) 241 | 0x02 bNrChannels (2 channels) 242 | 0x02 bSubframeSize 243 | 0x10 bBitResolution (16 bits per sample) 244 | 0x01 bSamFreqType (Discrete sampling frequencies) 245 | 0x00BB80 tSamFreq(1) (48000 Hz) 246 | 247 | Endpoint Descriptor (Audio/MIDI 1.0): 248 | ------------------------------ 249 | 0x09 bLength 250 | 0x05 bDescriptorType 251 | 0x83 bEndpointAddress (IN endpoint 3) 252 | 0x01 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Data) 253 | 0x00C0 wMaxPacketSize (1 x 192 bytes) 254 | 0x04 bInterval (8 microframes) 255 | 0x00 bRefresh 256 | 0x00 bSynchAddress 257 | 258 | AS Isochronous Data Endpoint Descriptor: 259 | ------------------------------ 260 | 0x07 bLength 261 | 0x25 bDescriptorType 262 | 0x01 bDescriptorSubtype 263 | 0x00 bmAttributes 264 | 0x00 bLockDelayUnits (undefined) 265 | 0x0000 wLockDelay 266 | 267 | Interface Descriptor: 268 | ------------------------------ 269 | 0x09 bLength 270 | 0x04 bDescriptorType 271 | 0x03 bInterfaceNumber 272 | 0x00 bAlternateSetting 273 | 0x00 bNumEndPoints 274 | 0x01 bInterfaceClass (Audio Device Class) 275 | 0x02 bInterfaceSubClass (Audio Streaming Interface) 276 | 0x00 bInterfaceProtocol (Audio Protocol undefined) 277 | 0x00 iInterface 278 | 279 | Interface Descriptor: 280 | ------------------------------ 281 | 0x09 bLength 282 | 0x04 bDescriptorType 283 | 0x03 bInterfaceNumber 284 | 0x01 bAlternateSetting 285 | 0x01 bNumEndPoints 286 | 0x01 bInterfaceClass (Audio Device Class) 287 | 0x02 bInterfaceSubClass (Audio Streaming Interface) 288 | 0x00 bInterfaceProtocol (Audio Protocol undefined) 289 | 0x00 iInterface 290 | 291 | AS Interface Descriptor: 292 | ------------------------------ 293 | 0x07 bLength 294 | 0x24 bDescriptorType 295 | 0x01 bDescriptorSubtype 296 | 0x04 bTerminalLink 297 | 0x01 bDelay 298 | 0x0001 wFormatTag (PCM) 299 | 300 | AS Format Type 1 Descriptor: 301 | ------------------------------ 302 | 0x0B bLength 303 | 0x24 bDescriptorType 304 | 0x02 bDescriptorSubtype 305 | 0x01 bFormatType (FORMAT_TYPE_1) 306 | 0x02 bNrChannels (2 channels) 307 | 0x02 bSubframeSize 308 | 0x10 bBitResolution (16 bits per sample) 309 | 0x01 bSamFreqType (Discrete sampling frequencies) 310 | 0x00BB80 tSamFreq(1) (48000 Hz) 311 | 312 | Endpoint Descriptor (Audio/MIDI 1.0): 313 | ------------------------------ 314 | 0x09 bLength 315 | 0x05 bDescriptorType 316 | 0x02 bEndpointAddress (OUT endpoint 2) 317 | 0x0D bmAttributes (Transfer: Isochronous / Synch: Synchronous / Usage: Data) 318 | 0x00C0 wMaxPacketSize (1 x 192 bytes) 319 | 0x04 bInterval (8 microframes) 320 | 0x00 bRefresh 321 | 0x00 bSynchAddress 322 | 323 | AS Isochronous Data Endpoint Descriptor: 324 | ------------------------------ 325 | 0x07 bLength 326 | 0x25 bDescriptorType 327 | 0x01 bDescriptorSubtype 328 | 0x00 bmAttributes 329 | 0x00 bLockDelayUnits (undefined) 330 | 0x0000 wLockDelay 331 | 332 | Interface Association Descriptor: 333 | ------------------------------ 334 | 0x08 bLength 335 | 0x0B bDescriptorType 336 | 0x04 bFirstInterface 337 | 0x02 bInterfaceCount 338 | 0x02 bFunctionClass (Communication Device Class) 339 | 0x02 bFunctionSubClass (Abstract Control Model - ACM) 340 | 0x00 bFunctionProtocol 341 | 0x02 iFunction "Amazon Game Controller" 342 | 343 | Interface Descriptor: 344 | ------------------------------ 345 | 0x09 bLength 346 | 0x04 bDescriptorType 347 | 0x04 bInterfaceNumber 348 | 0x00 bAlternateSetting 349 | 0x01 bNumEndPoints 350 | 0x02 bInterfaceClass (Communication Device Class) 351 | 0x02 bInterfaceSubClass (Abstract Control Model - ACM) 352 | 0x00 bInterfaceProtocol 353 | 0x00 iInterface 354 | 355 | CDC Header Functional Descriptor: 356 | ------------------------------ 357 | 0x05 bFunctionalLength 358 | 0x24 bDescriptorType 359 | 0x00 bDescriptorSubtype 360 | 0x0110 bcdCDC 361 | 362 | CDC Call Management Functional Descriptor: 363 | ------------------------------ 364 | 0x05 bFunctionalLength 365 | 0x24 bDescriptorType 366 | 0x01 bDescriptorSubtype 367 | 0x01 bmCapabilities 368 | 0x01 bDataInterface 369 | 370 | CDC Abstract Control Management Functional Descriptor: 371 | ------------------------------ 372 | 0x04 bFunctionalLength 373 | 0x24 bDescriptorType 374 | 0x02 bDescriptorSubtype 375 | 0x06 bmCapabilities 376 | 377 | CDC Union Functional Descriptor: 378 | ------------------------------ 379 | 0x05 bFunctionalLength 380 | 0x24 bDescriptorType 381 | 0x06 bDescriptorSubtype 382 | 0x04 bControlInterface 383 | 0x05 bSubordinateInterface(0) 384 | 385 | Endpoint Descriptor: 386 | ------------------------------ 387 | 0x07 bLength 388 | 0x05 bDescriptorType 389 | 0x84 bEndpointAddress (IN endpoint 4) 390 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 391 | 0x0010 wMaxPacketSize (1 x 16 bytes) 392 | 0x07 bInterval (64 microframes) 393 | 394 | Interface Descriptor: 395 | ------------------------------ 396 | 0x09 bLength 397 | 0x04 bDescriptorType 398 | 0x05 bInterfaceNumber 399 | 0x00 bAlternateSetting 400 | 0x02 bNumEndPoints 401 | 0x0A bInterfaceClass (CDC Data) 402 | 0x00 bInterfaceSubClass 403 | 0x00 bInterfaceProtocol 404 | 0x00 iInterface 405 | 406 | Endpoint Descriptor: 407 | ------------------------------ 408 | 0x07 bLength 409 | 0x05 bDescriptorType 410 | 0x85 bEndpointAddress (IN endpoint 5) 411 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 412 | 0x0200 wMaxPacketSize (512 bytes) 413 | 0x00 bInterval 414 | 415 | Endpoint Descriptor: 416 | ------------------------------ 417 | 0x07 bLength 418 | 0x05 bDescriptorType 419 | 0x03 bEndpointAddress (OUT endpoint 3) 420 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 421 | 0x0200 wMaxPacketSize (512 bytes) 422 | 0x00 bInterval 423 | 424 | Microsoft OS Descriptor: 425 | ------------------------------ 426 | 0x12 bLength 427 | 0x03 bDescriptorType 428 | Hex dump: 429 | 0x12 0x03 0x4D 0x00 0x53 0x00 0x46 0x00 0x54 0x00 430 | 0x31 0x00 0x30 0x00 0x30 0x00 0x90 0x00 431 | 432 | String Descriptor Table 433 | -------------------------------- 434 | Index LANGID String 435 | 0x00 0x0000 0x0409 436 | 0x01 0x0409 "Amazon" 437 | 0x02 0x0409 "Amazon Game Controller" 438 | 0x03 0x0409 "G0G159090273003V" 439 | 440 | ------------------------------ 441 | 442 | Connection path for device: 443 | USB xHCI Compliant Host Controller 444 | Root Hub 445 | Amazon Game Controller (VID=0x1949 PID=0x041A) Port: 1 446 | 447 | Running on: Windows 10 or greater (Build Version 18363) 448 | 449 | Brought to you by TDD v2.15.0, Jun 8 2020, 17:18:07 450 | -------------------------------------------------------------------------------- /lunacontroller/README.md: -------------------------------------------------------------------------------- 1 | [Amazon Luna Controller Quick Start Guide](https://www.amazon.com/gp/help/customer/display.html?nodeId=GEHPAXCM8L39RQVG) 2 | 3 | ![image](https://m.media-amazon.com/images/G/01/support_images/GUID-91658BEA-83EC-424F-8241-56223B0B3CD8=3=en-US=Normal.png) 4 | 5 | [What are the Buttons on the Amazon Luna Controller?](https://www.amazon.com/gp/help/customer/display.html?nodeId=GEKGVPKSY8B2RGHG) 6 | 7 | To enter Bluetooth pairing mode hold **Action** (button with circle) + **B** for 3 seconds. 8 | 9 | # Bluetooth LE Connection 10 | 11 | Device Hardware ID `BTHLEDevice\{00001812-0000-1000-8000-00805f9b34fb}_Dev_VID&010171_PID&0419_REV&0100` 12 | 13 | ![image](https://user-images.githubusercontent.com/1285934/216942320-22d582fd-6688-46fa-8f28-ccf8f6fc6bb2.png) 14 | 15 | ![image](https://user-images.githubusercontent.com/1285934/216942474-ff5bf1a0-17d3-4e97-8801-bc3fa7a554ca.png) 16 | 17 | There is [special filter driver](https://www.amazon.com/gp/help/customer/display.html?nodeId=GZCT4CTFHXLHEB9T) can be installed that adds XInput API when connected over Bluetooth. 18 | 19 | # USB Connection 20 | 21 | When connected over USB Luna controller can work in two modes: **XInput** (default) and **HID** (may be called DirectInput). 22 | 23 | To switch between USB modes hold **Action** (button with circle) + **X** for 3 seconds while connected over USB. 24 | 25 | ## XInput Mode 26 | 27 | Device Hardware ID `USB\VID_1949&PID_041A&REV_0101` 28 | 29 | ![image](https://user-images.githubusercontent.com/1285934/216943284-aa3baa4e-b4d0-4186-8e59-5d00abb615e4.png) 30 | 31 | ![image](https://user-images.githubusercontent.com/1285934/211622110-eea66f22-3549-41be-b54b-17930658a5bb.png) 32 | 33 | ## HID Mode 34 | 35 | Device Hardware ID `USB\VID_1949&PID_0419&REV_0101` 36 | 37 | ![image](https://user-images.githubusercontent.com/1285934/216943145-8dbca3d3-1fde-47bb-9996-709a46cd088f.png) 38 | 39 | ![image](https://user-images.githubusercontent.com/1285934/211622172-4098d3a8-b550-4026-bd7b-f686ef41b069.png) 40 | -------------------------------------------------------------------------------- /lunacontroller/luna_bluetoothle_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/lunacontroller/luna_bluetoothle_hid_report_descriptor.bin -------------------------------------------------------------------------------- /lunacontroller/luna_usb_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/lunacontroller/luna_usb_hid_report_descriptor.bin -------------------------------------------------------------------------------- /lunacontroller/luna_usb_hid_report_descriptor.txt: -------------------------------------------------------------------------------- 1 | 2 | //-------------------------------------------------------------------------------- 3 | // Report descriptor data in hex (length 93 bytes) 4 | //-------------------------------------------------------------------------------- 5 | 6 | 7 | // 05010905 A101A100 85010509 1901290C 15002501 7501950C 81027501 95048101 8 | // 05010939 15002507 3500463B 01651475 08950181 42650009 30093109 32093515 9 | // 0026FF00 75089504 81020501 09330934 150026FF 00750895 028102C0 C0 10 | 11 | 12 | //-------------------------------------------------------------------------------- 13 | // Decoded Application Collection 14 | //-------------------------------------------------------------------------------- 15 | 16 | /* 17 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 18 | 09 05 (LOCAL) USAGE 0x00010005 Game Pad (Application Collection) 19 | A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x00010005: Page=Generic Desktop Page, Usage=Game Pad, Type=Application Collection) 20 | A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE <-- Warning: USAGE type should be CP (Physical Collection) 21 | 85 01 (GLOBAL) REPORT_ID 0x01 (1) 22 | 05 09 (GLOBAL) USAGE_PAGE 0x0009 Button Page 23 | 19 01 (LOCAL) USAGE_MINIMUM 0x00090001 Button 1 Primary/trigger (Selector, On/Off Control, Momentary Control, or One Shot Control) 24 | 29 0C (LOCAL) USAGE_MAXIMUM 0x0009000C Button 12 (Selector, On/Off Control, Momentary Control, or One Shot Control) 25 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 26 | 25 01 (GLOBAL) LOGICAL_MAXIMUM 0x01 (1) 27 | 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 28 | 95 0C (GLOBAL) REPORT_COUNT 0x0C (12) Number of fields 29 | 81 02 (MAIN) INPUT 0x00000002 (12 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 30 | 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field <-- Redundant: REPORT_SIZE is already 1 31 | 95 04 (GLOBAL) REPORT_COUNT 0x04 (4) Number of fields 32 | 81 01 (MAIN) INPUT 0x00000001 (4 fields x 1 bit) 1=Constant 0=Array 0=Absolute 33 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 34 | 09 39 (LOCAL) USAGE 0x00010039 Hat switch (Dynamic Value) 35 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 36 | 25 07 (GLOBAL) LOGICAL_MAXIMUM 0x07 (7) 37 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34 38 | 46 3B01 (GLOBAL) PHYSICAL_MAXIMUM 0x013B (315) 39 | 65 14 (GLOBAL) UNIT 0x14 Rotation in degrees [1° units] (4=System=English Rotation, 1=Rotation=Degrees) 40 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 41 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 42 | 81 42 (MAIN) INPUT 0x00000042 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 43 | 65 00 (GLOBAL) UNIT 0x00 No unit (0=None) <-- Info: Consider replacing 65 00 with 64 44 | 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 45 | 09 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 46 | 09 32 (LOCAL) USAGE 0x00010032 Z (Dynamic Value) 47 | 09 35 (LOCAL) USAGE 0x00010035 Rz (Dynamic Value) 48 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 49 | 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255) 50 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8 51 | 95 04 (GLOBAL) REPORT_COUNT 0x04 (4) Number of fields 52 | 81 02 (MAIN) INPUT 0x00000002 (4 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 53 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page <-- Redundant: USAGE_PAGE is already 0x0001 54 | 09 33 (LOCAL) USAGE 0x00010033 Rx (Dynamic Value) 55 | 09 34 (LOCAL) USAGE 0x00010034 Ry (Dynamic Value) 56 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 57 | 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255) <-- Redundant: LOGICAL_MAXIMUM is already 255 58 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8 59 | 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields 60 | 81 02 (MAIN) INPUT 0x00000002 (2 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 61 | C0 (MAIN) END_COLLECTION Physical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=315) UNIT(0x00000000,EXP=0) 62 | C0 (MAIN) END_COLLECTION Application <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=315) UNIT(0x00000000,EXP=0) 63 | */ 64 | 65 | // All structure fields should be byte-aligned... 66 | #pragma pack(push,1) 67 | 68 | //-------------------------------------------------------------------------------- 69 | // Button Page inputReport 01 (Device --> Host) 70 | //-------------------------------------------------------------------------------- 71 | 72 | typedef struct 73 | { 74 | uint8_t reportId; // Report ID = 0x01 (1) 75 | // Collection: CA:GamePad CP: 76 | uint8_t BTN_GamePadButton1 : 1; // Usage 0x00090001: Button 1 Primary/trigger, Value = 0 to 1 77 | uint8_t BTN_GamePadButton2 : 1; // Usage 0x00090002: Button 2 Secondary, Value = 0 to 1 78 | uint8_t BTN_GamePadButton3 : 1; // Usage 0x00090003: Button 3 Tertiary, Value = 0 to 1 79 | uint8_t BTN_GamePadButton4 : 1; // Usage 0x00090004: Button 4, Value = 0 to 1 80 | uint8_t BTN_GamePadButton5 : 1; // Usage 0x00090005: Button 5, Value = 0 to 1 81 | uint8_t BTN_GamePadButton6 : 1; // Usage 0x00090006: Button 6, Value = 0 to 1 82 | uint8_t BTN_GamePadButton7 : 1; // Usage 0x00090007: Button 7, Value = 0 to 1 83 | uint8_t BTN_GamePadButton8 : 1; // Usage 0x00090008: Button 8, Value = 0 to 1 84 | uint8_t BTN_GamePadButton9 : 1; // Usage 0x00090009: Button 9, Value = 0 to 1 85 | uint8_t BTN_GamePadButton10 : 1; // Usage 0x0009000A: Button 10, Value = 0 to 1 86 | uint8_t BTN_GamePadButton11 : 1; // Usage 0x0009000B: Button 11, Value = 0 to 1 87 | uint8_t BTN_GamePadButton12 : 1; // Usage 0x0009000C: Button 12, Value = 0 to 1 88 | uint8_t : 1; // Pad 89 | uint8_t : 1; // Pad 90 | uint8_t : 1; // Pad 91 | uint8_t : 1; // Pad 92 | uint8_t GD_GamePadHatSwitch; // Usage 0x00010039: Hat switch, Value = 0 to 7, Physical = Value x 45 in degrees 93 | uint8_t GD_GamePadX; // Usage 0x00010030: X, Value = 0 to 255, Physical = Value x 21 / 17 94 | uint8_t GD_GamePadY; // Usage 0x00010031: Y, Value = 0 to 255, Physical = Value x 21 / 17 95 | uint8_t GD_GamePadZ; // Usage 0x00010032: Z, Value = 0 to 255, Physical = Value x 21 / 17 96 | uint8_t GD_GamePadRz; // Usage 0x00010035: Rz, Value = 0 to 255, Physical = Value x 21 / 17 97 | uint8_t GD_GamePadRx; // Usage 0x00010033: Rx, Value = 0 to 255, Physical = Value x 21 / 17 98 | uint8_t GD_GamePadRy; // Usage 0x00010034: Ry, Value = 0 to 255, Physical = Value x 21 / 17 99 | } inputReport01_t; 100 | 101 | #pragma pack(pop) 102 | -------------------------------------------------------------------------------- /photo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/photo.jpg -------------------------------------------------------------------------------- /stadiacontroller/DescriptorDump_Stadia_Controller (Model H2B).txt: -------------------------------------------------------------------------------- 1 | Information for device Stadia Controller (VID=0x18D1 PID=0x9400): 2 | 3 | *** ERROR: Descriptor has errors! *** 4 | 5 | Connection Information: 6 | ------------------------------ 7 | Device current bus speed: HighSpeed 8 | Device supports USB 1.1 specification 9 | Device supports USB 2.0 specification 10 | Device address: 0x001C 11 | Current configuration value: 0x01 12 | Number of open pipes: 4 13 | 14 | Device Descriptor: 15 | ------------------------------ 16 | 0x12 bLength 17 | 0x01 bDescriptorType 18 | 0x0201 bcdUSB 19 | 0xEF bDeviceClass (Miscellaneous device) 20 | 0x02 bDeviceSubClass 21 | 0x01 bDeviceProtocol 22 | 0x40 bMaxPacketSize0 (64 bytes) 23 | 0x18D1 idVendor 24 | 0x9400 idProduct 25 | 0x0100 bcdDevice 26 | 0x01 iManufacturer "Google Inc." 27 | 0x02 iProduct "Stadia Controller" 28 | 0x03 iSerialNumber "9B300YCAC6WMGT" 29 | 0x01 bNumConfigurations 30 | 31 | Device Qualifier Descriptor: 32 | ------------------------------ 33 | 0x80 bLength 34 | 0x06 bDescriptorType 35 | *** ERROR: Invalid descriptor length 0x80 36 | Hex dump: 37 | 0x80 0x06 0x00 0x06 0x00 0x00 0x0A 0x00 0x00 0x00 38 | 0x1A 0x00 0x60 0xEA 0x82 0x02 0x74 0xEA 0x82 0x02 39 | 0x74 0xEA 0x82 0x02 0x00 0x00 0x00 0x00 0x00 0x00 40 | 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 41 | 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 42 | 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 43 | 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 44 | 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 45 | 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 46 | 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 47 | 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 48 | 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 49 | 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 50 | 51 | Configuration Descriptor: 52 | ------------------------------ 53 | 0x09 bLength 54 | 0x02 bDescriptorType 55 | 0x0050 wTotalLength (80 bytes) 56 | 0x02 bNumInterfaces 57 | 0x01 bConfigurationValue 58 | 0x00 iConfiguration 59 | 0x80 bmAttributes (Bus-powered Device) 60 | 0xFA bMaxPower (500 mA) 61 | 62 | Interface Association Descriptor: 63 | ------------------------------ 64 | 0x08 bLength 65 | 0x0B bDescriptorType 66 | 0x00 bFirstInterface 67 | 0x01 bInterfaceCount 68 | 0xFF bFunctionClass (Vendor specific) 69 | 0x00 bFunctionSubClass 70 | 0x00 bFunctionProtocol 71 | 0x00 iFunction 72 | 73 | Interface Descriptor: 74 | ------------------------------ 75 | 0x09 bLength 76 | 0x04 bDescriptorType 77 | 0x00 bInterfaceNumber 78 | 0x00 bAlternateSetting 79 | 0x02 bNumEndPoints 80 | 0xFF bInterfaceClass (Vendor specific) 81 | 0x00 bInterfaceSubClass 82 | 0x00 bInterfaceProtocol 83 | 0x00 iInterface 84 | 85 | Endpoint Descriptor: 86 | ------------------------------ 87 | 0x07 bLength 88 | 0x05 bDescriptorType 89 | 0x87 bEndpointAddress (IN endpoint 7) 90 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 91 | 0x0200 wMaxPacketSize (512 bytes) 92 | 0x00 bInterval 93 | 94 | Endpoint Descriptor: 95 | ------------------------------ 96 | 0x07 bLength 97 | 0x05 bDescriptorType 98 | 0x07 bEndpointAddress (OUT endpoint 7) 99 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 100 | 0x0200 wMaxPacketSize (512 bytes) 101 | 0x00 bInterval 102 | 103 | Interface Association Descriptor: 104 | ------------------------------ 105 | 0x08 bLength 106 | 0x0B bDescriptorType 107 | 0x01 bFirstInterface 108 | 0x01 bInterfaceCount 109 | 0x03 bFunctionClass (Human Interface Device Class) 110 | 0x00 bFunctionSubClass 111 | 0x00 bFunctionProtocol 112 | 0x00 iFunction 113 | 114 | Interface Descriptor: 115 | ------------------------------ 116 | 0x09 bLength 117 | 0x04 bDescriptorType 118 | 0x01 bInterfaceNumber 119 | 0x00 bAlternateSetting 120 | 0x02 bNumEndPoints 121 | 0x03 bInterfaceClass (Human Interface Device Class) 122 | 0x00 bInterfaceSubClass 123 | 0x00 bInterfaceProtocol 124 | 0x00 iInterface 125 | 126 | HID Descriptor: 127 | ------------------------------ 128 | 0x09 bLength 129 | 0x21 bDescriptorType 130 | 0x0111 bcdHID 131 | 0x00 bCountryCode 132 | 0x01 bNumDescriptors 133 | 0x22 bDescriptorType (Report descriptor) 134 | 0x009C bDescriptorLength 135 | 136 | Endpoint Descriptor: 137 | ------------------------------ 138 | 0x07 bLength 139 | 0x05 bDescriptorType 140 | 0x83 bEndpointAddress (IN endpoint 3) 141 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 142 | 0x0040 wMaxPacketSize (1 x 64 bytes) 143 | 0x06 bInterval (32 microframes) 144 | 145 | Endpoint Descriptor: 146 | ------------------------------ 147 | 0x07 bLength 148 | 0x05 bDescriptorType 149 | 0x03 bEndpointAddress (OUT endpoint 3) 150 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 151 | 0x0040 wMaxPacketSize (1 x 64 bytes) 152 | 0x06 bInterval (32 microframes) 153 | 154 | Microsoft OS Descriptor is not available. Error code: 0x0000001F 155 | 156 | String Descriptor Table 157 | -------------------------------- 158 | Index LANGID String 159 | 0x00 0x0000 0x0409 160 | 0x01 0x0409 "Google Inc." 161 | 0x02 0x0409 "Stadia Controller" 162 | 0x03 0x0409 "9B300YCAC6WMGT" 163 | 164 | ------------------------------ 165 | 166 | Connection path for device: 167 | USB xHCI Compliant Host Controller 168 | Root Hub 169 | Stadia Controller (VID=0x18D1 PID=0x9400) Port: 1 170 | 171 | Running on: Windows 10 or greater (Build Version 18363) 172 | 173 | Brought to you by TDD v2.15.0, Jun 8 2020, 17:18:07 174 | -------------------------------------------------------------------------------- /stadiacontroller/README.md: -------------------------------------------------------------------------------- 1 | 2 | ![image](https://user-images.githubusercontent.com/1285934/228197322-83d9bbff-7af2-45b4-a32d-35a578cba8ba.png) 3 | ![image](https://user-images.githubusercontent.com/1285934/228197350-59fd2490-0fb2-419d-8015-7a5c249e8e27.png) 4 | ![image](https://user-images.githubusercontent.com/1285934/228197372-eeea45d6-1e30-4b5b-995d-28301ad1c1b9.png) 5 | 6 | 7 | # USB Connection 8 | 9 | USB-C port for charging, wired gameplay, and Tandem Mode. 10 | 11 | TODO 12 | 13 | # Bluetooth Connection 14 | 15 | Bluetooth Low Energy 4.2 (BLE). 16 | 17 | You have until December 31, 2023 to enable Bluetooth mode using the web-based update tool at [stadia.google.com/controller](https://stadia.google.com/controller/) 18 | 19 | In Bluetooth mode, you can use **Tandem Mode** to connect a second controller to your wirelessly connected Stadia Controller. 20 | 21 | After you enable Bluetooth mode on your Stadia Controller, you can connect it to a device, like a computer or mobile phone. 22 | 23 | TODO 24 | 25 | ## Pair 26 | 27 | Press and hold the **Stadia button** until it turns off and then press and hold the **Stadia button** until the status light pulses orange. 28 | 29 | ![Status light orange blink](https://storage.googleapis.com/support-kms-prod/1AAVgklMpvDVojFntjAuyuMlVQIL3itQx6gB) 30 | 31 | Note: If the status light doesn't pulse orange, hold the **Stadia button** and **Y button** simultaneously for 2 seconds. 32 | On the device you want to connect to, open its settings and then go to Bluetooth settings and then select the device containing the word "Stadia". 33 | If the controller won't pair after performing these steps, you might have to approve the controller on your device's Bluetooth menu. If you still have problems pairing or connecting your controller to a device, refer to the device's manufacturer for instructions. 34 | After your Stadia Controller connects wirelessly to a device, its status light will turn solid white. 35 | 36 | ## Tandem mode 37 | 38 | To use Tandem Mode, plug a second controller into your Stadia Controller's USB port. Inputs from both controllers are registered as if they're coming from your primary Stadia Controller. This means you and a second player can play in a cooperative "friend mode" where you share a game's inputs. 39 | 40 | - Turn on your Stadia Controller. Make sure it's paired and connected wirelessly to a device. 41 | - Make sure the secondary controller is charged and turned off. 42 | - Use a USB cable to connect the secondary controller to your Stadia Controller's USB-C port. 43 | 44 | If you use a USB A-to-C adapter, connect the adapter side to your primary controller. If you connect two Stadia Controllers, power down the second controller before plugging it in. 45 | 46 | Note: To use vibration on the primary controller in Tandem Mode, press and hold the down button **Down button on the Direction Pad** while connecting the second controller and then hold it for 3 seconds after connecting. 47 | 48 | # Troubleshooting 49 | 50 | ## Recover an unresponsive Stadia Controller 51 | 52 | If your Stadia Controller won't connect to a device, try the following steps before you perform a hardware reset. 53 | 54 | - Use a functional charger and USB-C cable to plug your Stadia Controller into a power source for 30 minutes. 55 | - With the controller off, hold down the **Y button** and then press the **Stadia button** for ten seconds and then release the button. 56 | - Press and hold the **Stadia button** for 2 seconds or plug it into a power source. 57 | 58 | ## Turn your Stadia Controller off and on again 59 | 60 | If your Stadia Controller is paired wirelessly to a device with Bluetooth or connected with a USB cable and you want to stop using it: 61 | 62 | - Press and hold the **Stadia button** for 4 seconds. 63 | - The controller will rumble and its status light will turn off. 64 | 65 | To turn your controller back on: 66 | - For a wired connection, plug your controller back into your computer or mobile device. 67 | - For a wireless link, press and hold the **Stadia button** until the controller rumbles. 68 | 69 | ## Factory reset your controller 70 | 71 | If you experience issues with your Stadia Controller and the steps above don't help, perform a factory reset: 72 | 73 | - Make sure your Stadia Controller is on. 74 | - Press and hold the **Google Assistant Assistant button** and **Capture button** buttons simultaneously for 6 seconds. 75 | - The controller will vibrate and the status light will blink. 76 | 77 | Note: After you perform a factory reset, you'll need to re-pair your controller to devices over Bluetooth. 78 | 79 | ## My Stadia Controller won't turn on. How can I fix it? 80 | 81 | If your controller won't turn on, its battery might be drained. Plug it into a computer or power outlet to charge it. If that doesn't work: 82 | 83 | - Unplug your Stadia Controller. 84 | - Press and hold the **Stadia button** for 10 seconds to reset the controller. 85 | - Press and hold the **Stadia button** until the status light turns on. 86 | -------------------------------------------------------------------------------- /stadiacontroller/stadiacontroller.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/stadiacontroller/stadiacontroller.pcap -------------------------------------------------------------------------------- /stadiacontroller/stadiacontroller_bluetoothle_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/stadiacontroller/stadiacontroller_bluetoothle_hid_report_descriptor.bin -------------------------------------------------------------------------------- /stadiacontroller/stadiacontroller_hid_report_descriptor_old.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/stadiacontroller/stadiacontroller_hid_report_descriptor_old.bin -------------------------------------------------------------------------------- /stadiacontroller/stadiacontroller_hid_report_descriptor_old.txt: -------------------------------------------------------------------------------- 1 | 2 | //-------------------------------------------------------------------------------- 3 | // Report descriptor data in hex (length 156 bytes) 4 | //-------------------------------------------------------------------------------- 5 | 6 | 7 | // 05010905 A1018503 05017504 95012507 463B0165 14093981 42450065 00750195 8 | // 04810105 09150025 01750195 0F091209 11091409 13090D09 0C090B09 0F090E09 9 | // 08090709 05090409 02090181 02750195 01810105 01150126 FF000901 A1000930 10 | // 09317508 95028102 C00901A1 00093209 35750895 028102C0 05027508 95021500 11 | // 26FF0009 C509C481 02850506 0F000997 75109502 27FFFF00 009102C0 12 | 13 | 14 | //-------------------------------------------------------------------------------- 15 | // Decoded Application Collection 16 | //-------------------------------------------------------------------------------- 17 | 18 | /* 19 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 20 | 09 05 (LOCAL) USAGE 0x00010005 Game Pad (Application Collection) 21 | A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x00010005: Page=Generic Desktop Page, Usage=Game Pad, Type=Application Collection) 22 | 85 03 (GLOBAL) REPORT_ID 0x03 (3) 23 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page <-- Redundant: USAGE_PAGE is already 0x0001 24 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field 25 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 26 | 25 07 (GLOBAL) LOGICAL_MAXIMUM 0x07 (7) 27 | 46 3B01 (GLOBAL) PHYSICAL_MAXIMUM 0x013B (315) 28 | 65 14 (GLOBAL) UNIT 0x14 Rotation in degrees [1° units] (4=System=English Rotation, 1=Rotation=Degrees) 29 | 09 39 (LOCAL) USAGE 0x00010039 Hat switch (Dynamic Value) 30 | 81 42 (MAIN) INPUT 0x00000042 (1 field x 4 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MINIMUM is undefined <-- Error: PHYSICAL_MINIMUM is undefined 31 | 45 00 (GLOBAL) PHYSICAL_MAXIMUM 0x00 (0) <-- Info: Consider replacing 45 00 with 44 32 | 65 00 (GLOBAL) UNIT 0x00 No unit (0=None) <-- Info: Consider replacing 65 00 with 64 33 | 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 34 | 95 04 (GLOBAL) REPORT_COUNT 0x04 (4) Number of fields 35 | 81 01 (MAIN) INPUT 0x00000001 (4 fields x 1 bit) 1=Constant 0=Array 0=Absolute 36 | 05 09 (GLOBAL) USAGE_PAGE 0x0009 Button Page 37 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 38 | 25 01 (GLOBAL) LOGICAL_MAXIMUM 0x01 (1) 39 | 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field <-- Redundant: REPORT_SIZE is already 1 40 | 95 0F (GLOBAL) REPORT_COUNT 0x0F (15) Number of fields 41 | 09 12 (LOCAL) USAGE 0x00090012 Button 18 (Selector, On/Off Control, Momentary Control, or One Shot Control) 42 | 09 11 (LOCAL) USAGE 0x00090011 Button 17 (Selector, On/Off Control, Momentary Control, or One Shot Control) 43 | 09 14 (LOCAL) USAGE 0x00090014 Button 20 (Selector, On/Off Control, Momentary Control, or One Shot Control) 44 | 09 13 (LOCAL) USAGE 0x00090013 Button 19 (Selector, On/Off Control, Momentary Control, or One Shot Control) 45 | 09 0D (LOCAL) USAGE 0x0009000D Button 13 (Selector, On/Off Control, Momentary Control, or One Shot Control) 46 | 09 0C (LOCAL) USAGE 0x0009000C Button 12 (Selector, On/Off Control, Momentary Control, or One Shot Control) 47 | 09 0B (LOCAL) USAGE 0x0009000B Button 11 (Selector, On/Off Control, Momentary Control, or One Shot Control) 48 | 09 0F (LOCAL) USAGE 0x0009000F Button 15 (Selector, On/Off Control, Momentary Control, or One Shot Control) 49 | 09 0E (LOCAL) USAGE 0x0009000E Button 14 (Selector, On/Off Control, Momentary Control, or One Shot Control) 50 | 09 08 (LOCAL) USAGE 0x00090008 Button 8 (Selector, On/Off Control, Momentary Control, or One Shot Control) 51 | 09 07 (LOCAL) USAGE 0x00090007 Button 7 (Selector, On/Off Control, Momentary Control, or One Shot Control) 52 | 09 05 (LOCAL) USAGE 0x00090005 Button 5 (Selector, On/Off Control, Momentary Control, or One Shot Control) 53 | 09 04 (LOCAL) USAGE 0x00090004 Button 4 (Selector, On/Off Control, Momentary Control, or One Shot Control) 54 | 09 02 (LOCAL) USAGE 0x00090002 Button 2 Secondary (Selector, On/Off Control, Momentary Control, or One Shot Control) 55 | 09 01 (LOCAL) USAGE 0x00090001 Button 1 Primary/trigger (Selector, On/Off Control, Momentary Control, or One Shot Control) 56 | 81 02 (MAIN) INPUT 0x00000002 (15 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: PHYSICAL_MINIMUM is undefined 57 | 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field <-- Redundant: REPORT_SIZE is already 1 58 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 59 | 81 01 (MAIN) INPUT 0x00000001 (1 field x 1 bit) 1=Constant 0=Array 0=Absolute 60 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 61 | 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) 62 | 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255) 63 | 09 01 (LOCAL) USAGE 0x00010001 Pointer (Physical Collection) 64 | A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x00010001: Page=Generic Desktop Page, Usage=Pointer, Type=Physical Collection) 65 | 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 66 | 09 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 67 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 68 | 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields 69 | 81 02 (MAIN) INPUT 0x00000002 (2 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: PHYSICAL_MINIMUM is undefined 70 | C0 (MAIN) END_COLLECTION Physical 71 | 09 01 (LOCAL) USAGE 0x00010001 Pointer (Physical Collection) 72 | A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x00010001: Page=Generic Desktop Page, Usage=Pointer, Type=Physical Collection) 73 | 09 32 (LOCAL) USAGE 0x00010032 Z (Dynamic Value) 74 | 09 35 (LOCAL) USAGE 0x00010035 Rz (Dynamic Value) 75 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8 76 | 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields <-- Redundant: REPORT_COUNT is already 2 77 | 81 02 (MAIN) INPUT 0x00000002 (2 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: PHYSICAL_MINIMUM is undefined 78 | C0 (MAIN) END_COLLECTION Physical 79 | 05 02 (GLOBAL) USAGE_PAGE 0x0002 Simulation Controls Page 80 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8 81 | 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields <-- Redundant: REPORT_COUNT is already 2 82 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 83 | 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255) <-- Redundant: LOGICAL_MAXIMUM is already 255 84 | 09 C5 (LOCAL) USAGE 0x000200C5 Brake (Dynamic Value) 85 | 09 C4 (LOCAL) USAGE 0x000200C4 Accelerator (Dynamic Value) 86 | 81 02 (MAIN) INPUT 0x00000002 (2 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: PHYSICAL_MINIMUM is undefined 87 | 85 05 (GLOBAL) REPORT_ID 0x05 (5) 88 | 06 0F00 (GLOBAL) USAGE_PAGE 0x000F Physical Interface Device Page 89 | 09 97 (LOCAL) USAGE 0x000F0097 DC Enable Actuators (Selector) 90 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 91 | 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields <-- Redundant: REPORT_COUNT is already 2 92 | 27 FFFF0000 (GLOBAL) LOGICAL_MAXIMUM 0x0000FFFF (65535) 93 | 91 02 (MAIN) OUTPUT 0x00000002 (2 fields x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: PHYSICAL_MINIMUM is undefined 94 | C0 (MAIN) END_COLLECTION Application 95 | */ 96 | 97 | //-------------------------------------------------------------------------------- 98 | // Generic Desktop Page inputReport 03 (Device --> Host) 99 | //-------------------------------------------------------------------------------- 100 | 101 | typedef struct 102 | { 103 | uint8_t reportId; // Report ID = 0x03 (3) 104 | // Collection: CA:GamePad 105 | int8_t GD_GamePadHatSwitch : 4; // Usage 0x00010039: Hat switch, Value = to 7, Physical = Value x 45 in degrees 106 | int8_t : 1; // Pad 107 | int8_t : 1; // Pad 108 | int8_t : 1; // Pad 109 | int8_t : 1; // Pad 110 | uint8_t BTN_GamePadButton18 : 1; // Usage 0x00090012: Button 18, Value = 0 to 1 111 | uint8_t BTN_GamePadButton17 : 1; // Usage 0x00090011: Button 17, Value = 0 to 1 112 | uint8_t BTN_GamePadButton20 : 1; // Usage 0x00090014: Button 20, Value = 0 to 1 113 | uint8_t BTN_GamePadButton19 : 1; // Usage 0x00090013: Button 19, Value = 0 to 1 114 | uint8_t BTN_GamePadButton13 : 1; // Usage 0x0009000D: Button 13, Value = 0 to 1 115 | uint8_t BTN_GamePadButton12 : 1; // Usage 0x0009000C: Button 12, Value = 0 to 1 116 | uint8_t BTN_GamePadButton11 : 1; // Usage 0x0009000B: Button 11, Value = 0 to 1 117 | uint8_t BTN_GamePadButton15 : 1; // Usage 0x0009000F: Button 15, Value = 0 to 1 118 | uint8_t BTN_GamePadButton14 : 1; // Usage 0x0009000E: Button 14, Value = 0 to 1 119 | uint8_t BTN_GamePadButton8 : 1; // Usage 0x00090008: Button 8, Value = 0 to 1 120 | uint8_t BTN_GamePadButton7 : 1; // Usage 0x00090007: Button 7, Value = 0 to 1 121 | uint8_t BTN_GamePadButton5 : 1; // Usage 0x00090005: Button 5, Value = 0 to 1 122 | uint8_t BTN_GamePadButton4 : 1; // Usage 0x00090004: Button 4, Value = 0 to 1 123 | uint8_t BTN_GamePadButton2 : 1; // Usage 0x00090002: Button 2 Secondary, Value = 0 to 1 124 | uint8_t BTN_GamePadButton1 : 1; // Usage 0x00090001: Button 1 Primary/trigger, Value = 0 to 1 125 | uint8_t : 1; // Pad 126 | // Collection: CA:GamePad CP:Pointer 127 | uint8_t GD_GamePadPointerX; // Usage 0x00010030: X, Value = 1 to 255 128 | uint8_t GD_GamePadPointerY; // Usage 0x00010031: Y, Value = 1 to 255 129 | uint8_t GD_GamePadPointerZ; // Usage 0x00010032: Z, Value = 1 to 255 130 | uint8_t GD_GamePadPointerRz; // Usage 0x00010035: Rz, Value = 1 to 255 131 | // Collection: CA:GamePad 132 | uint8_t SIM_GamePadBrake; // Usage 0x000200C5: Brake, Value = 0 to 255 133 | uint8_t SIM_GamePadAccelerator; // Usage 0x000200C4: Accelerator, Value = 0 to 255 134 | } inputReport03_t; 135 | 136 | 137 | //-------------------------------------------------------------------------------- 138 | // Physical Interface Device Page outputReport 05 (Device <-- Host) 139 | //-------------------------------------------------------------------------------- 140 | 141 | typedef struct 142 | { 143 | uint8_t reportId; // Report ID = 0x05 (5) 144 | // Collection: CA:GamePad 145 | uint16_t PID_GamePadDcEnableActuators[2]; // Usage 0x000F0097: DC Enable Actuators, Value = 0 to 65535 146 | } outputReport05_t; 147 | 148 | -------------------------------------------------------------------------------- /switchpro/DescriptorDump_Pro_Controller (Nintendo Switch Pro Model HAC-013).txt: -------------------------------------------------------------------------------- 1 | Information for device Pro Controller (VID=0x057E PID=0x2009): 2 | 3 | Connection Information: 4 | ------------------------------ 5 | Device current bus speed: FullSpeed 6 | Device supports USB 1.1 specification 7 | Device supports USB 2.0 specification 8 | Device address: 0x0011 9 | Current configuration value: 0x01 10 | Number of open pipes: 2 11 | 12 | Device Descriptor: 13 | ------------------------------ 14 | 0x12 bLength 15 | 0x01 bDescriptorType 16 | 0x0200 bcdUSB 17 | 0x00 bDeviceClass 18 | 0x00 bDeviceSubClass 19 | 0x00 bDeviceProtocol 20 | 0x40 bMaxPacketSize0 (64 bytes) 21 | 0x057E idVendor 22 | 0x2009 idProduct 23 | 0x0210 bcdDevice 24 | 0x01 iManufacturer 25 | 0x02 iProduct 26 | 0x03 iSerialNumber 27 | 0x01 bNumConfigurations 28 | Hex dump: 29 | 0x12 0x01 0x00 0x02 0x00 0x00 0x00 0x40 0x7E 0x05 30 | 0x09 0x20 0x10 0x02 0x01 0x02 0x03 0x01 31 | 32 | Configuration Descriptor: 33 | ------------------------------ 34 | 0x09 bLength 35 | 0x02 bDescriptorType 36 | 0x0029 wTotalLength (41 bytes) 37 | 0x01 bNumInterfaces 38 | 0x01 bConfigurationValue 39 | 0x00 iConfiguration 40 | 0xA0 bmAttributes (Bus-powered Device, Remote-Wakeup) 41 | 0xFA bMaxPower (500 mA) 42 | Hex dump: 43 | 0x09 0x02 0x29 0x00 0x01 0x01 0x00 0xA0 0xFA 44 | 45 | Interface Descriptor: 46 | ------------------------------ 47 | 0x09 bLength 48 | 0x04 bDescriptorType 49 | 0x00 bInterfaceNumber 50 | 0x00 bAlternateSetting 51 | 0x02 bNumEndPoints 52 | 0x03 bInterfaceClass (Human Interface Device Class) 53 | 0x00 bInterfaceSubClass 54 | 0x00 bInterfaceProtocol 55 | 0x00 iInterface 56 | Hex dump: 57 | 0x09 0x04 0x00 0x00 0x02 0x03 0x00 0x00 0x00 58 | 59 | HID Descriptor: 60 | ------------------------------ 61 | 0x09 bLength 62 | 0x21 bDescriptorType 63 | 0x0111 bcdHID 64 | 0x00 bCountryCode 65 | 0x01 bNumDescriptors 66 | 0x22 bDescriptorType (Report descriptor) 67 | 0x00CB bDescriptorLength 68 | Hex dump: 69 | 0x09 0x21 0x11 0x01 0x00 0x01 0x22 0xCB 0x00 70 | 71 | Endpoint Descriptor: 72 | ------------------------------ 73 | 0x07 bLength 74 | 0x05 bDescriptorType 75 | 0x81 bEndpointAddress (IN endpoint 1) 76 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 77 | 0x0040 wMaxPacketSize (1 x 64 bytes) 78 | 0x08 bInterval (8 frames) 79 | Hex dump: 80 | 0x07 0x05 0x81 0x03 0x40 0x00 0x08 81 | 82 | Endpoint Descriptor: 83 | ------------------------------ 84 | 0x07 bLength 85 | 0x05 bDescriptorType 86 | 0x01 bEndpointAddress (OUT endpoint 1) 87 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 88 | 0x0040 wMaxPacketSize (1 x 64 bytes) 89 | 0x08 bInterval (8 frames) 90 | Hex dump: 91 | 0x07 0x05 0x01 0x03 0x40 0x00 0x08 92 | 93 | Microsoft OS Descriptor is not available. Error code: 0x0000001F 94 | 95 | String Descriptor Table 96 | -------------------------------- 97 | Index LANGID String 98 | 0x00 0x0000 99 | Hex dump: 100 | 101 | 0x01 0x0000 Request failed with 0x000001B1 102 | Hex dump: 103 | 104 | 0x02 0x0000 Request failed with 0x000001B1 105 | Hex dump: 106 | 107 | 0x03 0x0000 Request failed with 0x000001B1 108 | Hex dump: 109 | 110 | ------------------------------ 111 | 112 | Whole Device Descriptor as hex dump: 113 | 0x12, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x7E, 0x05, 114 | 0x09, 0x20, 0x10, 0x02, 0x01, 0x02, 0x03, 0x01 115 | 116 | Whole Configuration Descriptor as hex dump: 117 | 0x09, 0x02, 0x29, 0x00, 0x01, 0x01, 0x00, 0xA0, 0xFA, 0x09, 118 | 0x04, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x09, 0x21, 119 | 0x11, 0x01, 0x00, 0x01, 0x22, 0xCB, 0x00, 0x07, 0x05, 0x81, 120 | 0x03, 0x40, 0x00, 0x08, 0x07, 0x05, 0x01, 0x03, 0x40, 0x00, 121 | 0x08 122 | 123 | 124 | ------------------------------ 125 | 126 | Connection path for device: 127 | USB xHCI Compliant Host Controller 128 | Root Hub 129 | Pro Controller (VID=0x057E PID=0x2009) Port: 2 130 | 131 | Running on: Windows 10 or greater (Build Version 18363) 132 | 133 | Brought to you by TDD v2.15.0, Jun 8 2020, 17:18:07 134 | -------------------------------------------------------------------------------- /switchpro/switchpro.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/switchpro/switchpro.pcap -------------------------------------------------------------------------------- /switchpro/switchpro_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/switchpro/switchpro_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xbox360/DescriptorDump_Controller (Xbox 360 Wired Model X854237-001).txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xbox360/DescriptorDump_Controller (Xbox 360 Wired Model X854237-001).txt -------------------------------------------------------------------------------- /xbox360/xusb_arcadestick_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xbox360/xusb_arcadestick_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xbox360/xusb_arcadestick_hid_report_descriptor.txt: -------------------------------------------------------------------------------- 1 | 2 | //-------------------------------------------------------------------------------- 3 | // Report descriptor data in hex (length 59 bytes) 4 | //-------------------------------------------------------------------------------- 5 | 6 | 7 | // 05010905 A1010509 1901290A 950A7501 81027506 95018103 05010939 15012508 8 | // 3500463B 10660E00 75049501 81427504 95018103 75089501 8103C0 9 | 10 | 11 | //-------------------------------------------------------------------------------- 12 | // Decoded Application Collection 13 | //-------------------------------------------------------------------------------- 14 | 15 | /* 16 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 17 | 09 05 (LOCAL) USAGE 0x00010005 Game Pad (Application Collection) 18 | A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x00010005: Page=Generic Desktop Page, Usage=Game Pad, Type=Application Collection) 19 | 05 09 (GLOBAL) USAGE_PAGE 0x0009 Button Page 20 | 19 01 (LOCAL) USAGE_MINIMUM 0x00090001 Button 1 Primary/trigger (Selector, On/Off Control, Momentary Control, or One Shot Control) 21 | 29 0A (LOCAL) USAGE_MAXIMUM 0x0009000A Button 10 (Selector, On/Off Control, Momentary Control, or One Shot Control) 22 | 95 0A (GLOBAL) REPORT_COUNT 0x0A (10) Number of fields 23 | 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 24 | 81 02 (MAIN) INPUT 0x00000002 (10 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MINIMUM is undefined <-- Error: LOGICAL_MAXIMUM is undefined 25 | 75 06 (GLOBAL) REPORT_SIZE 0x06 (6) Number of bits per field 26 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 27 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 6 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 28 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 29 | 09 39 (LOCAL) USAGE 0x00010039 Hat switch (Dynamic Value) 30 | 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) 31 | 25 08 (GLOBAL) LOGICAL_MAXIMUM 0x08 (8) 32 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34 33 | 46 3B10 (GLOBAL) PHYSICAL_MAXIMUM 0x103B (4155) 34 | 66 0E00 (GLOBAL) UNIT 0x000E (E=Reserved <-- Error: Measurement system type (E) is reserved) <-- Info: Consider replacing 66 0E00 with 65 0E 35 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field 36 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 37 | 81 42 (MAIN) INPUT 0x00000042 (1 field x 4 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 38 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field <-- Redundant: REPORT_SIZE is already 4 39 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 40 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 4 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 41 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 42 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 43 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 8 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 44 | C0 (MAIN) END_COLLECTION Application <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=4155) UNIT(0x0000000E,EXP=0) 45 | */ 46 | 47 | //-------------------------------------------------------------------------------- 48 | // Button Page inputReport (Device --> Host) 49 | //-------------------------------------------------------------------------------- 50 | 51 | typedef struct 52 | { 53 | // No REPORT ID byte 54 | // Collection: CA:GamePad 55 | int8_t BTN_GamePadButton1 : 1; // Usage 0x00090001: Button 1 Primary/trigger, Value = to 56 | int8_t BTN_GamePadButton2 : 1; // Usage 0x00090002: Button 2 Secondary, Value = to 57 | int8_t BTN_GamePadButton3 : 1; // Usage 0x00090003: Button 3 Tertiary, Value = to 58 | int8_t BTN_GamePadButton4 : 1; // Usage 0x00090004: Button 4, Value = to 59 | int8_t BTN_GamePadButton5 : 1; // Usage 0x00090005: Button 5, Value = to 60 | int8_t BTN_GamePadButton6 : 1; // Usage 0x00090006: Button 6, Value = to 61 | int8_t BTN_GamePadButton7 : 1; // Usage 0x00090007: Button 7, Value = to 62 | int8_t BTN_GamePadButton8 : 1; // Usage 0x00090008: Button 8, Value = to 63 | int8_t BTN_GamePadButton9 : 1; // Usage 0x00090009: Button 9, Value = to 64 | int8_t BTN_GamePadButton10 : 1; // Usage 0x0009000A: Button 10, Value = to 65 | int8_t : 6; // Pad 66 | uint8_t GD_GamePadHatSwitch : 4; // Usage 0x00010039: Hat switch, Value = 1 to 8, Physical = (Value - 1) x 4155 / 7 in 67 | uint8_t : 4; // Pad 68 | uint8_t pad_5; // Pad 69 | } inputReport_t; 70 | 71 | -------------------------------------------------------------------------------- /xbox360/xusb_callbutton_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xbox360/xusb_callbutton_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xbox360/xusb_callbutton_hid_report_descriptor.txt: -------------------------------------------------------------------------------- 1 | 2 | //-------------------------------------------------------------------------------- 3 | // Report descriptor data in hex (length 35 bytes) 4 | //-------------------------------------------------------------------------------- 5 | 6 | 7 | // 050C0901 A1010600 FF0A07FD 15002501 95017501 81027507 95018103 75089503 8 | // 8103C0 9 | 10 | 11 | //-------------------------------------------------------------------------------- 12 | // Decoded Application Collection 13 | //-------------------------------------------------------------------------------- 14 | 15 | /* 16 | 05 0C (GLOBAL) USAGE_PAGE 0x000C Consumer Device Page 17 | 09 01 (LOCAL) USAGE 0x000C0001 Consumer Control (Application Collection) 18 | A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x000C0001: Page=Consumer Device Page, Usage=Consumer Control, Type=Application Collection) 19 | 06 00FF (GLOBAL) USAGE_PAGE 0xFF00 Vendor-defined 20 | 0A 07FD (LOCAL) USAGE 0xFF00FD07 <-- Warning: Undocumented usage (document it by inserting FD07 into file FF00.conf) 21 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 22 | 25 01 (GLOBAL) LOGICAL_MAXIMUM 0x01 (1) 23 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 24 | 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 25 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 26 | 75 07 (GLOBAL) REPORT_SIZE 0x07 (7) Number of bits per field 27 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 28 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 7 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 29 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 30 | 95 03 (GLOBAL) REPORT_COUNT 0x03 (3) Number of fields 31 | 81 03 (MAIN) INPUT 0x00000003 (3 fields x 8 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 32 | C0 (MAIN) END_COLLECTION Application 33 | */ 34 | 35 | //-------------------------------------------------------------------------------- 36 | // Vendor-defined inputReport (Device --> Host) 37 | //-------------------------------------------------------------------------------- 38 | 39 | typedef struct 40 | { 41 | // No REPORT ID byte 42 | // Collection: CA:ConsumerControl 43 | uint8_t VEN_ConsumerControlFD07 : 1; // Usage 0xFF00FD07: , Value = 0 to 1 44 | uint8_t : 7; // Pad 45 | uint8_t pad_3[3]; // Pad 46 | } inputReport_t; 47 | 48 | -------------------------------------------------------------------------------- /xbox360/xusb_dancepad_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xbox360/xusb_dancepad_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xbox360/xusb_dancepad_hid_report_descriptor.txt: -------------------------------------------------------------------------------- 1 | 2 | //-------------------------------------------------------------------------------- 3 | // Report descriptor data in hex (length 59 bytes) 4 | //-------------------------------------------------------------------------------- 5 | 6 | 7 | // 05010905 A1010509 1901290A 950A7501 81027506 95018103 05010939 15012508 8 | // 3500463B 10660E00 75049501 81427504 95018103 75089501 8103C0 9 | 10 | 11 | //-------------------------------------------------------------------------------- 12 | // Decoded Application Collection 13 | //-------------------------------------------------------------------------------- 14 | 15 | /* 16 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 17 | 09 05 (LOCAL) USAGE 0x00010005 Game Pad (Application Collection) 18 | A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x00010005: Page=Generic Desktop Page, Usage=Game Pad, Type=Application Collection) 19 | 05 09 (GLOBAL) USAGE_PAGE 0x0009 Button Page 20 | 19 01 (LOCAL) USAGE_MINIMUM 0x00090001 Button 1 Primary/trigger (Selector, On/Off Control, Momentary Control, or One Shot Control) 21 | 29 0A (LOCAL) USAGE_MAXIMUM 0x0009000A Button 10 (Selector, On/Off Control, Momentary Control, or One Shot Control) 22 | 95 0A (GLOBAL) REPORT_COUNT 0x0A (10) Number of fields 23 | 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 24 | 81 02 (MAIN) INPUT 0x00000002 (10 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MINIMUM is undefined <-- Error: LOGICAL_MAXIMUM is undefined 25 | 75 06 (GLOBAL) REPORT_SIZE 0x06 (6) Number of bits per field 26 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 27 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 6 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 28 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 29 | 09 39 (LOCAL) USAGE 0x00010039 Hat switch (Dynamic Value) 30 | 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) 31 | 25 08 (GLOBAL) LOGICAL_MAXIMUM 0x08 (8) 32 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34 33 | 46 3B10 (GLOBAL) PHYSICAL_MAXIMUM 0x103B (4155) 34 | 66 0E00 (GLOBAL) UNIT 0x000E (E=Reserved <-- Error: Measurement system type (E) is reserved) <-- Info: Consider replacing 66 0E00 with 65 0E 35 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field 36 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 37 | 81 42 (MAIN) INPUT 0x00000042 (1 field x 4 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 38 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field <-- Redundant: REPORT_SIZE is already 4 39 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 40 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 4 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 41 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 42 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 43 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 8 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 44 | C0 (MAIN) END_COLLECTION Application <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=4155) UNIT(0x0000000E,EXP=0) 45 | */ 46 | 47 | //-------------------------------------------------------------------------------- 48 | // Button Page inputReport (Device --> Host) 49 | //-------------------------------------------------------------------------------- 50 | 51 | typedef struct 52 | { 53 | // No REPORT ID byte 54 | // Collection: CA:GamePad 55 | int8_t BTN_GamePadButton1 : 1; // Usage 0x00090001: Button 1 Primary/trigger, Value = to 56 | int8_t BTN_GamePadButton2 : 1; // Usage 0x00090002: Button 2 Secondary, Value = to 57 | int8_t BTN_GamePadButton3 : 1; // Usage 0x00090003: Button 3 Tertiary, Value = to 58 | int8_t BTN_GamePadButton4 : 1; // Usage 0x00090004: Button 4, Value = to 59 | int8_t BTN_GamePadButton5 : 1; // Usage 0x00090005: Button 5, Value = to 60 | int8_t BTN_GamePadButton6 : 1; // Usage 0x00090006: Button 6, Value = to 61 | int8_t BTN_GamePadButton7 : 1; // Usage 0x00090007: Button 7, Value = to 62 | int8_t BTN_GamePadButton8 : 1; // Usage 0x00090008: Button 8, Value = to 63 | int8_t BTN_GamePadButton9 : 1; // Usage 0x00090009: Button 9, Value = to 64 | int8_t BTN_GamePadButton10 : 1; // Usage 0x0009000A: Button 10, Value = to 65 | int8_t : 6; // Pad 66 | uint8_t GD_GamePadHatSwitch : 4; // Usage 0x00010039: Hat switch, Value = 1 to 8, Physical = (Value - 1) x 4155 / 7 in 67 | uint8_t : 4; // Pad 68 | uint8_t pad_5; // Pad 69 | } inputReport_t; 70 | 71 | -------------------------------------------------------------------------------- /xbox360/xusb_flightstick_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xbox360/xusb_flightstick_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xbox360/xusb_flightstick_hid_report_descriptor.txt: -------------------------------------------------------------------------------- 1 | 2 | //-------------------------------------------------------------------------------- 3 | // Report descriptor data in hex (length 127 bytes) 4 | //-------------------------------------------------------------------------------- 5 | 6 | 7 | // 05010904 A1010501 09321500 26FF0095 01750881 02050109 35150026 FF009501 8 | // 75088102 05010901 A1000930 09311500 26FFFF35 0046FFFF 95027510 8102C0A1 9 | // 00093309 34150026 FFFF3500 46FFFF95 02751081 02C00509 1901290A 950A7501 10 | // 81020501 09391501 25083500 463B1066 0E007504 95018142 75029501 8103C0 11 | 12 | 13 | //-------------------------------------------------------------------------------- 14 | // Decoded Application Collection 15 | //-------------------------------------------------------------------------------- 16 | 17 | /* 18 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 19 | 09 04 (LOCAL) USAGE 0x00010004 Joystick (Application Collection) 20 | A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x00010004: Page=Generic Desktop Page, Usage=Joystick, Type=Application Collection) 21 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page <-- Redundant: USAGE_PAGE is already 0x0001 22 | 09 32 (LOCAL) USAGE 0x00010032 Z (Dynamic Value) 23 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 24 | 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255) 25 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 26 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 27 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 28 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page <-- Redundant: USAGE_PAGE is already 0x0001 29 | 09 35 (LOCAL) USAGE 0x00010035 Rz (Dynamic Value) 30 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 31 | 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255) <-- Redundant: LOGICAL_MAXIMUM is already 255 32 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 33 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8 34 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 35 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page <-- Redundant: USAGE_PAGE is already 0x0001 36 | 09 01 (LOCAL) USAGE 0x00010001 Pointer (Physical Collection) 37 | A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x00010001: Page=Generic Desktop Page, Usage=Pointer, Type=Physical Collection) 38 | 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 39 | 09 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 40 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 41 | 26 FFFF (GLOBAL) LOGICAL_MAXIMUM 0xFFFF (-1) <-- Info: Consider replacing 26 FFFF with 25 FF 42 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34 43 | 46 FFFF (GLOBAL) PHYSICAL_MAXIMUM 0xFFFF (-1) <-- Info: Consider replacing 46 FFFF with 45 FF 44 | 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields 45 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 46 | 81 02 (MAIN) INPUT 0x00000002 (2 fields x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 47 | C0 (MAIN) END_COLLECTION Physical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=-1) UNIT(0x,EXP=0) 48 | A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE <-- Warning: USAGE type should be CP (Physical Collection) 49 | 09 33 (LOCAL) USAGE 0x00010033 Rx (Dynamic Value) 50 | 09 34 (LOCAL) USAGE 0x00010034 Ry (Dynamic Value) 51 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 52 | 26 FFFF (GLOBAL) LOGICAL_MAXIMUM 0xFFFF (-1) <-- Redundant: LOGICAL_MAXIMUM is already -1 <-- Info: Consider replacing 26 FFFF with 25 FF 53 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34 54 | 46 FFFF (GLOBAL) PHYSICAL_MAXIMUM 0xFFFF (-1) <-- Redundant: PHYSICAL_MAXIMUM is already -1 <-- Info: Consider replacing 46 FFFF with 45 FF 55 | 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields <-- Redundant: REPORT_COUNT is already 2 56 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field <-- Redundant: REPORT_SIZE is already 16 57 | 81 02 (MAIN) INPUT 0x00000002 (2 fields x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 58 | C0 (MAIN) END_COLLECTION Physical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=-1) UNIT(0x,EXP=0) 59 | 05 09 (GLOBAL) USAGE_PAGE 0x0009 Button Page 60 | 19 01 (LOCAL) USAGE_MINIMUM 0x00090001 Button 1 Primary/trigger (Selector, On/Off Control, Momentary Control, or One Shot Control) 61 | 29 0A (LOCAL) USAGE_MAXIMUM 0x0009000A Button 10 (Selector, On/Off Control, Momentary Control, or One Shot Control) 62 | 95 0A (GLOBAL) REPORT_COUNT 0x0A (10) Number of fields 63 | 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 64 | 81 02 (MAIN) INPUT 0x00000002 (10 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 65 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 66 | 09 39 (LOCAL) USAGE 0x00010039 Hat switch (Dynamic Value) 67 | 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) 68 | 25 08 (GLOBAL) LOGICAL_MAXIMUM 0x08 (8) 69 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34 70 | 46 3B10 (GLOBAL) PHYSICAL_MAXIMUM 0x103B (4155) 71 | 66 0E00 (GLOBAL) UNIT 0x000E (E=Reserved <-- Error: Measurement system type (E) is reserved) <-- Info: Consider replacing 66 0E00 with 65 0E 72 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field 73 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 74 | 81 42 (MAIN) INPUT 0x00000042 (1 field x 4 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 75 | 75 02 (GLOBAL) REPORT_SIZE 0x02 (2) Number of bits per field 76 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 77 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 2 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 78 | C0 (MAIN) END_COLLECTION Application <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=4155) UNIT(0x0000000E,EXP=0) 79 | */ 80 | 81 | //-------------------------------------------------------------------------------- 82 | // Generic Desktop Page inputReport (Device --> Host) 83 | //-------------------------------------------------------------------------------- 84 | 85 | typedef struct 86 | { 87 | // No REPORT ID byte 88 | // Collection: CA:Joystick 89 | uint8_t GD_JoystickZ; // Usage 0x00010032: Z, Value = 0 to 255 90 | uint8_t GD_JoystickRz; // Usage 0x00010035: Rz, Value = 0 to 255 91 | // Collection: CA:Joystick CP:Pointer 92 | uint16_t GD_JoystickPointerX; // Usage 0x00010030: X, Value = 0 to -1, Physical = Value x --1 93 | uint16_t GD_JoystickPointerY; // Usage 0x00010031: Y, Value = 0 to -1, Physical = Value x --1 94 | // Collection: CA:Joystick CP: 95 | uint16_t GD_JoystickRx; // Usage 0x00010033: Rx, Value = 0 to -1, Physical = Value x --1 96 | uint16_t GD_JoystickRy; // Usage 0x00010034: Ry, Value = 0 to -1, Physical = Value x --1 97 | // Collection: CA:Joystick 98 | uint8_t BTN_JoystickButton1 : 1; // Usage 0x00090001: Button 1 Primary/trigger, Value = 0 to -1, Physical = Value x --1 99 | uint8_t BTN_JoystickButton2 : 1; // Usage 0x00090002: Button 2 Secondary, Value = 0 to -1, Physical = Value x --1 100 | uint8_t BTN_JoystickButton3 : 1; // Usage 0x00090003: Button 3 Tertiary, Value = 0 to -1, Physical = Value x --1 101 | uint8_t BTN_JoystickButton4 : 1; // Usage 0x00090004: Button 4, Value = 0 to -1, Physical = Value x --1 102 | uint8_t BTN_JoystickButton5 : 1; // Usage 0x00090005: Button 5, Value = 0 to -1, Physical = Value x --1 103 | uint8_t BTN_JoystickButton6 : 1; // Usage 0x00090006: Button 6, Value = 0 to -1, Physical = Value x --1 104 | uint8_t BTN_JoystickButton7 : 1; // Usage 0x00090007: Button 7, Value = 0 to -1, Physical = Value x --1 105 | uint8_t BTN_JoystickButton8 : 1; // Usage 0x00090008: Button 8, Value = 0 to -1, Physical = Value x --1 106 | uint8_t BTN_JoystickButton9 : 1; // Usage 0x00090009: Button 9, Value = 0 to -1, Physical = Value x --1 107 | uint8_t BTN_JoystickButton10 : 1; // Usage 0x0009000A: Button 10, Value = 0 to -1, Physical = Value x --1 108 | uint8_t GD_JoystickHatSwitch : 4; // Usage 0x00010039: Hat switch, Value = 1 to 8, Physical = (Value - 1) x 4155 / 7 in 109 | uint8_t : 2; // Pad 110 | } inputReport_t; 111 | 112 | -------------------------------------------------------------------------------- /xbox360/xusb_gamepad1_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xbox360/xusb_gamepad1_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xbox360/xusb_gamepad1_hid_report_descriptor.txt: -------------------------------------------------------------------------------- 1 | 2 | //-------------------------------------------------------------------------------- 3 | // Report descriptor data in hex (length 129 bytes) 4 | //-------------------------------------------------------------------------------- 5 | 6 | 7 | // 05010905 A101A100 09300931 150026FF FF350046 FFFF9502 75108102 C0A10009 8 | // 33093415 0026FFFF 350046FF FF950275 108102C0 05010932 150026FF 00950175 9 | // 08810205 01093515 0026FF00 95017508 81020509 1901290A 950A7501 81020501 10 | // 09391501 25083500 463B1066 0E007504 95018142 75029501 81037508 95028103 11 | // C0 12 | 13 | 14 | //-------------------------------------------------------------------------------- 15 | // Decoded Application Collection 16 | //-------------------------------------------------------------------------------- 17 | 18 | /* 19 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 20 | 09 05 (LOCAL) USAGE 0x00010005 Game Pad (Application Collection) 21 | A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x00010005: Page=Generic Desktop Page, Usage=Game Pad, Type=Application Collection) 22 | A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE <-- Warning: USAGE type should be CP (Physical Collection) 23 | 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 24 | 09 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 25 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 26 | 26 FFFF (GLOBAL) LOGICAL_MAXIMUM 0xFFFF (-1) <-- Info: Consider replacing 26 FFFF with 25 FF 27 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34 28 | 46 FFFF (GLOBAL) PHYSICAL_MAXIMUM 0xFFFF (-1) <-- Info: Consider replacing 46 FFFF with 45 FF 29 | 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields 30 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 31 | 81 02 (MAIN) INPUT 0x00000002 (2 fields x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 32 | C0 (MAIN) END_COLLECTION Physical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=-1) UNIT(0x,EXP=0) 33 | A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE <-- Warning: USAGE type should be CP (Physical Collection) 34 | 09 33 (LOCAL) USAGE 0x00010033 Rx (Dynamic Value) 35 | 09 34 (LOCAL) USAGE 0x00010034 Ry (Dynamic Value) 36 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 37 | 26 FFFF (GLOBAL) LOGICAL_MAXIMUM 0xFFFF (-1) <-- Redundant: LOGICAL_MAXIMUM is already -1 <-- Info: Consider replacing 26 FFFF with 25 FF 38 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34 39 | 46 FFFF (GLOBAL) PHYSICAL_MAXIMUM 0xFFFF (-1) <-- Redundant: PHYSICAL_MAXIMUM is already -1 <-- Info: Consider replacing 46 FFFF with 45 FF 40 | 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields <-- Redundant: REPORT_COUNT is already 2 41 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field <-- Redundant: REPORT_SIZE is already 16 42 | 81 02 (MAIN) INPUT 0x00000002 (2 fields x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 43 | C0 (MAIN) END_COLLECTION Physical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=-1) UNIT(0x,EXP=0) 44 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page <-- Redundant: USAGE_PAGE is already 0x0001 45 | 09 32 (LOCAL) USAGE 0x00010032 Z (Dynamic Value) 46 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 47 | 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255) 48 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 49 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 50 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 51 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page <-- Redundant: USAGE_PAGE is already 0x0001 52 | 09 35 (LOCAL) USAGE 0x00010035 Rz (Dynamic Value) 53 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 54 | 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255) <-- Redundant: LOGICAL_MAXIMUM is already 255 55 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 56 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8 57 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 58 | 05 09 (GLOBAL) USAGE_PAGE 0x0009 Button Page 59 | 19 01 (LOCAL) USAGE_MINIMUM 0x00090001 Button 1 Primary/trigger (Selector, On/Off Control, Momentary Control, or One Shot Control) 60 | 29 0A (LOCAL) USAGE_MAXIMUM 0x0009000A Button 10 (Selector, On/Off Control, Momentary Control, or One Shot Control) 61 | 95 0A (GLOBAL) REPORT_COUNT 0x0A (10) Number of fields 62 | 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 63 | 81 02 (MAIN) INPUT 0x00000002 (10 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: REPORT_SIZE (1) is too small for LOGICAL_MAXIMUM (255) which needs 8 bits. <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 64 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 65 | 09 39 (LOCAL) USAGE 0x00010039 Hat switch (Dynamic Value) 66 | 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) 67 | 25 08 (GLOBAL) LOGICAL_MAXIMUM 0x08 (8) 68 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34 69 | 46 3B10 (GLOBAL) PHYSICAL_MAXIMUM 0x103B (4155) 70 | 66 0E00 (GLOBAL) UNIT 0x000E (E=Reserved <-- Error: Measurement system type (E) is reserved) <-- Info: Consider replacing 66 0E00 with 65 0E 71 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field 72 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 73 | 81 42 (MAIN) INPUT 0x00000042 (1 field x 4 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 74 | 75 02 (GLOBAL) REPORT_SIZE 0x02 (2) Number of bits per field 75 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 76 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 2 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 77 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 78 | 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields 79 | 81 03 (MAIN) INPUT 0x00000003 (2 fields x 8 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 80 | C0 (MAIN) END_COLLECTION Application <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=4155) UNIT(0x0000000E,EXP=0) 81 | */ 82 | 83 | //-------------------------------------------------------------------------------- 84 | // Generic Desktop Page inputReport (Device --> Host) 85 | //-------------------------------------------------------------------------------- 86 | 87 | typedef struct 88 | { 89 | // No REPORT ID byte 90 | // Collection: CA:GamePad CP: 91 | uint16_t GD_GamePadX; // Usage 0x00010030: X, Value = 0 to -1, Physical = Value x --1 92 | uint16_t GD_GamePadY; // Usage 0x00010031: Y, Value = 0 to -1, Physical = Value x --1 93 | uint16_t GD_GamePadRx; // Usage 0x00010033: Rx, Value = 0 to -1, Physical = Value x --1 94 | uint16_t GD_GamePadRy; // Usage 0x00010034: Ry, Value = 0 to -1, Physical = Value x --1 95 | // Collection: CA:GamePad 96 | uint8_t GD_GamePadZ; // Usage 0x00010032: Z, Value = 0 to 255, Physical = Value x -1 / 255 97 | uint8_t GD_GamePadRz; // Usage 0x00010035: Rz, Value = 0 to 255, Physical = Value x -1 / 255 98 | uint8_t BTN_GamePadButton1 : 1; // Usage 0x00090001: Button 1 Primary/trigger, Value = 0 to 255, Physical = Value x -1 / 255 99 | uint8_t BTN_GamePadButton2 : 1; // Usage 0x00090002: Button 2 Secondary, Value = 0 to 255, Physical = Value x -1 / 255 100 | uint8_t BTN_GamePadButton3 : 1; // Usage 0x00090003: Button 3 Tertiary, Value = 0 to 255, Physical = Value x -1 / 255 101 | uint8_t BTN_GamePadButton4 : 1; // Usage 0x00090004: Button 4, Value = 0 to 255, Physical = Value x -1 / 255 102 | uint8_t BTN_GamePadButton5 : 1; // Usage 0x00090005: Button 5, Value = 0 to 255, Physical = Value x -1 / 255 103 | uint8_t BTN_GamePadButton6 : 1; // Usage 0x00090006: Button 6, Value = 0 to 255, Physical = Value x -1 / 255 104 | uint8_t BTN_GamePadButton7 : 1; // Usage 0x00090007: Button 7, Value = 0 to 255, Physical = Value x -1 / 255 105 | uint8_t BTN_GamePadButton8 : 1; // Usage 0x00090008: Button 8, Value = 0 to 255, Physical = Value x -1 / 255 106 | uint8_t BTN_GamePadButton9 : 1; // Usage 0x00090009: Button 9, Value = 0 to 255, Physical = Value x -1 / 255 107 | uint8_t BTN_GamePadButton10 : 1; // Usage 0x0009000A: Button 10, Value = 0 to 255, Physical = Value x -1 / 255 108 | uint8_t GD_GamePadHatSwitch : 4; // Usage 0x00010039: Hat switch, Value = 1 to 8, Physical = (Value - 1) x 4155 / 7 in 109 | uint8_t : 2; // Pad 110 | uint8_t pad_8[2]; // Pad 111 | } inputReport_t; 112 | 113 | -------------------------------------------------------------------------------- /xbox360/xusb_gamepad2_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xbox360/xusb_gamepad2_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xbox360/xusb_gamepad2_hid_report_descriptor.txt: -------------------------------------------------------------------------------- 1 | 2 | //-------------------------------------------------------------------------------- 3 | // Report descriptor data in hex (length 120 bytes) 4 | //-------------------------------------------------------------------------------- 5 | 6 | 7 | // 05010905 A101A100 09300931 150026FF FF350046 FFFF9502 75108102 C0A10009 8 | // 33093415 0026FFFF 350046FF FF950275 108102C0 A1000932 150026FF FF350046 9 | // FFFF9501 75108102 C0050919 01290A95 0A750181 02050109 39150125 08350046 10 | // 3B10660E 00750495 01814275 02950181 03750895 028103C0 11 | 12 | 13 | //-------------------------------------------------------------------------------- 14 | // Decoded Application Collection 15 | //-------------------------------------------------------------------------------- 16 | 17 | /* 18 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 19 | 09 05 (LOCAL) USAGE 0x00010005 Game Pad (Application Collection) 20 | A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x00010005: Page=Generic Desktop Page, Usage=Game Pad, Type=Application Collection) 21 | A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE <-- Warning: USAGE type should be CP (Physical Collection) 22 | 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 23 | 09 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 24 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 25 | 26 FFFF (GLOBAL) LOGICAL_MAXIMUM 0xFFFF (-1) <-- Info: Consider replacing 26 FFFF with 25 FF 26 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34 27 | 46 FFFF (GLOBAL) PHYSICAL_MAXIMUM 0xFFFF (-1) <-- Info: Consider replacing 46 FFFF with 45 FF 28 | 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields 29 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 30 | 81 02 (MAIN) INPUT 0x00000002 (2 fields x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 31 | C0 (MAIN) END_COLLECTION Physical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=-1) UNIT(0x,EXP=0) 32 | A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE <-- Warning: USAGE type should be CP (Physical Collection) 33 | 09 33 (LOCAL) USAGE 0x00010033 Rx (Dynamic Value) 34 | 09 34 (LOCAL) USAGE 0x00010034 Ry (Dynamic Value) 35 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 36 | 26 FFFF (GLOBAL) LOGICAL_MAXIMUM 0xFFFF (-1) <-- Redundant: LOGICAL_MAXIMUM is already -1 <-- Info: Consider replacing 26 FFFF with 25 FF 37 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34 38 | 46 FFFF (GLOBAL) PHYSICAL_MAXIMUM 0xFFFF (-1) <-- Redundant: PHYSICAL_MAXIMUM is already -1 <-- Info: Consider replacing 46 FFFF with 45 FF 39 | 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields <-- Redundant: REPORT_COUNT is already 2 40 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field <-- Redundant: REPORT_SIZE is already 16 41 | 81 02 (MAIN) INPUT 0x00000002 (2 fields x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 42 | C0 (MAIN) END_COLLECTION Physical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=-1) UNIT(0x,EXP=0) 43 | A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE <-- Warning: USAGE type should be CP (Physical Collection) 44 | 09 32 (LOCAL) USAGE 0x00010032 Z (Dynamic Value) 45 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 46 | 26 FFFF (GLOBAL) LOGICAL_MAXIMUM 0xFFFF (-1) <-- Redundant: LOGICAL_MAXIMUM is already -1 <-- Info: Consider replacing 26 FFFF with 25 FF 47 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34 48 | 46 FFFF (GLOBAL) PHYSICAL_MAXIMUM 0xFFFF (-1) <-- Redundant: PHYSICAL_MAXIMUM is already -1 <-- Info: Consider replacing 46 FFFF with 45 FF 49 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 50 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field <-- Redundant: REPORT_SIZE is already 16 51 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 52 | C0 (MAIN) END_COLLECTION Physical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=-1) UNIT(0x,EXP=0) 53 | 05 09 (GLOBAL) USAGE_PAGE 0x0009 Button Page 54 | 19 01 (LOCAL) USAGE_MINIMUM 0x00090001 Button 1 Primary/trigger (Selector, On/Off Control, Momentary Control, or One Shot Control) 55 | 29 0A (LOCAL) USAGE_MAXIMUM 0x0009000A Button 10 (Selector, On/Off Control, Momentary Control, or One Shot Control) 56 | 95 0A (GLOBAL) REPORT_COUNT 0x0A (10) Number of fields 57 | 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 58 | 81 02 (MAIN) INPUT 0x00000002 (10 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 59 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 60 | 09 39 (LOCAL) USAGE 0x00010039 Hat switch (Dynamic Value) 61 | 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) 62 | 25 08 (GLOBAL) LOGICAL_MAXIMUM 0x08 (8) 63 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34 64 | 46 3B10 (GLOBAL) PHYSICAL_MAXIMUM 0x103B (4155) 65 | 66 0E00 (GLOBAL) UNIT 0x000E (E=Reserved <-- Error: Measurement system type (E) is reserved) <-- Info: Consider replacing 66 0E00 with 65 0E 66 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field 67 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 68 | 81 42 (MAIN) INPUT 0x00000042 (1 field x 4 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 69 | 75 02 (GLOBAL) REPORT_SIZE 0x02 (2) Number of bits per field 70 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 71 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 2 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 72 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 73 | 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields 74 | 81 03 (MAIN) INPUT 0x00000003 (2 fields x 8 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 75 | C0 (MAIN) END_COLLECTION Application <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=4155) UNIT(0x0000000E,EXP=0) 76 | */ 77 | 78 | //-------------------------------------------------------------------------------- 79 | // Generic Desktop Page inputReport (Device --> Host) 80 | //-------------------------------------------------------------------------------- 81 | 82 | typedef struct 83 | { 84 | // No REPORT ID byte 85 | // Collection: CA:GamePad CP: 86 | uint16_t GD_GamePadX; // Usage 0x00010030: X, Value = 0 to -1, Physical = Value x --1 87 | uint16_t GD_GamePadY; // Usage 0x00010031: Y, Value = 0 to -1, Physical = Value x --1 88 | uint16_t GD_GamePadRx; // Usage 0x00010033: Rx, Value = 0 to -1, Physical = Value x --1 89 | uint16_t GD_GamePadRy; // Usage 0x00010034: Ry, Value = 0 to -1, Physical = Value x --1 90 | uint16_t GD_GamePadZ; // Usage 0x00010032: Z, Value = 0 to -1, Physical = Value x --1 91 | // Collection: CA:GamePad 92 | uint8_t BTN_GamePadButton1 : 1; // Usage 0x00090001: Button 1 Primary/trigger, Value = 0 to -1, Physical = Value x --1 93 | uint8_t BTN_GamePadButton2 : 1; // Usage 0x00090002: Button 2 Secondary, Value = 0 to -1, Physical = Value x --1 94 | uint8_t BTN_GamePadButton3 : 1; // Usage 0x00090003: Button 3 Tertiary, Value = 0 to -1, Physical = Value x --1 95 | uint8_t BTN_GamePadButton4 : 1; // Usage 0x00090004: Button 4, Value = 0 to -1, Physical = Value x --1 96 | uint8_t BTN_GamePadButton5 : 1; // Usage 0x00090005: Button 5, Value = 0 to -1, Physical = Value x --1 97 | uint8_t BTN_GamePadButton6 : 1; // Usage 0x00090006: Button 6, Value = 0 to -1, Physical = Value x --1 98 | uint8_t BTN_GamePadButton7 : 1; // Usage 0x00090007: Button 7, Value = 0 to -1, Physical = Value x --1 99 | uint8_t BTN_GamePadButton8 : 1; // Usage 0x00090008: Button 8, Value = 0 to -1, Physical = Value x --1 100 | uint8_t BTN_GamePadButton9 : 1; // Usage 0x00090009: Button 9, Value = 0 to -1, Physical = Value x --1 101 | uint8_t BTN_GamePadButton10 : 1; // Usage 0x0009000A: Button 10, Value = 0 to -1, Physical = Value x --1 102 | uint8_t GD_GamePadHatSwitch : 4; // Usage 0x00010039: Hat switch, Value = 1 to 8, Physical = (Value - 1) x 4155 / 7 in 103 | uint8_t : 2; // Pad 104 | uint8_t pad_7[2]; // Pad 105 | } inputReport_t; 106 | 107 | -------------------------------------------------------------------------------- /xbox360/xusb_gamepad_hid_separate_triggers(like DualShock4).reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xbox360/xusb_gamepad_hid_separate_triggers(like DualShock4).reg -------------------------------------------------------------------------------- /xbox360/xusb_gamepad_hid_separate_triggers.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xbox360/xusb_gamepad_hid_separate_triggers.reg -------------------------------------------------------------------------------- /xbox360/xusb_guitar1_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xbox360/xusb_guitar1_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xbox360/xusb_guitar1_hid_report_descriptor.txt: -------------------------------------------------------------------------------- 1 | 2 | //-------------------------------------------------------------------------------- 3 | // Report descriptor data in hex (length 116 bytes) 4 | //-------------------------------------------------------------------------------- 5 | 6 | 7 | // 05010905 A101A100 09351500 26FFFF35 0046FFFF 95017510 8102C005 01093615 8 | // 0026FFFF 95017510 81020501 09371500 26FF0095 01750881 02750895 01810305 9 | // 09190129 0A950A75 01810275 06950181 03050109 39150125 08350046 3B10660E 10 | // 00750495 01814275 04950181 03750895 018103C0 11 | 12 | 13 | //-------------------------------------------------------------------------------- 14 | // Decoded Application Collection 15 | //-------------------------------------------------------------------------------- 16 | 17 | /* 18 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 19 | 09 05 (LOCAL) USAGE 0x00010005 Game Pad (Application Collection) 20 | A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x00010005: Page=Generic Desktop Page, Usage=Game Pad, Type=Application Collection) 21 | A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE <-- Warning: USAGE type should be CP (Physical Collection) 22 | 09 35 (LOCAL) USAGE 0x00010035 Rz (Dynamic Value) 23 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 24 | 26 FFFF (GLOBAL) LOGICAL_MAXIMUM 0xFFFF (-1) <-- Info: Consider replacing 26 FFFF with 25 FF 25 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34 26 | 46 FFFF (GLOBAL) PHYSICAL_MAXIMUM 0xFFFF (-1) <-- Info: Consider replacing 46 FFFF with 45 FF 27 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 28 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 29 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 30 | C0 (MAIN) END_COLLECTION Physical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=-1) UNIT(0x,EXP=0) 31 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page <-- Redundant: USAGE_PAGE is already 0x0001 32 | 09 36 (LOCAL) USAGE 0x00010036 Slider (Dynamic Value) 33 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 34 | 26 FFFF (GLOBAL) LOGICAL_MAXIMUM 0xFFFF (-1) <-- Redundant: LOGICAL_MAXIMUM is already -1 <-- Info: Consider replacing 26 FFFF with 25 FF 35 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 36 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field <-- Redundant: REPORT_SIZE is already 16 37 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 38 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page <-- Redundant: USAGE_PAGE is already 0x0001 39 | 09 37 (LOCAL) USAGE 0x00010037 Dial (Dynamic Value) 40 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 41 | 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255) 42 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 43 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 44 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 45 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8 46 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 47 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 8 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 48 | 05 09 (GLOBAL) USAGE_PAGE 0x0009 Button Page 49 | 19 01 (LOCAL) USAGE_MINIMUM 0x00090001 Button 1 Primary/trigger (Selector, On/Off Control, Momentary Control, or One Shot Control) 50 | 29 0A (LOCAL) USAGE_MAXIMUM 0x0009000A Button 10 (Selector, On/Off Control, Momentary Control, or One Shot Control) 51 | 95 0A (GLOBAL) REPORT_COUNT 0x0A (10) Number of fields 52 | 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 53 | 81 02 (MAIN) INPUT 0x00000002 (10 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: REPORT_SIZE (1) is too small for LOGICAL_MAXIMUM (255) which needs 8 bits. <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 54 | 75 06 (GLOBAL) REPORT_SIZE 0x06 (6) Number of bits per field 55 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 56 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 6 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 57 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 58 | 09 39 (LOCAL) USAGE 0x00010039 Hat switch (Dynamic Value) 59 | 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) 60 | 25 08 (GLOBAL) LOGICAL_MAXIMUM 0x08 (8) 61 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34 62 | 46 3B10 (GLOBAL) PHYSICAL_MAXIMUM 0x103B (4155) 63 | 66 0E00 (GLOBAL) UNIT 0x000E (E=Reserved <-- Error: Measurement system type (E) is reserved) <-- Info: Consider replacing 66 0E00 with 65 0E 64 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field 65 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 66 | 81 42 (MAIN) INPUT 0x00000042 (1 field x 4 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 67 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field <-- Redundant: REPORT_SIZE is already 4 68 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 69 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 4 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 70 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 71 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 72 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 8 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 73 | C0 (MAIN) END_COLLECTION Application <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=4155) UNIT(0x0000000E,EXP=0) 74 | */ 75 | 76 | //-------------------------------------------------------------------------------- 77 | // Generic Desktop Page inputReport (Device --> Host) 78 | //-------------------------------------------------------------------------------- 79 | 80 | typedef struct 81 | { 82 | // No REPORT ID byte 83 | // Collection: CA:GamePad CP: 84 | uint16_t GD_GamePadRz; // Usage 0x00010035: Rz, Value = 0 to -1, Physical = Value x --1 85 | // Collection: CA:GamePad 86 | uint16_t GD_GamePadSlider; // Usage 0x00010036: Slider, Value = 0 to -1, Physical = Value x --1 87 | uint8_t GD_GamePadDial; // Usage 0x00010037: Dial, Value = 0 to 255, Physical = Value x -1 / 255 88 | uint8_t pad_4; // Pad 89 | uint8_t BTN_GamePadButton1 : 1; // Usage 0x00090001: Button 1 Primary/trigger, Value = 0 to 255, Physical = Value x -1 / 255 90 | uint8_t BTN_GamePadButton2 : 1; // Usage 0x00090002: Button 2 Secondary, Value = 0 to 255, Physical = Value x -1 / 255 91 | uint8_t BTN_GamePadButton3 : 1; // Usage 0x00090003: Button 3 Tertiary, Value = 0 to 255, Physical = Value x -1 / 255 92 | uint8_t BTN_GamePadButton4 : 1; // Usage 0x00090004: Button 4, Value = 0 to 255, Physical = Value x -1 / 255 93 | uint8_t BTN_GamePadButton5 : 1; // Usage 0x00090005: Button 5, Value = 0 to 255, Physical = Value x -1 / 255 94 | uint8_t BTN_GamePadButton6 : 1; // Usage 0x00090006: Button 6, Value = 0 to 255, Physical = Value x -1 / 255 95 | uint8_t BTN_GamePadButton7 : 1; // Usage 0x00090007: Button 7, Value = 0 to 255, Physical = Value x -1 / 255 96 | uint8_t BTN_GamePadButton8 : 1; // Usage 0x00090008: Button 8, Value = 0 to 255, Physical = Value x -1 / 255 97 | uint8_t BTN_GamePadButton9 : 1; // Usage 0x00090009: Button 9, Value = 0 to 255, Physical = Value x -1 / 255 98 | uint8_t BTN_GamePadButton10 : 1; // Usage 0x0009000A: Button 10, Value = 0 to 255, Physical = Value x -1 / 255 99 | uint8_t : 6; // Pad 100 | uint8_t GD_GamePadHatSwitch : 4; // Usage 0x00010039: Hat switch, Value = 1 to 8, Physical = (Value - 1) x 4155 / 7 in 101 | uint8_t : 4; // Pad 102 | uint8_t pad_9; // Pad 103 | } inputReport_t; 104 | 105 | -------------------------------------------------------------------------------- /xbox360/xusb_guitar2_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xbox360/xusb_guitar2_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xbox360/xusb_guitar2_hid_report_descriptor.txt: -------------------------------------------------------------------------------- 1 | 2 | //-------------------------------------------------------------------------------- 3 | // Report descriptor data in hex (length 101 bytes) 4 | //-------------------------------------------------------------------------------- 5 | 6 | 7 | // 05010905 A101A100 09351500 26FFFF35 0046FFFF 95017510 8102C005 01093615 8 | // 0026FFFF 95017510 81027510 95018103 05091901 290A950A 75018102 75069501 9 | // 81030501 09391501 25083500 463B1066 0E007504 95018142 75049501 81037508 10 | // 95018103 C0 11 | 12 | 13 | //-------------------------------------------------------------------------------- 14 | // Decoded Application Collection 15 | //-------------------------------------------------------------------------------- 16 | 17 | /* 18 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 19 | 09 05 (LOCAL) USAGE 0x00010005 Game Pad (Application Collection) 20 | A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x00010005: Page=Generic Desktop Page, Usage=Game Pad, Type=Application Collection) 21 | A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE <-- Warning: USAGE type should be CP (Physical Collection) 22 | 09 35 (LOCAL) USAGE 0x00010035 Rz (Dynamic Value) 23 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 24 | 26 FFFF (GLOBAL) LOGICAL_MAXIMUM 0xFFFF (-1) <-- Info: Consider replacing 26 FFFF with 25 FF 25 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34 26 | 46 FFFF (GLOBAL) PHYSICAL_MAXIMUM 0xFFFF (-1) <-- Info: Consider replacing 46 FFFF with 45 FF 27 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 28 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 29 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 30 | C0 (MAIN) END_COLLECTION Physical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=-1) UNIT(0x,EXP=0) 31 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page <-- Redundant: USAGE_PAGE is already 0x0001 32 | 09 36 (LOCAL) USAGE 0x00010036 Slider (Dynamic Value) 33 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 34 | 26 FFFF (GLOBAL) LOGICAL_MAXIMUM 0xFFFF (-1) <-- Redundant: LOGICAL_MAXIMUM is already -1 <-- Info: Consider replacing 26 FFFF with 25 FF 35 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 36 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field <-- Redundant: REPORT_SIZE is already 16 37 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 38 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field <-- Redundant: REPORT_SIZE is already 16 39 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 40 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 16 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 41 | 05 09 (GLOBAL) USAGE_PAGE 0x0009 Button Page 42 | 19 01 (LOCAL) USAGE_MINIMUM 0x00090001 Button 1 Primary/trigger (Selector, On/Off Control, Momentary Control, or One Shot Control) 43 | 29 0A (LOCAL) USAGE_MAXIMUM 0x0009000A Button 10 (Selector, On/Off Control, Momentary Control, or One Shot Control) 44 | 95 0A (GLOBAL) REPORT_COUNT 0x0A (10) Number of fields 45 | 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 46 | 81 02 (MAIN) INPUT 0x00000002 (10 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 47 | 75 06 (GLOBAL) REPORT_SIZE 0x06 (6) Number of bits per field 48 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 49 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 6 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 50 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 51 | 09 39 (LOCAL) USAGE 0x00010039 Hat switch (Dynamic Value) 52 | 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) 53 | 25 08 (GLOBAL) LOGICAL_MAXIMUM 0x08 (8) 54 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34 55 | 46 3B10 (GLOBAL) PHYSICAL_MAXIMUM 0x103B (4155) 56 | 66 0E00 (GLOBAL) UNIT 0x000E (E=Reserved <-- Error: Measurement system type (E) is reserved) <-- Info: Consider replacing 66 0E00 with 65 0E 57 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field 58 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 59 | 81 42 (MAIN) INPUT 0x00000042 (1 field x 4 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 60 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field <-- Redundant: REPORT_SIZE is already 4 61 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 62 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 4 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 63 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 64 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 65 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 8 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 66 | C0 (MAIN) END_COLLECTION Application <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=4155) UNIT(0x0000000E,EXP=0) 67 | */ 68 | 69 | //-------------------------------------------------------------------------------- 70 | // Generic Desktop Page inputReport (Device --> Host) 71 | //-------------------------------------------------------------------------------- 72 | 73 | typedef struct 74 | { 75 | // No REPORT ID byte 76 | // Collection: CA:GamePad CP: 77 | uint16_t GD_GamePadRz; // Usage 0x00010035: Rz, Value = 0 to -1, Physical = Value x --1 78 | // Collection: CA:GamePad 79 | uint16_t GD_GamePadSlider; // Usage 0x00010036: Slider, Value = 0 to -1, Physical = Value x --1 80 | uint16_t pad_3; // Pad 81 | uint8_t BTN_GamePadButton1 : 1; // Usage 0x00090001: Button 1 Primary/trigger, Value = 0 to -1, Physical = Value x --1 82 | uint8_t BTN_GamePadButton2 : 1; // Usage 0x00090002: Button 2 Secondary, Value = 0 to -1, Physical = Value x --1 83 | uint8_t BTN_GamePadButton3 : 1; // Usage 0x00090003: Button 3 Tertiary, Value = 0 to -1, Physical = Value x --1 84 | uint8_t BTN_GamePadButton4 : 1; // Usage 0x00090004: Button 4, Value = 0 to -1, Physical = Value x --1 85 | uint8_t BTN_GamePadButton5 : 1; // Usage 0x00090005: Button 5, Value = 0 to -1, Physical = Value x --1 86 | uint8_t BTN_GamePadButton6 : 1; // Usage 0x00090006: Button 6, Value = 0 to -1, Physical = Value x --1 87 | uint8_t BTN_GamePadButton7 : 1; // Usage 0x00090007: Button 7, Value = 0 to -1, Physical = Value x --1 88 | uint8_t BTN_GamePadButton8 : 1; // Usage 0x00090008: Button 8, Value = 0 to -1, Physical = Value x --1 89 | uint8_t BTN_GamePadButton9 : 1; // Usage 0x00090009: Button 9, Value = 0 to -1, Physical = Value x --1 90 | uint8_t BTN_GamePadButton10 : 1; // Usage 0x0009000A: Button 10, Value = 0 to -1, Physical = Value x --1 91 | uint8_t : 6; // Pad 92 | uint8_t GD_GamePadHatSwitch : 4; // Usage 0x00010039: Hat switch, Value = 1 to 8, Physical = (Value - 1) x 4155 / 7 in 93 | uint8_t : 4; // Pad 94 | uint8_t pad_8; // Pad 95 | } inputReport_t; 96 | 97 | -------------------------------------------------------------------------------- /xbox360/xusb_wheel1_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xbox360/xusb_wheel1_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xbox360/xusb_wheel1_hid_report_descriptor.txt: -------------------------------------------------------------------------------- 1 | 2 | //-------------------------------------------------------------------------------- 3 | // Report descriptor data in hex (length 110 bytes) 4 | //-------------------------------------------------------------------------------- 5 | 6 | 7 | // 05010905 A101A100 09301500 26FFFF35 0046FFFF 95017510 8102C005 01093215 8 | // 0026FF00 95017508 81020502 09BB1500 26FF0095 01750881 02050919 01290A95 9 | // 0A750181 02750695 01810305 01093915 01250835 00463B10 660E0075 04950181 10 | // 42750495 01810375 08950181 03C0 11 | 12 | 13 | //-------------------------------------------------------------------------------- 14 | // Decoded Application Collection 15 | //-------------------------------------------------------------------------------- 16 | 17 | /* 18 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 19 | 09 05 (LOCAL) USAGE 0x00010005 Game Pad (Application Collection) 20 | A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x00010005: Page=Generic Desktop Page, Usage=Game Pad, Type=Application Collection) 21 | A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE <-- Warning: USAGE type should be CP (Physical Collection) 22 | 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 23 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 24 | 26 FFFF (GLOBAL) LOGICAL_MAXIMUM 0xFFFF (-1) <-- Info: Consider replacing 26 FFFF with 25 FF 25 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34 26 | 46 FFFF (GLOBAL) PHYSICAL_MAXIMUM 0xFFFF (-1) <-- Info: Consider replacing 46 FFFF with 45 FF 27 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 28 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 29 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 30 | C0 (MAIN) END_COLLECTION Physical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=-1) UNIT(0x,EXP=0) 31 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page <-- Redundant: USAGE_PAGE is already 0x0001 32 | 09 32 (LOCAL) USAGE 0x00010032 Z (Dynamic Value) 33 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 34 | 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255) 35 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 36 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 37 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 38 | 05 02 (GLOBAL) USAGE_PAGE 0x0002 Simulation Controls Page 39 | 09 BB (LOCAL) USAGE 0x000200BB Throttle (Dynamic Value) 40 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 41 | 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255) <-- Redundant: LOGICAL_MAXIMUM is already 255 42 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 43 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8 44 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 45 | 05 09 (GLOBAL) USAGE_PAGE 0x0009 Button Page 46 | 19 01 (LOCAL) USAGE_MINIMUM 0x00090001 Button 1 Primary/trigger (Selector, On/Off Control, Momentary Control, or One Shot Control) 47 | 29 0A (LOCAL) USAGE_MAXIMUM 0x0009000A Button 10 (Selector, On/Off Control, Momentary Control, or One Shot Control) 48 | 95 0A (GLOBAL) REPORT_COUNT 0x0A (10) Number of fields 49 | 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 50 | 81 02 (MAIN) INPUT 0x00000002 (10 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: REPORT_SIZE (1) is too small for LOGICAL_MAXIMUM (255) which needs 8 bits. <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 51 | 75 06 (GLOBAL) REPORT_SIZE 0x06 (6) Number of bits per field 52 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 53 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 6 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 54 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 55 | 09 39 (LOCAL) USAGE 0x00010039 Hat switch (Dynamic Value) 56 | 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) 57 | 25 08 (GLOBAL) LOGICAL_MAXIMUM 0x08 (8) 58 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34 59 | 46 3B10 (GLOBAL) PHYSICAL_MAXIMUM 0x103B (4155) 60 | 66 0E00 (GLOBAL) UNIT 0x000E (E=Reserved <-- Error: Measurement system type (E) is reserved) <-- Info: Consider replacing 66 0E00 with 65 0E 61 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field 62 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 63 | 81 42 (MAIN) INPUT 0x00000042 (1 field x 4 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 64 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field <-- Redundant: REPORT_SIZE is already 4 65 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 66 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 4 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 67 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 68 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 69 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 8 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 70 | C0 (MAIN) END_COLLECTION Application <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=4155) UNIT(0x0000000E,EXP=0) 71 | */ 72 | 73 | //-------------------------------------------------------------------------------- 74 | // Generic Desktop Page inputReport (Device --> Host) 75 | //-------------------------------------------------------------------------------- 76 | 77 | typedef struct 78 | { 79 | // No REPORT ID byte 80 | // Collection: CA:GamePad CP: 81 | uint16_t GD_GamePadX; // Usage 0x00010030: X, Value = 0 to -1, Physical = Value x --1 82 | // Collection: CA:GamePad 83 | uint8_t GD_GamePadZ; // Usage 0x00010032: Z, Value = 0 to 255, Physical = Value x -1 / 255 84 | uint8_t SIM_GamePadThrottle; // Usage 0x000200BB: Throttle, Value = 0 to 255, Physical = Value x -1 / 255 85 | uint8_t BTN_GamePadButton1 : 1; // Usage 0x00090001: Button 1 Primary/trigger, Value = 0 to 255, Physical = Value x -1 / 255 86 | uint8_t BTN_GamePadButton2 : 1; // Usage 0x00090002: Button 2 Secondary, Value = 0 to 255, Physical = Value x -1 / 255 87 | uint8_t BTN_GamePadButton3 : 1; // Usage 0x00090003: Button 3 Tertiary, Value = 0 to 255, Physical = Value x -1 / 255 88 | uint8_t BTN_GamePadButton4 : 1; // Usage 0x00090004: Button 4, Value = 0 to 255, Physical = Value x -1 / 255 89 | uint8_t BTN_GamePadButton5 : 1; // Usage 0x00090005: Button 5, Value = 0 to 255, Physical = Value x -1 / 255 90 | uint8_t BTN_GamePadButton6 : 1; // Usage 0x00090006: Button 6, Value = 0 to 255, Physical = Value x -1 / 255 91 | uint8_t BTN_GamePadButton7 : 1; // Usage 0x00090007: Button 7, Value = 0 to 255, Physical = Value x -1 / 255 92 | uint8_t BTN_GamePadButton8 : 1; // Usage 0x00090008: Button 8, Value = 0 to 255, Physical = Value x -1 / 255 93 | uint8_t BTN_GamePadButton9 : 1; // Usage 0x00090009: Button 9, Value = 0 to 255, Physical = Value x -1 / 255 94 | uint8_t BTN_GamePadButton10 : 1; // Usage 0x0009000A: Button 10, Value = 0 to 255, Physical = Value x -1 / 255 95 | uint8_t : 6; // Pad 96 | uint8_t GD_GamePadHatSwitch : 4; // Usage 0x00010039: Hat switch, Value = 1 to 8, Physical = (Value - 1) x 4155 / 7 in 97 | uint8_t : 4; // Pad 98 | uint8_t pad_8; // Pad 99 | } inputReport_t; 100 | 101 | -------------------------------------------------------------------------------- /xbox360/xusb_wheel2_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xbox360/xusb_wheel2_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xbox360/xusb_wheel2_hid_report_descriptor.txt: -------------------------------------------------------------------------------- 1 | 2 | //-------------------------------------------------------------------------------- 3 | // Report descriptor data in hex (length 101 bytes) 4 | //-------------------------------------------------------------------------------- 5 | 6 | 7 | // 05010905 A101A100 09301500 26FFFF35 0046FFFF 95017510 8102C0A1 00093215 8 | // 0026FFFF 350046FF FF950175 108102C0 05091901 290A950A 75018102 75069501 9 | // 81030501 09391501 25083500 463B1066 0E007504 95018142 75049501 81037508 10 | // 95018103 C0 11 | 12 | 13 | //-------------------------------------------------------------------------------- 14 | // Decoded Application Collection 15 | //-------------------------------------------------------------------------------- 16 | 17 | /* 18 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 19 | 09 05 (LOCAL) USAGE 0x00010005 Game Pad (Application Collection) 20 | A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x00010005: Page=Generic Desktop Page, Usage=Game Pad, Type=Application Collection) 21 | A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE <-- Warning: USAGE type should be CP (Physical Collection) 22 | 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 23 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 24 | 26 FFFF (GLOBAL) LOGICAL_MAXIMUM 0xFFFF (-1) <-- Info: Consider replacing 26 FFFF with 25 FF 25 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34 26 | 46 FFFF (GLOBAL) PHYSICAL_MAXIMUM 0xFFFF (-1) <-- Info: Consider replacing 46 FFFF with 45 FF 27 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 28 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 29 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 30 | C0 (MAIN) END_COLLECTION Physical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=-1) UNIT(0x,EXP=0) 31 | A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE <-- Warning: USAGE type should be CP (Physical Collection) 32 | 09 32 (LOCAL) USAGE 0x00010032 Z (Dynamic Value) 33 | 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 34 | 26 FFFF (GLOBAL) LOGICAL_MAXIMUM 0xFFFF (-1) <-- Redundant: LOGICAL_MAXIMUM is already -1 <-- Info: Consider replacing 26 FFFF with 25 FF 35 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34 36 | 46 FFFF (GLOBAL) PHYSICAL_MAXIMUM 0xFFFF (-1) <-- Redundant: PHYSICAL_MAXIMUM is already -1 <-- Info: Consider replacing 46 FFFF with 45 FF 37 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 38 | 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field <-- Redundant: REPORT_SIZE is already 16 39 | 81 02 (MAIN) INPUT 0x00000002 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 40 | C0 (MAIN) END_COLLECTION Physical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=-1) UNIT(0x,EXP=0) 41 | 05 09 (GLOBAL) USAGE_PAGE 0x0009 Button Page 42 | 19 01 (LOCAL) USAGE_MINIMUM 0x00090001 Button 1 Primary/trigger (Selector, On/Off Control, Momentary Control, or One Shot Control) 43 | 29 0A (LOCAL) USAGE_MAXIMUM 0x0009000A Button 10 (Selector, On/Off Control, Momentary Control, or One Shot Control) 44 | 95 0A (GLOBAL) REPORT_COUNT 0x0A (10) Number of fields 45 | 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 46 | 81 02 (MAIN) INPUT 0x00000002 (10 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) <-- Error: PHYSICAL_MAXIMUM (-1) is less than PHYSICAL_MINIMUM (0) 47 | 75 06 (GLOBAL) REPORT_SIZE 0x06 (6) Number of bits per field 48 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 49 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 6 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 50 | 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 51 | 09 39 (LOCAL) USAGE 0x00010039 Hat switch (Dynamic Value) 52 | 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) 53 | 25 08 (GLOBAL) LOGICAL_MAXIMUM 0x08 (8) 54 | 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34 55 | 46 3B10 (GLOBAL) PHYSICAL_MAXIMUM 0x103B (4155) 56 | 66 0E00 (GLOBAL) UNIT 0x000E (E=Reserved <-- Error: Measurement system type (E) is reserved) <-- Info: Consider replacing 66 0E00 with 65 0E 57 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field 58 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 59 | 81 42 (MAIN) INPUT 0x00000042 (1 field x 4 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 60 | 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field <-- Redundant: REPORT_SIZE is already 4 61 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 62 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 4 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 63 | 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 64 | 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 65 | 81 03 (MAIN) INPUT 0x00000003 (1 field x 8 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 66 | C0 (MAIN) END_COLLECTION Application <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=4155) UNIT(0x0000000E,EXP=0) 67 | */ 68 | 69 | //-------------------------------------------------------------------------------- 70 | // Generic Desktop Page inputReport (Device --> Host) 71 | //-------------------------------------------------------------------------------- 72 | 73 | typedef struct 74 | { 75 | // No REPORT ID byte 76 | // Collection: CA:GamePad CP: 77 | uint16_t GD_GamePadX; // Usage 0x00010030: X, Value = 0 to -1, Physical = Value x --1 78 | uint16_t GD_GamePadZ; // Usage 0x00010032: Z, Value = 0 to -1, Physical = Value x --1 79 | // Collection: CA:GamePad 80 | uint8_t BTN_GamePadButton1 : 1; // Usage 0x00090001: Button 1 Primary/trigger, Value = 0 to -1, Physical = Value x --1 81 | uint8_t BTN_GamePadButton2 : 1; // Usage 0x00090002: Button 2 Secondary, Value = 0 to -1, Physical = Value x --1 82 | uint8_t BTN_GamePadButton3 : 1; // Usage 0x00090003: Button 3 Tertiary, Value = 0 to -1, Physical = Value x --1 83 | uint8_t BTN_GamePadButton4 : 1; // Usage 0x00090004: Button 4, Value = 0 to -1, Physical = Value x --1 84 | uint8_t BTN_GamePadButton5 : 1; // Usage 0x00090005: Button 5, Value = 0 to -1, Physical = Value x --1 85 | uint8_t BTN_GamePadButton6 : 1; // Usage 0x00090006: Button 6, Value = 0 to -1, Physical = Value x --1 86 | uint8_t BTN_GamePadButton7 : 1; // Usage 0x00090007: Button 7, Value = 0 to -1, Physical = Value x --1 87 | uint8_t BTN_GamePadButton8 : 1; // Usage 0x00090008: Button 8, Value = 0 to -1, Physical = Value x --1 88 | uint8_t BTN_GamePadButton9 : 1; // Usage 0x00090009: Button 9, Value = 0 to -1, Physical = Value x --1 89 | uint8_t BTN_GamePadButton10 : 1; // Usage 0x0009000A: Button 10, Value = 0 to -1, Physical = Value x --1 90 | uint8_t : 6; // Pad 91 | uint8_t GD_GamePadHatSwitch : 4; // Usage 0x00010039: Hat switch, Value = 1 to 8, Physical = (Value - 1) x 4155 / 7 in 92 | uint8_t : 4; // Pad 93 | uint8_t pad_7; // Pad 94 | } inputReport_t; 95 | 96 | -------------------------------------------------------------------------------- /xboxone/DescriptorDump_Adapter (Xbox Wireless Adapter for Windows).txt: -------------------------------------------------------------------------------- 1 | Information for device XBOX ACC (VID=0x045E PID=0x02FE): 2 | 3 | ------------------------------ 4 | Connection Information: 5 | ------------------------------ 6 | Device current bus speed: HighSpeed 7 | Device supports USB 1.1 specification 8 | Device supports USB 2.0 specification 9 | Device address: 0x000C 10 | Current configuration value: 0x01 11 | Number of open pipes: 8 12 | 13 | 14 | ------------------------------ 15 | Device Descriptor: 16 | ------------------------------ 17 | 0x12 bLength 18 | 0x01 bDescriptorType 19 | 0x0201 bcdUSB 20 | 0x00 bDeviceClass 21 | 0x00 bDeviceSubClass 22 | 0x00 bDeviceProtocol 23 | 0x40 bMaxPacketSize0 (64 bytes) 24 | 0x045E idVendor 25 | 0x02FE idProduct 26 | 0x0100 bcdDevice 27 | 0x01 iManufacturer "Microsoft Inc." 28 | 0x02 iProduct "XBOX ACC" 29 | 0x03 iSerialNumber "390422" 30 | 0x01 bNumConfigurations 31 | 32 | Device Qualifier Descriptor: 33 | ------------------------------ 34 | 0x0A bLength 35 | 0x06 bDescriptorType 36 | 0x0201 bcdUSB 37 | 0x00 bDeviceClass 38 | 0x00 bDeviceSubClass 39 | 0x00 bDeviceProtocol 40 | 0x40 bMaxPacketSize0 (64 bytes) 41 | 0x01 bNumConfigurations 42 | 0x00 bReserved 43 | 44 | 45 | ------------------------- 46 | Configuration Descriptor: 47 | ------------------------- 48 | 0x09 bLength 49 | 0x02 bDescriptorType 50 | 0x004A wTotalLength (74 bytes) 51 | 0x01 bNumInterfaces 52 | 0x01 bConfigurationValue 53 | 0x02 iConfiguration "XBOX ACC" 54 | 0xA0 bmAttributes (Bus-powered Device, Remote-Wakeup) 55 | 0xFA bMaxPower (500 mA) 56 | 57 | Interface Descriptor: 58 | ------------------------------ 59 | 0x09 bLength 60 | 0x04 bDescriptorType 61 | 0x00 bInterfaceNumber 62 | 0x00 bAlternateSetting 63 | 0x08 bNumEndPoints 64 | 0xFF bInterfaceClass (Vendor specific) 65 | 0xFF bInterfaceSubClass 66 | 0xFF bInterfaceProtocol 67 | 0x02 iInterface "XBOX ACC" 68 | 69 | Endpoint Descriptor: 70 | ------------------------------ 71 | 0x07 bLength 72 | 0x05 bDescriptorType 73 | 0x84 bEndpointAddress (IN endpoint 4) 74 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 75 | 0x0200 wMaxPacketSize (512 bytes) 76 | 0x00 bInterval 77 | 78 | Endpoint Descriptor: 79 | ------------------------------ 80 | 0x07 bLength 81 | 0x05 bDescriptorType 82 | 0x85 bEndpointAddress (IN endpoint 5) 83 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 84 | 0x0200 wMaxPacketSize (512 bytes) 85 | 0x00 bInterval 86 | 87 | Endpoint Descriptor: 88 | ------------------------------ 89 | 0x07 bLength 90 | 0x05 bDescriptorType 91 | 0x08 bEndpointAddress (OUT endpoint 8) 92 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 93 | 0x0200 wMaxPacketSize (512 bytes) 94 | 0x00 bInterval 95 | 96 | Endpoint Descriptor: 97 | ------------------------------ 98 | 0x07 bLength 99 | 0x05 bDescriptorType 100 | 0x04 bEndpointAddress (OUT endpoint 4) 101 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 102 | 0x0200 wMaxPacketSize (512 bytes) 103 | 0x00 bInterval 104 | 105 | Endpoint Descriptor: 106 | ------------------------------ 107 | 0x07 bLength 108 | 0x05 bDescriptorType 109 | 0x05 bEndpointAddress (OUT endpoint 5) 110 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 111 | 0x0200 wMaxPacketSize (512 bytes) 112 | 0x00 bInterval 113 | 114 | Endpoint Descriptor: 115 | ------------------------------ 116 | 0x07 bLength 117 | 0x05 bDescriptorType 118 | 0x06 bEndpointAddress (OUT endpoint 6) 119 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 120 | 0x0200 wMaxPacketSize (512 bytes) 121 | 0x00 bInterval 122 | 123 | Endpoint Descriptor: 124 | ------------------------------ 125 | 0x07 bLength 126 | 0x05 bDescriptorType 127 | 0x07 bEndpointAddress (OUT endpoint 7) 128 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 129 | 0x0200 wMaxPacketSize (512 bytes) 130 | 0x00 bInterval 131 | 132 | Endpoint Descriptor: 133 | ------------------------------ 134 | 0x07 bLength 135 | 0x05 bDescriptorType 136 | 0x09 bEndpointAddress (OUT endpoint 9) 137 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 138 | 0x0200 wMaxPacketSize (512 bytes) 139 | 0x00 bInterval 140 | 141 | 142 | ------------------------------------- 143 | Other Speed Configuration Descriptor: 144 | ------------------------------------- 145 | 0x09 bLength 146 | 0x07 bDescriptorType 147 | 0x004A wTotalLength (74 bytes) 148 | 0x01 bNumInterfaces 149 | 0x01 bConfigurationValue 150 | 0x02 iConfiguration "XBOX ACC" 151 | 0xA0 bmAttributes (Bus-powered Device, Remote-Wakeup) 152 | 0xFA bMaxPower (500 mA) 153 | 154 | Interface Descriptor: 155 | ------------------------------ 156 | 0x09 bLength 157 | 0x04 bDescriptorType 158 | 0x00 bInterfaceNumber 159 | 0x00 bAlternateSetting 160 | 0x08 bNumEndPoints 161 | 0xFF bInterfaceClass (Vendor specific) 162 | 0xFF bInterfaceSubClass 163 | 0xFF bInterfaceProtocol 164 | 0x02 iInterface "XBOX ACC" 165 | 166 | Endpoint Descriptor: 167 | ------------------------------ 168 | 0x07 bLength 169 | 0x05 bDescriptorType 170 | 0x84 bEndpointAddress (IN endpoint 4) 171 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 172 | 0x0040 wMaxPacketSize (64 bytes) 173 | 0x00 bInterval 174 | 175 | Endpoint Descriptor: 176 | ------------------------------ 177 | 0x07 bLength 178 | 0x05 bDescriptorType 179 | 0x85 bEndpointAddress (IN endpoint 5) 180 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 181 | 0x0040 wMaxPacketSize (64 bytes) 182 | 0x00 bInterval 183 | 184 | Endpoint Descriptor: 185 | ------------------------------ 186 | 0x07 bLength 187 | 0x05 bDescriptorType 188 | 0x08 bEndpointAddress (OUT endpoint 8) 189 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 190 | 0x0040 wMaxPacketSize (64 bytes) 191 | 0x00 bInterval 192 | 193 | Endpoint Descriptor: 194 | ------------------------------ 195 | 0x07 bLength 196 | 0x05 bDescriptorType 197 | 0x04 bEndpointAddress (OUT endpoint 4) 198 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 199 | 0x0040 wMaxPacketSize (64 bytes) 200 | 0x00 bInterval 201 | 202 | Endpoint Descriptor: 203 | ------------------------------ 204 | 0x07 bLength 205 | 0x05 bDescriptorType 206 | 0x05 bEndpointAddress (OUT endpoint 5) 207 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 208 | 0x0040 wMaxPacketSize (64 bytes) 209 | 0x00 bInterval 210 | 211 | Endpoint Descriptor: 212 | ------------------------------ 213 | 0x07 bLength 214 | 0x05 bDescriptorType 215 | 0x06 bEndpointAddress (OUT endpoint 6) 216 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 217 | 0x0040 wMaxPacketSize (64 bytes) 218 | 0x00 bInterval 219 | 220 | Endpoint Descriptor: 221 | ------------------------------ 222 | 0x07 bLength 223 | 0x05 bDescriptorType 224 | 0x07 bEndpointAddress (OUT endpoint 7) 225 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 226 | 0x0040 wMaxPacketSize (64 bytes) 227 | 0x00 bInterval 228 | 229 | Endpoint Descriptor: 230 | ------------------------------ 231 | 0x07 bLength 232 | 0x05 bDescriptorType 233 | 0x09 bEndpointAddress (OUT endpoint 9) 234 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 235 | 0x0040 wMaxPacketSize (64 bytes) 236 | 0x00 bInterval 237 | 238 | Microsoft OS Descriptor is not available. Error code: 0x0000001F 239 | 240 | 241 | -------------------------------- 242 | String Descriptor Table 243 | -------------------------------- 244 | Index LANGID String 245 | 0x00 0x0000 0x0409 246 | 0x01 0x0409 "Microsoft Inc." 247 | 0x02 0x0409 "XBOX ACC" 248 | 0x03 0x0409 "390422" 249 | 250 | ------------------------------ 251 | 252 | Connection path for device: 253 | USB xHCI Compliant Host Controller 254 | Root Hub 255 | XBOX ACC (VID=0x045E PID=0x02FE) Port: 8 256 | 257 | Running on: Windows 10 or greater (Build Version 19044) 258 | 259 | Brought to you by TDD v2.17.0, Feb 23 2021, 14:04:02 260 | -------------------------------------------------------------------------------- /xboxone/DescriptorDump_Controller (Xbox Elite Series 2 Model 1797).txt: -------------------------------------------------------------------------------- 1 | Information for device Controller (VID=0x045E PID=0x0B00): 2 | 3 | Connection Information: 4 | ------------------------------ 5 | Device current bus speed: FullSpeed 6 | Device supports USB 1.1 specification 7 | Device supports USB 2.0 specification 8 | Device address: 0x000B 9 | Current configuration value: 0x01 10 | Number of open pipes: 2 11 | 12 | Device Descriptor: 13 | ------------------------------ 14 | 0x12 bLength 15 | 0x01 bDescriptorType 16 | 0x0200 bcdUSB 17 | 0xFF bDeviceClass (Vendor specific) 18 | 0x47 bDeviceSubClass 19 | 0xD0 bDeviceProtocol 20 | 0x40 bMaxPacketSize0 (64 bytes) 21 | 0x045E idVendor 22 | 0x0B00 idProduct 23 | 0x0407 bcdDevice 24 | 0x01 iManufacturer "Microsoft" 25 | 0x02 iProduct "Controller" 26 | 0x03 iSerialNumber "3032363330303437373233303433" 27 | 0x01 bNumConfigurations 28 | 29 | Configuration Descriptor: 30 | ------------------------------ 31 | 0x09 bLength 32 | 0x02 bDescriptorType 33 | 0x0060 wTotalLength (96 bytes) 34 | 0x03 bNumInterfaces 35 | 0x01 bConfigurationValue 36 | 0x00 iConfiguration 37 | 0xA0 bmAttributes (Bus-powered Device, Remote-Wakeup) 38 | 0xFA bMaxPower (500 mA) 39 | 40 | Interface Descriptor: 41 | ------------------------------ 42 | 0x09 bLength 43 | 0x04 bDescriptorType 44 | 0x00 bInterfaceNumber 45 | 0x00 bAlternateSetting 46 | 0x02 bNumEndPoints 47 | 0xFF bInterfaceClass (Vendor specific) 48 | 0x47 bInterfaceSubClass 49 | 0xD0 bInterfaceProtocol 50 | 0x00 iInterface 51 | 52 | Endpoint Descriptor: 53 | ------------------------------ 54 | 0x07 bLength 55 | 0x05 bDescriptorType 56 | 0x02 bEndpointAddress (OUT endpoint 2) 57 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 58 | 0x0040 wMaxPacketSize (1 x 64 bytes) 59 | 0x04 bInterval (4 frames) 60 | 61 | Endpoint Descriptor: 62 | ------------------------------ 63 | 0x07 bLength 64 | 0x05 bDescriptorType 65 | 0x82 bEndpointAddress (IN endpoint 2) 66 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 67 | 0x0040 wMaxPacketSize (1 x 64 bytes) 68 | 0x04 bInterval (4 frames) 69 | 70 | Interface Descriptor: 71 | ------------------------------ 72 | 0x09 bLength 73 | 0x04 bDescriptorType 74 | 0x01 bInterfaceNumber 75 | 0x00 bAlternateSetting 76 | 0x00 bNumEndPoints 77 | 0xFF bInterfaceClass (Vendor specific) 78 | 0x47 bInterfaceSubClass 79 | 0xD0 bInterfaceProtocol 80 | 0x00 iInterface 81 | 82 | Interface Descriptor: 83 | ------------------------------ 84 | 0x09 bLength 85 | 0x04 bDescriptorType 86 | 0x01 bInterfaceNumber 87 | 0x01 bAlternateSetting 88 | 0x02 bNumEndPoints 89 | 0xFF bInterfaceClass (Vendor specific) 90 | 0x47 bInterfaceSubClass 91 | 0xD0 bInterfaceProtocol 92 | 0x00 iInterface 93 | 94 | Endpoint Descriptor: 95 | ------------------------------ 96 | 0x07 bLength 97 | 0x05 bDescriptorType 98 | 0x03 bEndpointAddress (OUT endpoint 3) 99 | 0x01 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Data) 100 | 0x00E4 wMaxPacketSize (1 x 228 bytes) 101 | 0x01 bInterval (1 frames) 102 | 103 | Endpoint Descriptor: 104 | ------------------------------ 105 | 0x07 bLength 106 | 0x05 bDescriptorType 107 | 0x83 bEndpointAddress (IN endpoint 3) 108 | 0x01 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Data) 109 | 0x0040 wMaxPacketSize (1 x 64 bytes) 110 | 0x01 bInterval (1 frames) 111 | 112 | Interface Descriptor: 113 | ------------------------------ 114 | 0x09 bLength 115 | 0x04 bDescriptorType 116 | 0x02 bInterfaceNumber 117 | 0x00 bAlternateSetting 118 | 0x00 bNumEndPoints 119 | 0xFF bInterfaceClass (Vendor specific) 120 | 0x47 bInterfaceSubClass 121 | 0xD0 bInterfaceProtocol 122 | 0x00 iInterface 123 | 124 | Interface Descriptor: 125 | ------------------------------ 126 | 0x09 bLength 127 | 0x04 bDescriptorType 128 | 0x02 bInterfaceNumber 129 | 0x01 bAlternateSetting 130 | 0x02 bNumEndPoints 131 | 0xFF bInterfaceClass (Vendor specific) 132 | 0x47 bInterfaceSubClass 133 | 0xD0 bInterfaceProtocol 134 | 0x00 iInterface 135 | 136 | Endpoint Descriptor: 137 | ------------------------------ 138 | 0x07 bLength 139 | 0x05 bDescriptorType 140 | 0x04 bEndpointAddress (OUT endpoint 4) 141 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 142 | 0x0040 wMaxPacketSize (64 bytes) 143 | 0x00 bInterval 144 | 145 | Endpoint Descriptor: 146 | ------------------------------ 147 | 0x07 bLength 148 | 0x05 bDescriptorType 149 | 0x84 bEndpointAddress (IN endpoint 4) 150 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 151 | 0x0040 wMaxPacketSize (64 bytes) 152 | 0x00 bInterval 153 | 154 | Microsoft OS Descriptor: 155 | ------------------------------ 156 | 0x12 bLength 157 | 0x03 bDescriptorType 158 | Hex dump: 159 | 0x12 0x03 0x4D 0x00 0x53 0x00 0x46 0x00 0x54 0x00 160 | 0x31 0x00 0x30 0x00 0x30 0x00 0x90 0x00 161 | 162 | String Descriptor Table 163 | -------------------------------- 164 | Index LANGID String 165 | 0x00 0x0000 0x0409 166 | 0x01 0x0409 "Microsoft" 167 | 0x02 0x0409 "Controller" 168 | 0x03 0x0409 "3032363330303437373233303433" 169 | 170 | ------------------------------ 171 | 172 | Connection path for device: 173 | USB xHCI Compliant Host Controller 174 | Root Hub 175 | Controller (VID=0x045E PID=0x0B00) Port: 1 176 | 177 | Running on: Windows 10 or greater (Build Version 18363) 178 | 179 | Brought to you by TDD v2.15.0, Jun 8 2020, 17:18:07 180 | -------------------------------------------------------------------------------- /xboxone/DescriptorDump_Controller (Xbox One Elite Model 1698).txt: -------------------------------------------------------------------------------- 1 | Information for device Controller (VID=0x045E PID=0x02E3): 2 | 3 | Connection Information: 4 | ------------------------------ 5 | Device current bus speed: FullSpeed 6 | Device supports USB 1.1 specification 7 | Device supports USB 2.0 specification 8 | Device address: 0x000F 9 | Current configuration value: 0x01 10 | Number of open pipes: 2 11 | 12 | Device Descriptor: 13 | ------------------------------ 14 | 0x12 bLength 15 | 0x01 bDescriptorType 16 | 0x0200 bcdUSB 17 | 0xFF bDeviceClass (Vendor specific) 18 | 0x47 bDeviceSubClass 19 | 0xD0 bDeviceProtocol 20 | 0x40 bMaxPacketSize0 (64 bytes) 21 | 0x045E idVendor 22 | 0x02E3 idProduct 23 | 0x0203 bcdDevice 24 | 0x01 iManufacturer "Microsoft" 25 | 0x02 iProduct "Controller" 26 | 0x03 iSerialNumber "7EED8C9A94DA" 27 | 0x01 bNumConfigurations 28 | 29 | Configuration Descriptor: 30 | ------------------------------ 31 | 0x09 bLength 32 | 0x02 bDescriptorType 33 | 0x0060 wTotalLength (96 bytes) 34 | 0x03 bNumInterfaces 35 | 0x01 bConfigurationValue 36 | 0x00 iConfiguration 37 | 0xA0 bmAttributes (Bus-powered Device, Remote-Wakeup) 38 | 0xFA bMaxPower (500 mA) 39 | 40 | Interface Descriptor: 41 | ------------------------------ 42 | 0x09 bLength 43 | 0x04 bDescriptorType 44 | 0x00 bInterfaceNumber 45 | 0x00 bAlternateSetting 46 | 0x02 bNumEndPoints 47 | 0xFF bInterfaceClass (Vendor specific) 48 | 0x47 bInterfaceSubClass 49 | 0xD0 bInterfaceProtocol 50 | 0x00 iInterface 51 | 52 | Endpoint Descriptor: 53 | ------------------------------ 54 | 0x07 bLength 55 | 0x05 bDescriptorType 56 | 0x01 bEndpointAddress (OUT endpoint 1) 57 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 58 | 0x0040 wMaxPacketSize (1 x 64 bytes) 59 | 0x04 bInterval (4 frames) 60 | 61 | Endpoint Descriptor: 62 | ------------------------------ 63 | 0x07 bLength 64 | 0x05 bDescriptorType 65 | 0x81 bEndpointAddress (IN endpoint 1) 66 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 67 | 0x0040 wMaxPacketSize (1 x 64 bytes) 68 | 0x04 bInterval (4 frames) 69 | 70 | Interface Descriptor: 71 | ------------------------------ 72 | 0x09 bLength 73 | 0x04 bDescriptorType 74 | 0x01 bInterfaceNumber 75 | 0x00 bAlternateSetting 76 | 0x00 bNumEndPoints 77 | 0xFF bInterfaceClass (Vendor specific) 78 | 0x47 bInterfaceSubClass 79 | 0xD0 bInterfaceProtocol 80 | 0x00 iInterface 81 | 82 | Interface Descriptor: 83 | ------------------------------ 84 | 0x09 bLength 85 | 0x04 bDescriptorType 86 | 0x01 bInterfaceNumber 87 | 0x01 bAlternateSetting 88 | 0x02 bNumEndPoints 89 | 0xFF bInterfaceClass (Vendor specific) 90 | 0x47 bInterfaceSubClass 91 | 0xD0 bInterfaceProtocol 92 | 0x00 iInterface 93 | 94 | Endpoint Descriptor: 95 | ------------------------------ 96 | 0x07 bLength 97 | 0x05 bDescriptorType 98 | 0x02 bEndpointAddress (OUT endpoint 2) 99 | 0x01 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Data) 100 | 0x00E4 wMaxPacketSize (1 x 228 bytes) 101 | 0x01 bInterval (1 frames) 102 | 103 | Endpoint Descriptor: 104 | ------------------------------ 105 | 0x07 bLength 106 | 0x05 bDescriptorType 107 | 0x82 bEndpointAddress (IN endpoint 2) 108 | 0x01 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Data) 109 | 0x00E4 wMaxPacketSize (1 x 228 bytes) 110 | 0x01 bInterval (1 frames) 111 | 112 | Interface Descriptor: 113 | ------------------------------ 114 | 0x09 bLength 115 | 0x04 bDescriptorType 116 | 0x02 bInterfaceNumber 117 | 0x00 bAlternateSetting 118 | 0x00 bNumEndPoints 119 | 0xFF bInterfaceClass (Vendor specific) 120 | 0x47 bInterfaceSubClass 121 | 0xD0 bInterfaceProtocol 122 | 0x00 iInterface 123 | 124 | Interface Descriptor: 125 | ------------------------------ 126 | 0x09 bLength 127 | 0x04 bDescriptorType 128 | 0x02 bInterfaceNumber 129 | 0x01 bAlternateSetting 130 | 0x02 bNumEndPoints 131 | 0xFF bInterfaceClass (Vendor specific) 132 | 0x47 bInterfaceSubClass 133 | 0xD0 bInterfaceProtocol 134 | 0x00 iInterface 135 | 136 | Endpoint Descriptor: 137 | ------------------------------ 138 | 0x07 bLength 139 | 0x05 bDescriptorType 140 | 0x03 bEndpointAddress (OUT endpoint 3) 141 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 142 | 0x0040 wMaxPacketSize (64 bytes) 143 | 0x00 bInterval 144 | 145 | Endpoint Descriptor: 146 | ------------------------------ 147 | 0x07 bLength 148 | 0x05 bDescriptorType 149 | 0x83 bEndpointAddress (IN endpoint 3) 150 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 151 | 0x0040 wMaxPacketSize (64 bytes) 152 | 0x00 bInterval 153 | 154 | Microsoft OS Descriptor: 155 | ------------------------------ 156 | 0x12 bLength 157 | 0x03 bDescriptorType 158 | Hex dump: 159 | 0x12 0x03 0x4D 0x00 0x53 0x00 0x46 0x00 0x54 0x00 160 | 0x31 0x00 0x30 0x00 0x30 0x00 0x90 0x00 161 | 162 | String Descriptor Table 163 | -------------------------------- 164 | Index LANGID String 165 | 0x00 0x0000 0x0409 166 | 0x01 0x0409 "Microsoft" 167 | 0x02 0x0409 "Controller" 168 | 0x03 0x0409 "7EED8C9A94DA" 169 | 170 | ------------------------------ 171 | 172 | Connection path for device: 173 | USB xHCI Compliant Host Controller 174 | Root Hub 175 | Controller (VID=0x045E PID=0x02E3) Port: 1 176 | 177 | Running on: Windows 10 or greater (Build Version 18363) 178 | 179 | Brought to you by TDD v2.15.0, Jun 8 2020, 17:18:07 180 | -------------------------------------------------------------------------------- /xboxone/DescriptorDump_Controller (Xbox One Model 1537).txt: -------------------------------------------------------------------------------- 1 | Information for device Controller (VID=0x045E PID=0x02D1): 2 | 3 | Connection Information: 4 | ------------------------------ 5 | Device current bus speed: FullSpeed 6 | Device supports USB 1.1 specification 7 | Device supports USB 2.0 specification 8 | Device address: 0x0017 9 | Current configuration value: 0x01 10 | Number of open pipes: 2 11 | 12 | Device Descriptor: 13 | ------------------------------ 14 | 0x12 bLength 15 | 0x01 bDescriptorType 16 | 0x0200 bcdUSB 17 | 0xFF bDeviceClass (Vendor specific) 18 | 0x47 bDeviceSubClass 19 | 0xD0 bDeviceProtocol 20 | 0x40 bMaxPacketSize0 (64 bytes) 21 | 0x045E idVendor 22 | 0x02D1 idProduct 23 | 0x0203 bcdDevice 24 | 0x01 iManufacturer "Microsoft" 25 | 0x02 iProduct "Controller" 26 | 0x03 iSerialNumber "7EED86C35B04" 27 | 0x01 bNumConfigurations 28 | 29 | Configuration Descriptor: 30 | ------------------------------ 31 | 0x09 bLength 32 | 0x02 bDescriptorType 33 | 0x0060 wTotalLength (96 bytes) 34 | 0x03 bNumInterfaces 35 | 0x01 bConfigurationValue 36 | 0x00 iConfiguration 37 | 0xA0 bmAttributes (Bus-powered Device, Remote-Wakeup) 38 | 0xFA bMaxPower (500 mA) 39 | 40 | Interface Descriptor: 41 | ------------------------------ 42 | 0x09 bLength 43 | 0x04 bDescriptorType 44 | 0x00 bInterfaceNumber 45 | 0x00 bAlternateSetting 46 | 0x02 bNumEndPoints 47 | 0xFF bInterfaceClass (Vendor specific) 48 | 0x47 bInterfaceSubClass 49 | 0xD0 bInterfaceProtocol 50 | 0x00 iInterface 51 | 52 | Endpoint Descriptor: 53 | ------------------------------ 54 | 0x07 bLength 55 | 0x05 bDescriptorType 56 | 0x01 bEndpointAddress (OUT endpoint 1) 57 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 58 | 0x0040 wMaxPacketSize (1 x 64 bytes) 59 | 0x04 bInterval (4 frames) 60 | 61 | Endpoint Descriptor: 62 | ------------------------------ 63 | 0x07 bLength 64 | 0x05 bDescriptorType 65 | 0x81 bEndpointAddress (IN endpoint 1) 66 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 67 | 0x0040 wMaxPacketSize (1 x 64 bytes) 68 | 0x04 bInterval (4 frames) 69 | 70 | Interface Descriptor: 71 | ------------------------------ 72 | 0x09 bLength 73 | 0x04 bDescriptorType 74 | 0x01 bInterfaceNumber 75 | 0x00 bAlternateSetting 76 | 0x00 bNumEndPoints 77 | 0xFF bInterfaceClass (Vendor specific) 78 | 0x47 bInterfaceSubClass 79 | 0xD0 bInterfaceProtocol 80 | 0x00 iInterface 81 | 82 | Interface Descriptor: 83 | ------------------------------ 84 | 0x09 bLength 85 | 0x04 bDescriptorType 86 | 0x01 bInterfaceNumber 87 | 0x01 bAlternateSetting 88 | 0x02 bNumEndPoints 89 | 0xFF bInterfaceClass (Vendor specific) 90 | 0x47 bInterfaceSubClass 91 | 0xD0 bInterfaceProtocol 92 | 0x00 iInterface 93 | 94 | Endpoint Descriptor: 95 | ------------------------------ 96 | 0x07 bLength 97 | 0x05 bDescriptorType 98 | 0x02 bEndpointAddress (OUT endpoint 2) 99 | 0x01 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Data) 100 | 0x00E4 wMaxPacketSize (1 x 228 bytes) 101 | 0x01 bInterval (1 frames) 102 | 103 | Endpoint Descriptor: 104 | ------------------------------ 105 | 0x07 bLength 106 | 0x05 bDescriptorType 107 | 0x82 bEndpointAddress (IN endpoint 2) 108 | 0x01 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Data) 109 | 0x00E4 wMaxPacketSize (1 x 228 bytes) 110 | 0x01 bInterval (1 frames) 111 | 112 | Interface Descriptor: 113 | ------------------------------ 114 | 0x09 bLength 115 | 0x04 bDescriptorType 116 | 0x02 bInterfaceNumber 117 | 0x00 bAlternateSetting 118 | 0x00 bNumEndPoints 119 | 0xFF bInterfaceClass (Vendor specific) 120 | 0x47 bInterfaceSubClass 121 | 0xD0 bInterfaceProtocol 122 | 0x00 iInterface 123 | 124 | Interface Descriptor: 125 | ------------------------------ 126 | 0x09 bLength 127 | 0x04 bDescriptorType 128 | 0x02 bInterfaceNumber 129 | 0x01 bAlternateSetting 130 | 0x02 bNumEndPoints 131 | 0xFF bInterfaceClass (Vendor specific) 132 | 0x47 bInterfaceSubClass 133 | 0xD0 bInterfaceProtocol 134 | 0x00 iInterface 135 | 136 | Endpoint Descriptor: 137 | ------------------------------ 138 | 0x07 bLength 139 | 0x05 bDescriptorType 140 | 0x03 bEndpointAddress (OUT endpoint 3) 141 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 142 | 0x0040 wMaxPacketSize (64 bytes) 143 | 0x00 bInterval 144 | 145 | Endpoint Descriptor: 146 | ------------------------------ 147 | 0x07 bLength 148 | 0x05 bDescriptorType 149 | 0x83 bEndpointAddress (IN endpoint 3) 150 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 151 | 0x0040 wMaxPacketSize (64 bytes) 152 | 0x00 bInterval 153 | 154 | Microsoft OS Descriptor: 155 | ------------------------------ 156 | 0x12 bLength 157 | 0x03 bDescriptorType 158 | Hex dump: 159 | 0x12 0x03 0x4D 0x00 0x53 0x00 0x46 0x00 0x54 0x00 160 | 0x31 0x00 0x30 0x00 0x30 0x00 0x90 0x00 161 | 162 | String Descriptor Table 163 | -------------------------------- 164 | Index LANGID String 165 | 0x00 0x0000 0x0409 166 | 0x01 0x0409 "Microsoft" 167 | 0x02 0x0409 "Controller" 168 | 0x03 0x0409 "7EED86C35B04" 169 | 170 | ------------------------------ 171 | 172 | Connection path for device: 173 | USB xHCI Compliant Host Controller 174 | Root Hub 175 | Controller (VID=0x045E PID=0x02D1) Port: 1 176 | 177 | Running on: Windows 10 or greater (Build Version 18363) 178 | 179 | Brought to you by TDD v2.15.0, Jun 8 2020, 17:18:07 180 | -------------------------------------------------------------------------------- /xboxone/DescriptorDump_Controller (Xbox One Model 1708).txt: -------------------------------------------------------------------------------- 1 | Information for device Controller (VID=0x045E PID=0x02EA): 2 | 3 | Connection Information: 4 | ------------------------------ 5 | Device current bus speed: FullSpeed 6 | Device supports USB 1.1 specification 7 | Device supports USB 2.0 specification 8 | Device address: 0x0016 9 | Current configuration value: 0x01 10 | Number of open pipes: 2 11 | 12 | Device Descriptor: 13 | ------------------------------ 14 | 0x12 bLength 15 | 0x01 bDescriptorType 16 | 0x0200 bcdUSB 17 | 0xFF bDeviceClass (Vendor specific) 18 | 0x47 bDeviceSubClass 19 | 0xD0 bDeviceProtocol 20 | 0x40 bMaxPacketSize0 (64 bytes) 21 | 0x045E idVendor 22 | 0x02EA idProduct 23 | 0x0408 bcdDevice 24 | 0x01 iManufacturer "Microsoft" 25 | 0x02 iProduct "Controller" 26 | 0x03 iSerialNumber "3033363030343037323136373239" 27 | 0x01 bNumConfigurations 28 | 29 | Configuration Descriptor: 30 | ------------------------------ 31 | 0x09 bLength 32 | 0x02 bDescriptorType 33 | 0x0060 wTotalLength (96 bytes) 34 | 0x03 bNumInterfaces 35 | 0x01 bConfigurationValue 36 | 0x00 iConfiguration 37 | 0xA0 bmAttributes (Bus-powered Device, Remote-Wakeup) 38 | 0xFA bMaxPower (500 mA) 39 | 40 | Interface Descriptor: 41 | ------------------------------ 42 | 0x09 bLength 43 | 0x04 bDescriptorType 44 | 0x00 bInterfaceNumber 45 | 0x00 bAlternateSetting 46 | 0x02 bNumEndPoints 47 | 0xFF bInterfaceClass (Vendor specific) 48 | 0x47 bInterfaceSubClass 49 | 0xD0 bInterfaceProtocol 50 | 0x00 iInterface 51 | 52 | Endpoint Descriptor: 53 | ------------------------------ 54 | 0x07 bLength 55 | 0x05 bDescriptorType 56 | 0x02 bEndpointAddress (OUT endpoint 2) 57 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 58 | 0x0040 wMaxPacketSize (1 x 64 bytes) 59 | 0x04 bInterval (4 frames) 60 | 61 | Endpoint Descriptor: 62 | ------------------------------ 63 | 0x07 bLength 64 | 0x05 bDescriptorType 65 | 0x82 bEndpointAddress (IN endpoint 2) 66 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 67 | 0x0040 wMaxPacketSize (1 x 64 bytes) 68 | 0x04 bInterval (4 frames) 69 | 70 | Interface Descriptor: 71 | ------------------------------ 72 | 0x09 bLength 73 | 0x04 bDescriptorType 74 | 0x01 bInterfaceNumber 75 | 0x00 bAlternateSetting 76 | 0x00 bNumEndPoints 77 | 0xFF bInterfaceClass (Vendor specific) 78 | 0x47 bInterfaceSubClass 79 | 0xD0 bInterfaceProtocol 80 | 0x00 iInterface 81 | 82 | Interface Descriptor: 83 | ------------------------------ 84 | 0x09 bLength 85 | 0x04 bDescriptorType 86 | 0x01 bInterfaceNumber 87 | 0x01 bAlternateSetting 88 | 0x02 bNumEndPoints 89 | 0xFF bInterfaceClass (Vendor specific) 90 | 0x47 bInterfaceSubClass 91 | 0xD0 bInterfaceProtocol 92 | 0x00 iInterface 93 | 94 | Endpoint Descriptor: 95 | ------------------------------ 96 | 0x07 bLength 97 | 0x05 bDescriptorType 98 | 0x03 bEndpointAddress (OUT endpoint 3) 99 | 0x01 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Data) 100 | 0x00E4 wMaxPacketSize (1 x 228 bytes) 101 | 0x01 bInterval (1 frames) 102 | 103 | Endpoint Descriptor: 104 | ------------------------------ 105 | 0x07 bLength 106 | 0x05 bDescriptorType 107 | 0x83 bEndpointAddress (IN endpoint 3) 108 | 0x01 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Data) 109 | 0x0040 wMaxPacketSize (1 x 64 bytes) 110 | 0x01 bInterval (1 frames) 111 | 112 | Interface Descriptor: 113 | ------------------------------ 114 | 0x09 bLength 115 | 0x04 bDescriptorType 116 | 0x02 bInterfaceNumber 117 | 0x00 bAlternateSetting 118 | 0x00 bNumEndPoints 119 | 0xFF bInterfaceClass (Vendor specific) 120 | 0x47 bInterfaceSubClass 121 | 0xD0 bInterfaceProtocol 122 | 0x00 iInterface 123 | 124 | Interface Descriptor: 125 | ------------------------------ 126 | 0x09 bLength 127 | 0x04 bDescriptorType 128 | 0x02 bInterfaceNumber 129 | 0x01 bAlternateSetting 130 | 0x02 bNumEndPoints 131 | 0xFF bInterfaceClass (Vendor specific) 132 | 0x47 bInterfaceSubClass 133 | 0xD0 bInterfaceProtocol 134 | 0x00 iInterface 135 | 136 | Endpoint Descriptor: 137 | ------------------------------ 138 | 0x07 bLength 139 | 0x05 bDescriptorType 140 | 0x04 bEndpointAddress (OUT endpoint 4) 141 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 142 | 0x0040 wMaxPacketSize (64 bytes) 143 | 0x00 bInterval 144 | 145 | Endpoint Descriptor: 146 | ------------------------------ 147 | 0x07 bLength 148 | 0x05 bDescriptorType 149 | 0x84 bEndpointAddress (IN endpoint 4) 150 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 151 | 0x0040 wMaxPacketSize (64 bytes) 152 | 0x00 bInterval 153 | 154 | Microsoft OS Descriptor: 155 | ------------------------------ 156 | 0x12 bLength 157 | 0x03 bDescriptorType 158 | Hex dump: 159 | 0x12 0x03 0x4D 0x00 0x53 0x00 0x46 0x00 0x54 0x00 160 | 0x31 0x00 0x30 0x00 0x30 0x00 0x90 0x00 161 | 162 | String Descriptor Table 163 | -------------------------------- 164 | Index LANGID String 165 | 0x00 0x0000 0x0409 166 | 0x01 0x0409 "Microsoft" 167 | 0x02 0x0409 "Controller" 168 | 0x03 0x0409 "3033363030343037323136373239" 169 | 170 | ------------------------------ 171 | 172 | Connection path for device: 173 | USB xHCI Compliant Host Controller 174 | Root Hub 175 | Controller (VID=0x045E PID=0x02EA) Port: 2 176 | 177 | Running on: Windows 10 or greater (Build Version 18363) 178 | 179 | Brought to you by TDD v2.15.0, Jun 8 2020, 17:18:07 180 | -------------------------------------------------------------------------------- /xboxone/DescriptorDump_Controller (Xbox Series Model 1914).txt: -------------------------------------------------------------------------------- 1 | Information for device Controller (VID=0x045E PID=0x0B12): 2 | 3 | Connection Information: 4 | ------------------------------ 5 | Device current bus speed: FullSpeed 6 | Device supports USB 1.1 specification 7 | Device supports USB 2.0 specification 8 | Device address: 0x0013 9 | Current configuration value: 0x01 10 | Number of open pipes: 2 11 | 12 | Device Descriptor: 13 | ------------------------------ 14 | 0x12 bLength 15 | 0x01 bDescriptorType 16 | 0x0200 bcdUSB 17 | 0xFF bDeviceClass (Vendor specific) 18 | 0x47 bDeviceSubClass 19 | 0xD0 bDeviceProtocol 20 | 0x40 bMaxPacketSize0 (64 bytes) 21 | 0x045E idVendor 22 | 0x0B12 idProduct 23 | 0x0503 bcdDevice 24 | 0x01 iManufacturer "Microsoft" 25 | 0x02 iProduct "Controller" 26 | 0x03 iSerialNumber "3039373130303637313034303231" 27 | 0x01 bNumConfigurations 28 | 29 | Configuration Descriptor: 30 | ------------------------------ 31 | 0x09 bLength 32 | 0x02 bDescriptorType 33 | 0x0077 wTotalLength (119 bytes) 34 | 0x03 bNumInterfaces 35 | 0x01 bConfigurationValue 36 | 0x00 iConfiguration 37 | 0xA0 bmAttributes (Bus-powered Device, Remote-Wakeup) 38 | 0xFA bMaxPower (500 mA) 39 | 40 | Interface Descriptor: 41 | ------------------------------ 42 | 0x09 bLength 43 | 0x04 bDescriptorType 44 | 0x00 bInterfaceNumber 45 | 0x00 bAlternateSetting 46 | 0x02 bNumEndPoints 47 | 0xFF bInterfaceClass (Vendor specific) 48 | 0x47 bInterfaceSubClass 49 | 0xD0 bInterfaceProtocol 50 | 0x00 iInterface 51 | 52 | Endpoint Descriptor: 53 | ------------------------------ 54 | 0x07 bLength 55 | 0x05 bDescriptorType 56 | 0x02 bEndpointAddress (OUT endpoint 2) 57 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 58 | 0x0040 wMaxPacketSize (1 x 64 bytes) 59 | 0x04 bInterval (4 frames) 60 | 61 | Endpoint Descriptor: 62 | ------------------------------ 63 | 0x07 bLength 64 | 0x05 bDescriptorType 65 | 0x82 bEndpointAddress (IN endpoint 2) 66 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 67 | 0x0040 wMaxPacketSize (1 x 64 bytes) 68 | 0x04 bInterval (4 frames) 69 | 70 | Interface Descriptor: 71 | ------------------------------ 72 | 0x09 bLength 73 | 0x04 bDescriptorType 74 | 0x00 bInterfaceNumber 75 | 0x01 bAlternateSetting 76 | 0x02 bNumEndPoints 77 | 0xFF bInterfaceClass (Vendor specific) 78 | 0x47 bInterfaceSubClass 79 | 0xD0 bInterfaceProtocol 80 | 0x00 iInterface 81 | 82 | Endpoint Descriptor: 83 | ------------------------------ 84 | 0x07 bLength 85 | 0x05 bDescriptorType 86 | 0x02 bEndpointAddress (OUT endpoint 2) 87 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 88 | 0x0040 wMaxPacketSize (1 x 64 bytes) 89 | 0x04 bInterval (4 frames) 90 | 91 | Endpoint Descriptor: 92 | ------------------------------ 93 | 0x07 bLength 94 | 0x05 bDescriptorType 95 | 0x82 bEndpointAddress (IN endpoint 2) 96 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 97 | 0x0040 wMaxPacketSize (1 x 64 bytes) 98 | 0x02 bInterval (2 frames) 99 | 100 | Interface Descriptor: 101 | ------------------------------ 102 | 0x09 bLength 103 | 0x04 bDescriptorType 104 | 0x01 bInterfaceNumber 105 | 0x00 bAlternateSetting 106 | 0x00 bNumEndPoints 107 | 0xFF bInterfaceClass (Vendor specific) 108 | 0x47 bInterfaceSubClass 109 | 0xD0 bInterfaceProtocol 110 | 0x00 iInterface 111 | 112 | Interface Descriptor: 113 | ------------------------------ 114 | 0x09 bLength 115 | 0x04 bDescriptorType 116 | 0x01 bInterfaceNumber 117 | 0x01 bAlternateSetting 118 | 0x02 bNumEndPoints 119 | 0xFF bInterfaceClass (Vendor specific) 120 | 0x47 bInterfaceSubClass 121 | 0xD0 bInterfaceProtocol 122 | 0x00 iInterface 123 | 124 | Endpoint Descriptor: 125 | ------------------------------ 126 | 0x07 bLength 127 | 0x05 bDescriptorType 128 | 0x03 bEndpointAddress (OUT endpoint 3) 129 | 0x01 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Data) 130 | 0x00E4 wMaxPacketSize (1 x 228 bytes) 131 | 0x01 bInterval (1 frames) 132 | 133 | Endpoint Descriptor: 134 | ------------------------------ 135 | 0x07 bLength 136 | 0x05 bDescriptorType 137 | 0x83 bEndpointAddress (IN endpoint 3) 138 | 0x01 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Data) 139 | 0x0040 wMaxPacketSize (1 x 64 bytes) 140 | 0x01 bInterval (1 frames) 141 | 142 | Interface Descriptor: 143 | ------------------------------ 144 | 0x09 bLength 145 | 0x04 bDescriptorType 146 | 0x02 bInterfaceNumber 147 | 0x00 bAlternateSetting 148 | 0x00 bNumEndPoints 149 | 0xFF bInterfaceClass (Vendor specific) 150 | 0x47 bInterfaceSubClass 151 | 0xD0 bInterfaceProtocol 152 | 0x00 iInterface 153 | 154 | Interface Descriptor: 155 | ------------------------------ 156 | 0x09 bLength 157 | 0x04 bDescriptorType 158 | 0x02 bInterfaceNumber 159 | 0x01 bAlternateSetting 160 | 0x02 bNumEndPoints 161 | 0xFF bInterfaceClass (Vendor specific) 162 | 0x47 bInterfaceSubClass 163 | 0xD0 bInterfaceProtocol 164 | 0x00 iInterface 165 | 166 | Endpoint Descriptor: 167 | ------------------------------ 168 | 0x07 bLength 169 | 0x05 bDescriptorType 170 | 0x04 bEndpointAddress (OUT endpoint 4) 171 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 172 | 0x0040 wMaxPacketSize (64 bytes) 173 | 0x00 bInterval 174 | 175 | Endpoint Descriptor: 176 | ------------------------------ 177 | 0x07 bLength 178 | 0x05 bDescriptorType 179 | 0x84 bEndpointAddress (IN endpoint 4) 180 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 181 | 0x0040 wMaxPacketSize (64 bytes) 182 | 0x00 bInterval 183 | 184 | Microsoft OS Descriptor: 185 | ------------------------------ 186 | 0x12 bLength 187 | 0x03 bDescriptorType 188 | Hex dump: 189 | 0x12 0x03 0x4D 0x00 0x53 0x00 0x46 0x00 0x54 0x00 190 | 0x31 0x00 0x30 0x00 0x30 0x00 0x90 0x00 191 | 192 | String Descriptor Table 193 | -------------------------------- 194 | Index LANGID String 195 | 0x00 0x0000 0x0409 196 | 0x01 0x0409 "Microsoft" 197 | 0x02 0x0409 "Controller" 198 | 0x03 0x0409 "3039373130303637313034303231" 199 | 200 | ------------------------------ 201 | 202 | Connection path for device: 203 | USB xHCI Compliant Host Controller 204 | Root Hub 205 | Controller (VID=0x045E PID=0x0B12) Port: 1 206 | 207 | Running on: Windows 10 or greater (Build Version 18363) 208 | 209 | Brought to you by TDD v2.15.0, Jun 8 2020, 17:18:07 210 | -------------------------------------------------------------------------------- /xboxone/xboxgip_gamepad_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xboxone/xboxgip_gamepad_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xboxone/xboxone_model_1708_bluetooth_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xboxone/xboxone_model_1708_bluetooth_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xboxone/xboxone_model_1708_firmware_5_13_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xboxone/xboxone_model_1708_firmware_5_13_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xboxone/xboxone_model_1708_firmware_5_17_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xboxone/xboxone_model_1708_firmware_5_17_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xboxone/xboxone_model_1797_bluetooth_dump.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xboxone/xboxone_model_1797_bluetooth_dump.pcap -------------------------------------------------------------------------------- /xboxone/xboxone_model_1797_bluetooth_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xboxone/xboxone_model_1797_bluetooth_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xboxone/xboxone_model_1914_bluetoothle_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xboxone/xboxone_model_1914_bluetoothle_hid_report_descriptor.bin -------------------------------------------------------------------------------- /xboxone/xboxone_model_1914_firmware_5_17_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/xboxone/xboxone_model_1914_firmware_5_17_hid_report_descriptor.bin -------------------------------------------------------------------------------- /zeroplusxboxwireless/DescriptorDump_Controller (Zeroplus Controller).txt: -------------------------------------------------------------------------------- 1 | Information for device Controller (VID=0x045E PID=0x02EA): 2 | 3 | ------------------------------ 4 | Connection Information: 5 | ------------------------------ 6 | Device current bus speed: FullSpeed 7 | Device supports USB 1.1 specification 8 | Device supports USB 2.0 specification 9 | Device address: 0x0011 10 | Current configuration value: 0x00 11 | Number of open pipes: 0 12 | 13 | 14 | ------------------------------ 15 | Device Descriptor: 16 | ------------------------------ 17 | 0x12 bLength 18 | 0x01 bDescriptorType 19 | 0x0200 bcdUSB 20 | 0xFF bDeviceClass (Vendor specific) 21 | 0x47 bDeviceSubClass 22 | 0xD0 bDeviceProtocol 23 | 0x40 bMaxPacketSize0 (64 bytes) 24 | 0x045E idVendor 25 | 0x02EA idProduct 26 | 0x0408 bcdDevice 27 | 0x01 iManufacturer "ZEROPLUS" 28 | 0x02 iProduct "Controller" 29 | 0x03 iSerialNumber "3232303033313032373333374342" 30 | 0x01 bNumConfigurations 31 | 32 | 33 | ------------------------- 34 | Configuration Descriptor: 35 | ------------------------- 36 | 0x09 bLength 37 | 0x02 bDescriptorType 38 | 0x0060 wTotalLength (96 bytes) 39 | 0x03 bNumInterfaces 40 | 0x01 bConfigurationValue 41 | 0x00 iConfiguration 42 | 0xA0 bmAttributes (Bus-powered Device, Remote-Wakeup) 43 | 0xFA bMaxPower (500 mA) 44 | 45 | Interface Descriptor: 46 | ------------------------------ 47 | 0x09 bLength 48 | 0x04 bDescriptorType 49 | 0x00 bInterfaceNumber 50 | 0x00 bAlternateSetting 51 | 0x02 bNumEndPoints 52 | 0xFF bInterfaceClass (Vendor specific) 53 | 0x47 bInterfaceSubClass 54 | 0xD0 bInterfaceProtocol 55 | 0x00 iInterface 56 | 57 | Endpoint Descriptor: 58 | ------------------------------ 59 | 0x07 bLength 60 | 0x05 bDescriptorType 61 | 0x02 bEndpointAddress (OUT endpoint 2) 62 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 63 | 0x0040 wMaxPacketSize (1 x 64 bytes) 64 | 0x04 bInterval (4 frames) 65 | 66 | Endpoint Descriptor: 67 | ------------------------------ 68 | 0x07 bLength 69 | 0x05 bDescriptorType 70 | 0x82 bEndpointAddress (IN endpoint 2) 71 | 0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data) 72 | 0x0040 wMaxPacketSize (1 x 64 bytes) 73 | 0x04 bInterval (4 frames) 74 | 75 | Interface Descriptor: 76 | ------------------------------ 77 | 0x09 bLength 78 | 0x04 bDescriptorType 79 | 0x01 bInterfaceNumber 80 | 0x00 bAlternateSetting 81 | 0x00 bNumEndPoints 82 | 0xFF bInterfaceClass (Vendor specific) 83 | 0x47 bInterfaceSubClass 84 | 0xD0 bInterfaceProtocol 85 | 0x00 iInterface 86 | 87 | Interface Descriptor: 88 | ------------------------------ 89 | 0x09 bLength 90 | 0x04 bDescriptorType 91 | 0x01 bInterfaceNumber 92 | 0x01 bAlternateSetting 93 | 0x02 bNumEndPoints 94 | 0xFF bInterfaceClass (Vendor specific) 95 | 0x47 bInterfaceSubClass 96 | 0xD0 bInterfaceProtocol 97 | 0x00 iInterface 98 | 99 | Endpoint Descriptor: 100 | ------------------------------ 101 | 0x07 bLength 102 | 0x05 bDescriptorType 103 | 0x03 bEndpointAddress (OUT endpoint 3) 104 | 0x01 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Data) 105 | 0x00E4 wMaxPacketSize (1 x 228 bytes) 106 | 0x01 bInterval (1 frames) 107 | 108 | Endpoint Descriptor: 109 | ------------------------------ 110 | 0x07 bLength 111 | 0x05 bDescriptorType 112 | 0x83 bEndpointAddress (IN endpoint 3) 113 | 0x01 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Data) 114 | 0x0040 wMaxPacketSize (1 x 64 bytes) 115 | 0x01 bInterval (1 frames) 116 | 117 | Interface Descriptor: 118 | ------------------------------ 119 | 0x09 bLength 120 | 0x04 bDescriptorType 121 | 0x02 bInterfaceNumber 122 | 0x00 bAlternateSetting 123 | 0x00 bNumEndPoints 124 | 0xFF bInterfaceClass (Vendor specific) 125 | 0x47 bInterfaceSubClass 126 | 0xD0 bInterfaceProtocol 127 | 0x00 iInterface 128 | 129 | Interface Descriptor: 130 | ------------------------------ 131 | 0x09 bLength 132 | 0x04 bDescriptorType 133 | 0x02 bInterfaceNumber 134 | 0x01 bAlternateSetting 135 | 0x02 bNumEndPoints 136 | 0xFF bInterfaceClass (Vendor specific) 137 | 0x47 bInterfaceSubClass 138 | 0xD0 bInterfaceProtocol 139 | 0x00 iInterface 140 | 141 | Endpoint Descriptor: 142 | ------------------------------ 143 | 0x07 bLength 144 | 0x05 bDescriptorType 145 | 0x04 bEndpointAddress (OUT endpoint 4) 146 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 147 | 0x0040 wMaxPacketSize (64 bytes) 148 | 0x00 bInterval 149 | 150 | Endpoint Descriptor: 151 | ------------------------------ 152 | 0x07 bLength 153 | 0x05 bDescriptorType 154 | 0x84 bEndpointAddress (IN endpoint 4) 155 | 0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data) 156 | 0x0040 wMaxPacketSize (64 bytes) 157 | 0x00 bInterval 158 | 159 | Microsoft OS Descriptor: 160 | ------------------------------ 161 | 0x12 bLength 162 | 0x03 bDescriptorType 163 | Hex dump: 164 | 0x12 0x03 0x4D 0x00 0x53 0x00 0x46 0x00 0x54 0x00 165 | 0x31 0x00 0x30 0x00 0x30 0x00 0x90 0x00 166 | 167 | 168 | -------------------------------- 169 | String Descriptor Table 170 | -------------------------------- 171 | Index LANGID String 172 | 0x00 0x0000 0x0409 173 | 0x01 0x0409 "ZEROPLUS" 174 | 0x02 0x0409 "Controller" 175 | 0x03 0x0409 "3232303033313032373333374342" 176 | 177 | ------------------------------ 178 | 179 | Connection path for device: 180 | USB xHCI Compliant Host Controller 181 | Root Hub 182 | Controller (VID=0x045E PID=0x02EA) Port: 12 183 | 184 | Running on: Windows 10 or greater (Build Version 19044) 185 | 186 | Brought to you by TDD v2.17.0, Feb 23 2021, 14:04:02 187 | -------------------------------------------------------------------------------- /zeroplusxboxwireless/README.md: -------------------------------------------------------------------------------- 1 | # ZEROPLUS Xbox One clone wireless controller 2 | 3 | Comes with USB TYPE A dongle: 4 | 5 | ![image](https://github.com/DJm00n/ControllersInfo/assets/1285934/24912440-a6ef-4a03-ac57-d29a50581f3d) 6 | 7 | https://www.aliexpress.com/item/1005005272237715.html 8 | 9 | https://www.aliexpress.com/item/1005005216325441.html 10 | 11 | # USB Connection 12 | 13 | Presents itself as VID=0x045E PID=0x02EA (Xbox One S Controller). 14 | 15 | Then after a moment reconnects as HID device with VID=0x0C12 PID=0x0F11 ("ZEROPLUS Controller") - see Wireshark dump. 16 | HID report descriptor is malformed (seems cropped). 17 | 18 | Seen in Windows 10 with `Hardware ID: USB\VID_0C12&PID_0F11&REV_0100` 19 | 20 | ``` 21 | >pnputil /enum-interfaces /class {A5DCBF10-6530-11D2-901F-00C04FB951ED} 22 | 23 | Interface Path: \\?\USB#VID_0C12&PID_0F11#5&2108ad5d&0&8#{a5dcbf10-6530-11d2-901f-00c04fb951ed} 24 | Interface Description: Unknown 25 | Interface Class GUID: {a5dcbf10-6530-11d2-901f-00c04fb951ed} 26 | Device Instance ID: USB\VID_0C12&PID_0F11\5&2108ad5d&0&8 27 | Interface Status: Disabled 28 | 29 | >pnputil /enum-devices /instanceid "USB\VID_0C12&PID_0F11\5&2108ad5d&0&8" /ids 30 | Microsoft PnP Utility 31 | 32 | Instance ID: USB\VID_0C12&PID_0F11\5&2108ad5d&0&8 33 | Device Description: USB Input Device 34 | Class Name: HIDClass 35 | Class GUID: {745a17a0-74d3-11d0-b6fe-00a0c90f57da} 36 | Manufacturer Name: (Standard system devices) 37 | Status: Disconnected 38 | Driver Name: input.inf 39 | Hardware IDs: USB\VID_0C12&PID_0F11&REV_0100 40 | USB\VID_0C12&PID_0F11 41 | Compatible IDs: USB\Class_03&SubClass_00&Prot_00 42 | USB\Class_03&SubClass_00 43 | USB\Class_03 44 | ``` 45 | 46 | # Xbox Series 47 | 48 | When connecting dongle to Xbox One you can see error `0x82d60002` (Unauthorized acessory error). But works so far: 49 | 50 | ![image](https://github.com/DJm00n/ControllersInfo/assets/1285934/3426b432-11a4-4469-a671-2f588c532f47) 51 | ![image](https://github.com/DJm00n/ControllersInfo/assets/1285934/4317c1e1-6844-432b-99ad-aa89e54f9e21) 52 | 53 | # Playstation 5 54 | 55 | Detected and working as unknown PS4 controller when dongle is connected to PS5. Did not test it with PS4. 56 | 57 | # SDL 58 | 59 | Detected as third-party PS4 controller by [SDL library](https://github.com/libsdl-org/SDL) (HIDAPI_DriverPS4 backend). Vibration is working. Gyroscope/accelerometer is not working. 60 | -------------------------------------------------------------------------------- /zeroplusxboxwireless/zeropluscontroller.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/zeroplusxboxwireless/zeropluscontroller.pcap -------------------------------------------------------------------------------- /zeroplusxboxwireless/zeroplusxboxwireless_hid_report_descriptor.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJm00n/ControllersInfo/82c1d04494df9886b0f35f77e2435b5e3938575b/zeroplusxboxwireless/zeroplusxboxwireless_hid_report_descriptor.bin --------------------------------------------------------------------------------