linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: simon@mungewell.org
To: Frank Praznik <frank.praznik@oh.rr.com>
Cc: David Herrmann <dh.herrmann@gmail.com>,
	Linux Input <linux-input@vger.kernel.org>,
	Antonio Ospite <ospite@studenti.unina.it>
Subject: Re: Sony DualShock4 - basic functions work, but looking to improve support
Date: Tue, 14 Jan 2014 15:30:22 -0500	[thread overview]
Message-ID: <1bf55e83485cccae179a9ad21a85db56.squirrel@mungewell.org> (raw)
In-Reply-To: <7f868cfea581a565001fe18bb08b8abb.squirrel@mungewell.org>

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

>> The report descriptor actually describes a lot more report-IDs than
>> just "0x01" which you describe in hidraw.txt. Are you sure the
>> report-descriptors are the same for USB and BT?
>
> The report descriptor when connected via BT is different, or at least what
> I found at '/sys/bus/hid/devices/0005\:054C\:05C4.0006/report_descriptor'.
>
> Unfortunately I wasn't able to decode it.
> --
> simon@womble:~/dualshock4$ ~/hidrd-0.2.0/src/hidrd-convert des_bt.bin -o
> code
> Failed to read input item at offset 356:
> invalid item encountered
> --

After playing some more with the DS4, I noticed the comment in
'hid-sony.c' that the six-axis adds a trailing zero to it's HID... which
this file has too.

So it actually works after truncating it, see attached.
Simon

[-- Attachment #2: des_bt.txt --]
[-- Type: text/plain, Size: 10835 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),            */
0x75, 0x04,         /*      Report Size (4),                */
0x95, 0x01,         /*      Report Count (1),               */
0x81, 0x42,         /*      Input (Variable, Null State),   */
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),               */
0x75, 0x06,         /*      Report Size (6),                */
0x95, 0x01,         /*      Report Count (1),               */
0x81, 0x01,         /*      Input (Constant),               */
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, 0x04, 0xFF,   /*      Usage Page (FF04h),             */
0x85, 0x02,         /*      Report ID (2),                  */
0x09, 0x24,         /*      Usage (24h),                    */
0x95, 0x24,         /*      Report Count (36),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA3,         /*      Report ID (163),                */
0x09, 0x25,         /*      Usage (25h),                    */
0x95, 0x30,         /*      Report Count (48),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x05,         /*      Report ID (5),                  */
0x09, 0x26,         /*      Usage (26h),                    */
0x95, 0x28,         /*      Report Count (40),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x06,         /*      Report ID (6),                  */
0x09, 0x27,         /*      Usage (27h),                    */
0x95, 0x34,         /*      Report Count (52),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x07,         /*      Report ID (7),                  */
0x09, 0x28,         /*      Usage (28h),                    */
0x95, 0x30,         /*      Report Count (48),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x08,         /*      Report ID (8),                  */
0x09, 0x29,         /*      Usage (29h),                    */
0x95, 0x2F,         /*      Report Count (47),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x06, 0x03, 0xFF,   /*      Usage Page (FF03h),             */
0x85, 0x03,         /*      Report ID (3),                  */
0x09, 0x21,         /*      Usage (21h),                    */
0x95, 0x26,         /*      Report Count (38),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x04,         /*      Report ID (4),                  */
0x09, 0x22,         /*      Usage (22h),                    */
0x95, 0x2E,         /*      Report Count (46),              */
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),             */
0x06, 0x00, 0xFF,   /*      Usage Page (FF00h),             */
0x85, 0x11,         /*      Report ID (17),                 */
0x09, 0x20,         /*      Usage (20h),                    */
0x15, 0x00,         /*      Logical Minimum (0),            */
0x26, 0xFF, 0x00,   /*      Logical Maximum (255),          */
0x75, 0x08,         /*      Report Size (8),                */
0x95, 0x4D,         /*      Report Count (77),              */
0x81, 0x02,         /*      Input (Variable),               */
0x09, 0x21,         /*      Usage (21h),                    */
0x91, 0x02,         /*      Output (Variable),              */
0x85, 0x12,         /*      Report ID (18),                 */
0x09, 0x22,         /*      Usage (22h),                    */
0x95, 0x8D,         /*      Report Count (141),             */
0x81, 0x02,         /*      Input (Variable),               */
0x09, 0x23,         /*      Usage (23h),                    */
0x91, 0x02,         /*      Output (Variable),              */
0x85, 0x13,         /*      Report ID (19),                 */
0x09, 0x24,         /*      Usage (24h),                    */
0x95, 0xCD,         /*      Report Count (205),             */
0x81, 0x02,         /*      Input (Variable),               */
0x09, 0x25,         /*      Usage (25h),                    */
0x91, 0x02,         /*      Output (Variable),              */
0x85, 0x14,         /*      Report ID (20),                 */
0x09, 0x26,         /*      Usage (26h),                    */
0x96, 0x0D, 0x01,   /*      Report Count (269),             */
0x81, 0x02,         /*      Input (Variable),               */
0x09, 0x27,         /*      Usage (27h),                    */
0x91, 0x02,         /*      Output (Variable),              */
0x85, 0x15,         /*      Report ID (21),                 */
0x09, 0x28,         /*      Usage (28h),                    */
0x96, 0x4D, 0x01,   /*      Report Count (333),             */
0x81, 0x02,         /*      Input (Variable),               */
0x09, 0x29,         /*      Usage (29h),                    */
0x91, 0x02,         /*      Output (Variable),              */
0x85, 0x16,         /*      Report ID (22),                 */
0x09, 0x2A,         /*      Usage (2Ah),                    */
0x96, 0x8D, 0x01,   /*      Report Count (397),             */
0x81, 0x02,         /*      Input (Variable),               */
0x09, 0x2B,         /*      Usage (2Bh),                    */
0x91, 0x02,         /*      Output (Variable),              */
0x85, 0x17,         /*      Report ID (23),                 */
0x09, 0x2C,         /*      Usage (2Ch),                    */
0x96, 0xCD, 0x01,   /*      Report Count (461),             */
0x81, 0x02,         /*      Input (Variable),               */
0x09, 0x2D,         /*      Usage (2Dh),                    */
0x91, 0x02,         /*      Output (Variable),              */
0x85, 0x18,         /*      Report ID (24),                 */
0x09, 0x2E,         /*      Usage (2Eh),                    */
0x96, 0x0D, 0x02,   /*      Report Count (525),             */
0x81, 0x02,         /*      Input (Variable),               */
0x09, 0x2F,         /*      Usage (2Fh),                    */
0x91, 0x02,         /*      Output (Variable),              */
0x85, 0x19,         /*      Report ID (25),                 */
0x09, 0x30,         /*      Usage (30h),                    */
0x96, 0x22, 0x02,   /*      Report Count (546),             */
0x81, 0x02,         /*      Input (Variable),               */
0x09, 0x31,         /*      Usage (31h),                    */
0x91, 0x02,         /*      Output (Variable),              */
0x06, 0x80, 0xFF,   /*      Usage Page (FF80h),             */
0x85, 0x82,         /*      Report ID (130),                */
0x09, 0x22,         /*      Usage (22h),                    */
0x95, 0x3F,         /*      Report Count (63),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x83,         /*      Report ID (131),                */
0x09, 0x23,         /*      Usage (23h),                    */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x84,         /*      Report ID (132),                */
0x09, 0x24,         /*      Usage (24h),                    */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x90,         /*      Report ID (144),                */
0x09, 0x30,         /*      Usage (30h),                    */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x91,         /*      Report ID (145),                */
0x09, 0x31,         /*      Usage (31h),                    */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x92,         /*      Report ID (146),                */
0x09, 0x32,         /*      Usage (32h),                    */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x93,         /*      Report ID (147),                */
0x09, 0x33,         /*      Usage (33h),                    */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA0,         /*      Report ID (160),                */
0x09, 0x40,         /*      Usage (40h),                    */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA4,         /*      Report ID (164),                */
0x09, 0x44,         /*      Usage (44h),                    */
0xB1, 0x02,         /*      Feature (Variable),             */
0xC0                /*  End Collection                      */

      reply	other threads:[~2014-01-14 20:30 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1bf55e83485cccae179a9ad21a85db56.squirrel@mungewell.org \
    --to=simon@mungewell.org \
    --cc=dh.herrmann@gmail.com \
    --cc=frank.praznik@oh.rr.com \
    --cc=linux-input@vger.kernel.org \
    --cc=ospite@studenti.unina.it \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).