Difference between revisions of "G27 PS3"
(→Report descriptor) |
(→Interrupt IN report) |
||
Line 535: | Line 535: | ||
|- | |- | ||
|[1] | |[1] | ||
− | |left shift | + | |left shift (l1) |
− | |right shift | + | |right shift (r1) |
− | |triangle | + | |triangle (up) |
− | |circle | + | |circle (right) |
− | |rectangle | + | |rectangle (down) |
− | |cross | + | |cross (left) |
|colspan="2"|Wheel axis MSB | |colspan="2"|Wheel axis MSB | ||
|- | |- | ||
Line 548: | Line 548: | ||
|top-mid-bottom right | |top-mid-bottom right | ||
|top-mid-bottom left | |top-mid-bottom left | ||
− | |oxoo | + | |oxoo (select) |
− | |ooxo | + | |ooxo (start) |
− | |ooox | + | |ooox (r3) |
− | |xooo | + | |xooo (l3) |
|- | |- | ||
|[3] | |[3] | ||
Line 561: | Line 561: | ||
|0 | |0 | ||
|0 | |0 | ||
− | |colspan="4"|hat switch (Released=8, N=0, NE=1, E=2, SE=3, S=4, SW=5, W=6, NW=7) | + | |colspan="4"|hat switch (D-Pad, Released=8, N=0, NE=1, E=2, SE=3, S=4, SW=5, W=6, NW=7) |
|- | |- | ||
|[5-6] | |[5-6] |
Revision as of 16:10, 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 9bDescriptorType | 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 (l1) | right shift (r1) | triangle (up) | circle (right) | rectangle (down) | cross (left) | Wheel axis MSB | |
[2] | 1 | 0 | top-mid-bottom right | top-mid-bottom left | oxoo (select) | ooxo (start) | ooox (r3) | xooo (l3) |
[3] | pedals (signed, center = 0x7f) | |||||||
[4] | 1 | 0 | 0 | 0 | hat switch (D-Pad, 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