Re: Trouble parsing HID reports from PDP PS4 remote

2 messages, 2 authors, 2021-12-20 · open the first message on its own page

Re: Trouble parsing HID reports from PDP PS4 remote

From: Benjamin Tissoires <hidden>
Date: 2021-12-20 19:02:25

On Mon, Dec 20, 2021 at 7:04 PM Jeremy Slemp [off-list ref] wrote:
On Mon, Dec 20, 2021 at 6:44 AM Benjamin Tissoires
[off-list ref] wrote:
quoted
Basically, we might need to add support for this remote in the hid-sony
driver.

Can you attach the full output of hid-recorder (from the hid-tools[3]
repository) when you press all of these buttons?

This should give us enough information to reply the event sequence
locally and fix the drivers if we need.
Sure thing!

The remote looks like this:
https://www.pdp.com/universal-media-remote-for-playstationr4

hid-recorder output:
Thanks for the logs (though your email client mangled the long lines,
but not an issue TBH).

So this device is not known to the HID stack nor hid-sony or hid-playstation.
We will need to add a special case in one of those 2 drivers because
as you realized, the way these keys are used is not standard.

But I'd like to compare these logs to the PS5 remote that I have here.
Maybe the proprietary fields 0xff000021 is something common in the
PS4/PS5 world.

Also, what happens if you press 2 "special" keys at the same time
(pause and enter for example)?

However, I can not promise I'll work on that tomorrow. And then I'll
take a year end break.

If you don't see anything coming from me tomorrow or in early January,
feel free to re-raise this thread.

Cheers,
Benjamin
# PDP Media Remote
# 0x05, 0x01,                    // Usage Page (Generic Desktop)        0
# 0x09, 0x05,                    // Usage (Game Pad)                    2
# 0xa1, 0x01,                    // Collection (Application)            4
# 0x85, 0x01,                    //  Report ID (1)                      6
# 0x09, 0x39,                    //  Usage (Hat switch)                 8
# 0x15, 0x00,                    //  Logical Minimum (0)                10
# 0x25, 0x07,                    //  Logical Maximum (7)                12
# 0x35, 0x00,                    //  Physical Minimum (0)               14
# 0x46, 0x3b, 0x01,              //  Physical Maximum (315)             16
# 0x65, 0x14,                    //  Unit (EnglishRotation: deg)        19
# 0x75, 0x04,                    //  Report Size (4)                    21
# 0x95, 0x01,                    //  Report Count (1)                   23
# 0x81, 0x42,                    //  Input (Data,Var,Abs,Null)          25
# 0x65, 0x00,                    //  Unit (None)                        27
# 0x05, 0x09,                    //  Usage Page (Button)                29
# 0x19, 0x01,                    //  Usage Minimum (1)                  31
# 0x29, 0x0e,                    //  Usage Maximum (14)                 33
# 0x15, 0x00,                    //  Logical Minimum (0)                35
# 0x25, 0x01,                    //  Logical Maximum (1)                37
# 0x75, 0x01,                    //  Report Size (1)                    39
# 0x95, 0x0e,                    //  Report Count (14)                  41
# 0x81, 0x02,                    //  Input (Data,Var,Abs)               43
# 0x06, 0x00, 0xff,              //  Usage Page (Vendor Defined Page 1) 45
# 0x09, 0x20,                    //  Usage (Vendor Usage 0x20)          48
# 0x75, 0x06,                    //  Report Size (6)                    50
# 0x95, 0x01,                    //  Report Count (1)                   52
# 0x81, 0x02,                    //  Input (Data,Var,Abs)               54
# 0x06, 0x00, 0xff,              //  Usage Page (Vendor Defined Page 1) 56
# 0x09, 0x21,                    //  Usage (Vendor Usage 0x21)          59
# 0x75, 0x08,                    //  Report Size (8)                    61
# 0x95, 0x06,                    //  Report Count (6)                   63
# 0x81, 0x02,                    //  Input (Data,Var,Abs)               65
# 0x85, 0x03,                    //  Report ID (3)                      67
# 0x0a, 0x83, 0xa7,              //  Usage (Vendor Usage 0xa783)        69
# 0x95, 0x09,                    //  Report Count (9)                   72
# 0xb1, 0x02,                    //  Feature (Data,Var,Abs)             74
# 0xc0,                          // End Collection                      76
# 0x06, 0xf0, 0xff,              // Usage Page (Vendor Usage Page 0xfff0) 77

249 more quoted lines

Re: Trouble parsing HID reports from PDP PS4 remote

From: Jeremy Slemp <hidden>
Date: 2021-12-20 19:22:46

 On Mon, Dec 20, 2021 at 11:02 AM Benjamin Tissoires
[off-list ref] wrote:
quoted
The remote looks like this:
https://www.pdp.com/universal-media-remote-for-playstationr4

hid-recorder output:
Thanks for the logs (though your email client mangled the long lines,
but not an issue TBH).
Also I forgot to reply-to-list.  For anyone who missed it, the
hid-recorder output is here: https://pastebin.com/8nKdtMT8
So this device is not known to the HID stack nor hid-sony or hid-playstation.
We will need to add a special case in one of those 2 drivers because
as you realized, the way these keys are used is not standard.

But I'd like to compare these logs to the PS5 remote that I have here.
Maybe the proprietary fields 0xff000021 is something common in the
PS4/PS5 world.

Also, what happens if you press 2 "special" keys at the same time
(pause and enter for example)?
For this trace I held down pause, pressed enter, then released both at
the same time:

# ReportID: 1 / Hat switch:   8 | Button: 0  0  0  0  0  0  0  0  0  0
 0  0  0  0 | 0xff000020:   0 | 0xff000021:    6 ,   26 ,   60 ,  193
,  164 ,   44
E: 000014.302803 10 01 08 00 00 06 1a 3c c1 a4 2c
# ReportID: 1 / Hat switch:   8 | Button: 0  0  0  0  0  0  0  0  0  0
 0  0  0  0 | 0xff000020:   0 | 0xff000021:    6 ,   13 ,  251 ,   68
,  119 ,  175
E: 000015.312809 10 01 08 00 00 06 0d fb 44 77 af
# ReportID: 1 / Hat switch:   8 | Button: 0  0  0  0  0  0  0  0  0  0
 0  0  0  0 | 0xff000020:   0 | 0xff000021:    6 ,   13 ,  251 ,   68
,  119 ,  175
E: 000016.475376 10 01 08 00 00 06 0d fb 44 77 af
# ReportID: 1 / Hat switch:   8 | Button: 0  0  0  0  0  0  0  0  0  0
 0  0  0  0 | 0xff000020:   0 | 0xff000021:    6 ,    0 ,   70 ,   56
,  198 ,  209
E: 000016.510310 10 01 08 00 00 06 00 46 38 c6 d1

For this trace I held down pause, held down enter, released enter,
released pause:

# ReportID: 1 / Hat switch:   8 | Button: 0  0  0  0  0  0  0  0  0  0
 0  0  0  0 | 0xff000020:   0 | 0xff000021:    7 ,   26 ,  125 ,  240
,  191 ,   53
E: 000455.969112 10 01 08 00 00 07 1a 7d f0 bf 35
# ReportID: 1 / Hat switch:   8 | Button: 0  0  0  0  0  0  0  0  0  0
 0  0  0  0 | 0xff000020:   0 | 0xff000021:    7 ,   13 ,  186 ,  117
,  108 ,  182
E: 000456.328187 10 01 08 00 00 07 0d ba 75 6c b6
# ReportID: 1 / Hat switch:   8 | Button: 0  0  0  0  0  0  0  0  0  0
 0  0  0  0 | 0xff000020:   0 | 0xff000021:    7 ,   26 ,  125 ,  240
,  191 ,   53
E: 000457.236997 10 01 08 00 00 07 1a 7d f0 bf 35
# ReportID: 1 / Hat switch:   8 | Button: 0  0  0  0  0  0  0  0  0  0
 0  0  0  0 | 0xff000020:   0 | 0xff000021:    7 ,    0 ,    7 ,    9
,  221 ,  200
E: 000457.629132 10 01 08 00 00 07 00 07 09 dd c8

80 more lines

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help