linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Sony DualShock4 - basic functions work, but looking to improve support
@ 2013-12-07 17:52 simon
  2013-12-07 20:43 ` simon
  2013-12-09  0:51 ` simon
  0 siblings, 2 replies; 8+ messages in thread
From: simon @ 2013-12-07 17:52 UTC (permalink / raw)
  To: Linux Input; +Cc: Antonio Ospite

[-- Attachment #1: Type: text/plain, Size: 507 bytes --]

Hi all,
I wanted to report that basic functions of the DualShock4 work under Linux
(USB connected), but I'd like to work on it to get everything working -
like we have on the DualShock3.

Attached are a couple of logs and the report descriptor.

Haptic/Rumble does not work, even though I have my machine patched to make
DualShock3 work.

If we look at the hidraw stream there's a lot (64 bytes) more there!
--
$ hexdump -v -e '64/1 "%02x " "\n"' < /dev/hidraw0
--

Anyone here want to collaborate?
Simon



[-- Attachment #2: lsusb_vv.txt --]
[-- Type: text/plain, Size: 2355 bytes --]


Bus 003 Device 002: ID 054c:05c4 Sony Corp. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x054c Sony Corp.
  idProduct          0x05c4 
  bcdDevice            1.00
  iManufacturer           1 Sony Computer Entertainment
  iProduct                2 Wireless Controller
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           41
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     467
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               5
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               5
Device Status:     0x0000
  (Bus Powered)

[-- Attachment #3: des.code --]
[-- Type: application/octet-stream, Size: 14490 bytes --]

0x05, 0x01,         /*  Usage Page (Desktop),               */
0x09, 0x05,         /*  Usage (Gamepad),                    */
0xA1, 0x01,         /*  Collection (Application),           */
0x85, 0x01,         /*      Report ID (1),                  */
0x09, 0x30,         /*      Usage (X),                      */
0x09, 0x31,         /*      Usage (Y),                      */
0x09, 0x32,         /*      Usage (Z),                      */
0x09, 0x35,         /*      Usage (Rz),                     */
0x15, 0x00,         /*      Logical Minimum (0),            */
0x26, 0xFF, 0x00,   /*      Logical Maximum (255),          */
0x75, 0x08,         /*      Report Size (8),                */
0x95, 0x04,         /*      Report Count (4),               */
0x81, 0x02,         /*      Input (Variable),               */
0x09, 0x39,         /*      Usage (Hat Switch),             */
0x15, 0x00,         /*      Logical Minimum (0),            */
0x25, 0x07,         /*      Logical Maximum (7),            */
0x35, 0x00,         /*      Physical Minimum (0),           */
0x46, 0x3B, 0x01,   /*      Physical Maximum (315),         */
0x65, 0x14,         /*      Unit (Degrees),                 */
0x75, 0x04,         /*      Report Size (4),                */
0x95, 0x01,         /*      Report Count (1),               */
0x81, 0x42,         /*      Input (Variable, Null State),   */
0x65, 0x00,         /*      Unit,                           */
0x05, 0x09,         /*      Usage Page (Button),            */
0x19, 0x01,         /*      Usage Minimum (01h),            */
0x29, 0x0E,         /*      Usage Maximum (0Eh),            */
0x15, 0x00,         /*      Logical Minimum (0),            */
0x25, 0x01,         /*      Logical Maximum (1),            */
0x75, 0x01,         /*      Report Size (1),                */
0x95, 0x0E,         /*      Report Count (14),              */
0x81, 0x02,         /*      Input (Variable),               */
0x06, 0x00, 0xFF,   /*      Usage Page (FF00h),             */
0x09, 0x20,         /*      Usage (20h),                    */
0x75, 0x06,         /*      Report Size (6),                */
0x95, 0x01,         /*      Report Count (1),               */
0x15, 0x00,         /*      Logical Minimum (0),            */
0x25, 0x7F,         /*      Logical Maximum (127),          */
0x81, 0x02,         /*      Input (Variable),               */
0x05, 0x01,         /*      Usage Page (Desktop),           */
0x09, 0x33,         /*      Usage (Rx),                     */
0x09, 0x34,         /*      Usage (Ry),                     */
0x15, 0x00,         /*      Logical Minimum (0),            */
0x26, 0xFF, 0x00,   /*      Logical Maximum (255),          */
0x75, 0x08,         /*      Report Size (8),                */
0x95, 0x02,         /*      Report Count (2),               */
0x81, 0x02,         /*      Input (Variable),               */
0x06, 0x00, 0xFF,   /*      Usage Page (FF00h),             */
0x09, 0x21,         /*      Usage (21h),                    */
0x95, 0x36,         /*      Report Count (54),              */
0x81, 0x02,         /*      Input (Variable),               */
0x85, 0x05,         /*      Report ID (5),                  */
0x09, 0x22,         /*      Usage (22h),                    */
0x95, 0x1F,         /*      Report Count (31),              */
0x91, 0x02,         /*      Output (Variable),              */
0x85, 0x04,         /*      Report ID (4),                  */
0x09, 0x23,         /*      Usage (23h),                    */
0x95, 0x24,         /*      Report Count (36),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x02,         /*      Report ID (2),                  */
0x09, 0x24,         /*      Usage (24h),                    */
0x95, 0x24,         /*      Report Count (36),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x08,         /*      Report ID (8),                  */
0x09, 0x25,         /*      Usage (25h),                    */
0x95, 0x03,         /*      Report Count (3),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x10,         /*      Report ID (16),                 */
0x09, 0x26,         /*      Usage (26h),                    */
0x95, 0x04,         /*      Report Count (4),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x11,         /*      Report ID (17),                 */
0x09, 0x27,         /*      Usage (27h),                    */
0x95, 0x02,         /*      Report Count (2),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x12,         /*      Report ID (18),                 */
0x06, 0x02, 0xFF,   /*      Usage Page (FF02h),             */
0x09, 0x21,         /*      Usage (21h),                    */
0x95, 0x0F,         /*      Report Count (15),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x13,         /*      Report ID (19),                 */
0x09, 0x22,         /*      Usage (22h),                    */
0x95, 0x16,         /*      Report Count (22),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x14,         /*      Report ID (20),                 */
0x06, 0x05, 0xFF,   /*      Usage Page (FF05h),             */
0x09, 0x20,         /*      Usage (20h),                    */
0x95, 0x10,         /*      Report Count (16),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x15,         /*      Report ID (21),                 */
0x09, 0x21,         /*      Usage (21h),                    */
0x95, 0x2C,         /*      Report Count (44),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x06, 0x80, 0xFF,   /*      Usage Page (FF80h),             */
0x85, 0x80,         /*      Report ID (128),                */
0x09, 0x20,         /*      Usage (20h),                    */
0x95, 0x06,         /*      Report Count (6),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x81,         /*      Report ID (129),                */
0x09, 0x21,         /*      Usage (21h),                    */
0x95, 0x06,         /*      Report Count (6),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x82,         /*      Report ID (130),                */
0x09, 0x22,         /*      Usage (22h),                    */
0x95, 0x05,         /*      Report Count (5),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x83,         /*      Report ID (131),                */
0x09, 0x23,         /*      Usage (23h),                    */
0x95, 0x01,         /*      Report Count (1),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x84,         /*      Report ID (132),                */
0x09, 0x24,         /*      Usage (24h),                    */
0x95, 0x04,         /*      Report Count (4),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x85,         /*      Report ID (133),                */
0x09, 0x25,         /*      Usage (25h),                    */
0x95, 0x06,         /*      Report Count (6),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x86,         /*      Report ID (134),                */
0x09, 0x26,         /*      Usage (26h),                    */
0x95, 0x06,         /*      Report Count (6),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x87,         /*      Report ID (135),                */
0x09, 0x27,         /*      Usage (27h),                    */
0x95, 0x23,         /*      Report Count (35),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x88,         /*      Report ID (136),                */
0x09, 0x28,         /*      Usage (28h),                    */
0x95, 0x22,         /*      Report Count (34),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x89,         /*      Report ID (137),                */
0x09, 0x29,         /*      Usage (29h),                    */
0x95, 0x02,         /*      Report Count (2),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x90,         /*      Report ID (144),                */
0x09, 0x30,         /*      Usage (30h),                    */
0x95, 0x05,         /*      Report Count (5),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x91,         /*      Report ID (145),                */
0x09, 0x31,         /*      Usage (31h),                    */
0x95, 0x03,         /*      Report Count (3),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x92,         /*      Report ID (146),                */
0x09, 0x32,         /*      Usage (32h),                    */
0x95, 0x03,         /*      Report Count (3),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x93,         /*      Report ID (147),                */
0x09, 0x33,         /*      Usage (33h),                    */
0x95, 0x0C,         /*      Report Count (12),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA0,         /*      Report ID (160),                */
0x09, 0x40,         /*      Usage (40h),                    */
0x95, 0x06,         /*      Report Count (6),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA1,         /*      Report ID (161),                */
0x09, 0x41,         /*      Usage (41h),                    */
0x95, 0x01,         /*      Report Count (1),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA2,         /*      Report ID (162),                */
0x09, 0x42,         /*      Usage (42h),                    */
0x95, 0x01,         /*      Report Count (1),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA3,         /*      Report ID (163),                */
0x09, 0x43,         /*      Usage (43h),                    */
0x95, 0x30,         /*      Report Count (48),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA4,         /*      Report ID (164),                */
0x09, 0x44,         /*      Usage (44h),                    */
0x95, 0x0D,         /*      Report Count (13),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA5,         /*      Report ID (165),                */
0x09, 0x45,         /*      Usage (45h),                    */
0x95, 0x15,         /*      Report Count (21),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA6,         /*      Report ID (166),                */
0x09, 0x46,         /*      Usage (46h),                    */
0x95, 0x15,         /*      Report Count (21),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xF0,         /*      Report ID (240),                */
0x09, 0x47,         /*      Usage (47h),                    */
0x95, 0x3F,         /*      Report Count (63),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xF1,         /*      Report ID (241),                */
0x09, 0x48,         /*      Usage (48h),                    */
0x95, 0x3F,         /*      Report Count (63),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xF2,         /*      Report ID (242),                */
0x09, 0x49,         /*      Usage (49h),                    */
0x95, 0x0F,         /*      Report Count (15),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA7,         /*      Report ID (167),                */
0x09, 0x4A,         /*      Usage (4Ah),                    */
0x95, 0x01,         /*      Report Count (1),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA8,         /*      Report ID (168),                */
0x09, 0x4B,         /*      Usage (4Bh),                    */
0x95, 0x01,         /*      Report Count (1),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA9,         /*      Report ID (169),                */
0x09, 0x4C,         /*      Usage (4Ch),                    */
0x95, 0x08,         /*      Report Count (8),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xAA,         /*      Report ID (170),                */
0x09, 0x4E,         /*      Usage (4Eh),                    */
0x95, 0x01,         /*      Report Count (1),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xAB,         /*      Report ID (171),                */
0x09, 0x4F,         /*      Usage (4Fh),                    */
0x95, 0x39,         /*      Report Count (57),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xAC,         /*      Report ID (172),                */
0x09, 0x50,         /*      Usage (50h),                    */
0x95, 0x39,         /*      Report Count (57),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xAD,         /*      Report ID (173),                */
0x09, 0x51,         /*      Usage (51h),                    */
0x95, 0x0B,         /*      Report Count (11),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xAE,         /*      Report ID (174),                */
0x09, 0x52,         /*      Usage (52h),                    */
0x95, 0x01,         /*      Report Count (1),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xAF,         /*      Report ID (175),                */
0x09, 0x53,         /*      Usage (53h),                    */
0x95, 0x02,         /*      Report Count (2),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xB0,         /*      Report ID (176),                */
0x09, 0x54,         /*      Usage (54h),                    */
0x95, 0x3F,         /*      Report Count (63),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0xC0                /*  End Collection                      */

[-- Attachment #4: des.bin --]
[-- Type: application/octet-stream, Size: 467 bytes --]

[-- Attachment #5: jstest.txt --]
[-- Type: text/plain, Size: 1021 bytes --]

Driver version is 2.1.0.
Joystick (Sony Computer Entertainment Wireless Controller) has 8 axes (X, Y, Z, Rx, Ry, Rz, Hat0X, Hat0Y)
and 14 buttons (BtnX, BtnY, BtnZ, BtnTL, BtnTR, BtnTL2, BtnTR2, BtnSelect, BtnStart, BtnMode, BtnThumbL, BtnThumbR, ?, ?).
Testing ... (interrupt to exit)
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:off 11:off 12:off 13:off

Axes:  
0:     0  L-Thumbstick X (left -ve)
1:     0  L-Thumbstick Y (up -ve)
2:     0  R-Thumbstick X (left -ve)
3:     0  L-Trigger (released -ve)
4:     0  R-Trigger (released -ve)
5:     0  R-Thumbstick Y (up -ve)
6:     0  D-Pad X (left -ve)
7:     0  D-Pad Y (up -ve)
Buttons:  
0:off  Square
1:off  Cross
2:off  Circle
3:off  Triangle
4:off  L1 (Shoulder)
5:off  R1 (Shoulder)
6:off  L2 (Trigger) - also axis
7:off  R2 (Trigger) - also axis
8:off  Share
9:off  Options
10:off L-Thumbstick
11:off R-Thumbstick
12:off PS
13:off TouchPad

[-- Attachment #6: syslog.txt --]
[-- Type: text/plain, Size: 1216 bytes --]

Dec  7 09:59:31 womble kernel: [  190.548071] usb 3-2: new full-speed USB device number 2 using uhci_hcd
Dec  7 09:59:31 womble kernel: [  190.723988] usb 3-2: New USB device found, idVendor=054c, idProduct=05c4
Dec  7 09:59:31 womble kernel: [  190.724001] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Dec  7 09:59:31 womble kernel: [  190.724039] usb 3-2: Product: Wireless Controller
Dec  7 09:59:31 womble kernel: [  190.724049] usb 3-2: Manufacturer: Sony Computer Entertainment
Dec  7 09:59:32 womble mtp-probe: checking bus 3, device 2: "/sys/devices/pci0000:00/0000:00:1d.1/usb3/3-2"
Dec  7 09:59:32 womble mtp-probe: bus: 3, device: 2 was not an MTP device
Dec  7 09:59:32 womble kernel: [  191.302128] usbcore: registered new interface driver usbhid
Dec  7 09:59:32 womble kernel: [  191.302135] usbhid: USB HID core driver
Dec  7 09:59:32 womble kernel: [  191.397030] input: Sony Computer Entertainment Wireless Controller as /devices/pci0000:00/0000:00:1d.1/usb3/3-2/3-2:1.0/input/input7
Dec  7 09:59:32 womble kernel: [  191.397438] hid-generic 0003:054C:05C4.0001: input,hidraw0: USB HID v1.11 Gamepad [Sony Computer Entertainment Wireless Controller] on usb-0000:00:1d.1-2/input0

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-01-14 20:30 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-07 17:52 Sony DualShock4 - basic functions work, but looking to improve support simon
2013-12-07 20:43 ` simon
2013-12-08 14:41   ` David Herrmann
2013-12-11 15:00     ` Jiri Kosina
2013-12-09  0:51 ` simon
2013-12-09  9:05   ` David Herrmann
2013-12-10  2:50     ` simon
2014-01-14 20:30       ` simon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).