Difference between revisions of "G27 PS3"
(Created page with " This is a reverse engineering of the USB interface of the G27 when connected to a PS3. =Enumeration= ==Device descriptor== {| class="wikitable" |- |bLength |18 |- |bDescri...") |
(→Report descriptor) |
||
| Line 198: | Line 198: | ||
==Report descriptor== | ==Report descriptor== | ||
| + | |||
| + | {| class="wikitable" | ||
| + | | | ||
| + | {| class="wikitable" | ||
| + | |- | ||
| + | |05 01 | ||
| + | |- | ||
| + | |09 04 | ||
| + | |- | ||
| + | |A1 01 | ||
| + | |- | ||
| + | |A1 02 | ||
| + | |- | ||
| + | |95 01 | ||
| + | |- | ||
| + | |75 0A | ||
| + | |- | ||
| + | |15 00 | ||
| + | |- | ||
| + | |26 FF 03 | ||
| + | |- | ||
| + | |35 00 | ||
| + | |- | ||
| + | |46 FF 03 | ||
| + | |- | ||
| + | |09 30 | ||
| + | |- | ||
| + | |81 02 | ||
| + | |- | ||
| + | |95 0C | ||
| + | |- | ||
| + | |75 01 | ||
| + | |- | ||
| + | |25 01 | ||
| + | |- | ||
| + | |45 01 | ||
| + | |- | ||
| + | |05 09 | ||
| + | |- | ||
| + | |19 01 | ||
| + | |- | ||
| + | |29 0C | ||
| + | |- | ||
| + | |81 02 | ||
| + | |- | ||
| + | |95 02 | ||
| + | |- | ||
| + | |06 00 FF | ||
| + | |- | ||
| + | |09 01 | ||
| + | |- | ||
| + | |81 02 | ||
| + | |- | ||
| + | |05 01 | ||
| + | |- | ||
| + | |09 31 | ||
| + | |- | ||
| + | |26 FF 00 | ||
| + | |- | ||
| + | |46 FF 00 | ||
| + | |- | ||
| + | |95 01 | ||
| + | |- | ||
| + | |75 08 | ||
| + | |- | ||
| + | |81 02 | ||
| + | |- | ||
| + | |25 07 | ||
| + | |- | ||
| + | |46 3B 01 | ||
| + | |- | ||
| + | |75 04 | ||
| + | |- | ||
| + | |65 14 | ||
| + | |- | ||
| + | |09 39 | ||
| + | |- | ||
| + | |81 42 | ||
| + | |- | ||
| + | |75 01 | ||
| + | |- | ||
| + | |95 04 | ||
| + | |- | ||
| + | |65 00 | ||
| + | |- | ||
| + | |06 00 FF | ||
| + | |- | ||
| + | |09 01 | ||
| + | |- | ||
| + | |25 01 | ||
| + | |- | ||
| + | |45 01 | ||
| + | |- | ||
| + | |81 02 | ||
| + | |- | ||
| + | |95 02 | ||
| + | |- | ||
| + | |75 08 | ||
| + | |- | ||
| + | |26 FF 00 | ||
| + | |- | ||
| + | |46 FF 00 | ||
| + | |- | ||
| + | |09 02 | ||
| + | |- | ||
| + | |81 02 | ||
| + | |- | ||
| + | |C0 | ||
| + | |- | ||
| + | |A1 02 | ||
| + | |- | ||
| + | |26 FF 00 | ||
| + | |- | ||
| + | |46 FF 00 | ||
| + | |- | ||
| + | |95 07 | ||
| + | |- | ||
| + | |75 08 | ||
| + | |- | ||
| + | |09 03 | ||
| + | |- | ||
| + | |91 02 | ||
| + | |- | ||
| + | |C0 | ||
| + | |- | ||
| + | |C0 | ||
| + | |} | ||
| + | | | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
| Line 380: | Line 508: | ||
|- | |- | ||
|End Collection | |End Collection | ||
| + | |} | ||
|} | |} | ||
Revision as of 10:46, 10 January 2015
This is a reverse engineering of the USB interface of the G27 when connected to a PS3.
Contents
Enumeration
Device descriptor
| bLength | 18 |
| bDescriptorType | DEVICE (0x01) |
| bcdUSB | 2.00 (0x0200) |
| bDeviceClass | Defined in Interface (0x00) |
| bDeviceSubClass | Defined in Interface (0x00) |
| bDeviceProtocol | Defined in Interface (0x00) |
| bMaxPacketSize0 | 16 |
| idVendor | 0x046d |
| idProduct | 0xc294 |
| bcdDevice | 12.38 (0x1238) |
| iManufacturer | None (0) |
| iProduct | Not Requested (2) |
| iSerialNumber | None (0) |
| bNumConfigurations | 1 |
Configuration descriptor
Configuration Descriptor
| bLength | 9 |
| bDescriptorType | CONFIGURATION (0x02) |
| wTotalLength | 41 |
| bNumInterfaces | 1 |
| bConfigurationValue | 1 |
| iConfiguration | None (0) |
| bmAttributes.Reserved | 0 |
| bmAttributes.RemoteWakeup | RemoteWakeup Not Supported (0b0) |
| bmAttributes.SelfPowered | Bus Powered (0b0) |
| bMaxPower | 98mA (0x31) |
Interface Descriptor
| bLength | 9 |
| bDescriptorType | INTERFACE (0x04) |
| bInterfaceNumber | 0 |
| bAlternateSetting | 0 |
| bNumEndpoints | 2 |
| bInterfaceClass | Human Interface Device (0x03) |
| bInterfaceSubClass | None (0x00) |
| bInterfaceProtocol | None (0x00) |
| iInterface | None (0) |
HID Descriptor
bLength 9| bDescriptorType | HID(33) |
| bcdHID | 1.00 (0x0100) |
| bCountryCode | 0x21 |
| bNumDescriptors | 1 |
| bDescriptorType | REPORT (34) |
| wDescriptorLength | 130 |
Endpoint Descriptor
| bLength | 7 |
| bDescriptorType | ENDPOINT (0x05) |
| bEndpointAddress | 1 IN (0b10000001) |
| bmAttributes.TransferType | Interrupt (0b11) |
| wMaxPacketSize.PacketSize | 8 |
| wMaxPacketSize.Transactions | One transaction per microframe if HS (0b00) |
| bInterval | 10 |
Endpoint Descriptor
| bLength | 7 |
| bDescriptorType | ENDPOINT (0x05) |
| bEndpointAddress | 1 OUT (0b00000001) |
| bmAttributes.TransferType | Interrupt (0b11) |
| wMaxPacketSize.PacketSize | 8 |
| wMaxPacketSize.Transactions | One transaction per microframe if HS (0b00) |
| bInterval | 10 |
Report descriptor
|
|
Get Reports (control endpoint)
FFB reports
Set Reports (control endpoint)
Interrupt IN report
| byte index | bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 |
| [0] | Wheel axis LSB (unsigned, min = 0, max = 0x03ff, center = 0x0200) | |||||||
| [1] | left shift | right shift | triangle | circle | rectangle | cross | Wheel axis MSB | |
| [2] | 1 | 0 | top-mid-bottom right | top-mid-bottom left | oxoo | ooxo | ooox | xooo |
| [3] | pedals (signed, center = 0x7f) | |||||||
| [4] | 1 | 0 | 0 | 0 | hat switch (Released=8, N=0, NE=1, E=2, SE=3, S=4, SW=5, W=6, NW=7) | |||
| [5-6] | 0xffff | |||||||
Interrupt OUT reports
TODO