G27 PS3

From GIMX

Revision as of 16:10, 10 January 2015 by Matlo (talk | contribs) (Interrupt IN report)

Jump to: navigation, search

This is a reverse engineering of the USB interface of the G27 when connected to a PS3.

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

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
Usage Page Generic Desktop Controls (0x01)
Usage Joystick (0x04)
Collection Application (0x01)
Collection Logical (0x02)
Report Count 1
Report Size 10
Logical Minimum 0
Logical Maximum 1023
Physical Minimum 0
Physical Maximum 1023
Usage X (0x30)
Input Data (0x02)
Report Count 12
Report Size 1
Logical Maximum 1
Physical Maximum 1
Usage Page Button (0x09)
Usage Minimum Button 1 (primary/trigger) (0x01)
Usage Maximum Button 12 (0x0c)
Input Data (0x02)
Report Count 2
Usage Page Vendor-defined (0xff00)
Usage Undefined (0x01)
Input Data (0x02)
Usage Page Generic Desktop Controls (0x01)
Usage Y (0x31)
Logical Maximum 255
Physical Maximum 255
Report Count 1
Report Size 8
Input Data (0x02)
Logical Maximum 7
Physical Maximum 315
Report Size 4
Unit 20
Usage Hat switch (0x39)
Input Data (0x42)
Report Size 1
Report Count 4
Unit 0
Usage Page Vendor-defined (0xff00)
Usage Undefined (0x01)
Logical Maximum 1
Physical Maximum 1
Input Data (0x02)
Report Count 2
Report Size 8
Logical Maximum 255
Physical Maximum 255
Usage Undefined (0x02)
Input Data (0x02)
End Collection
Collection Logical (0x02)
Logical Maximum 255
Physical Maximum 255
Report Count 7
Report Size 8
Usage Undefined (0x03)
Output Data (0x02)
End Collection
End Collection

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