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 # 0x09, 0x40, // Usage (Vendor Usage 0x40) 80 # 0xa1, 0x01, // Collection (Application) 82 # 0x85, 0xf0, // Report ID (240) 84 # 0x09, 0x47, // Usage (Vendor Usage 0x47) 86 # 0x95, 0x3f, // Report Count (63) 88 # 0xb1, 0x02, // Feature (Data,Var,Abs) 90 # 0x85, 0xf1, // Report ID (241) 92 # 0x09, 0x48, // Usage (Vendor Usage 0x48) 94 # 0x95, 0x3f, // Report Count (63) 96 # 0xb1, 0x02, // Feature (Data,Var,Abs) 98 # 0x85, 0xf2, // Report ID (242) 100 # 0x09, 0x49, // Usage (Vendor Usage 0x49) 102 # 0x95, 0x0f, // Report Count (15) 104 # 0xb1, 0x02, // Feature (Data,Var,Abs) 106 # 0x85, 0xf3, // Report ID (243) 108 # 0x0a, 0x01, 0x47, // Usage (Vendor Usage 0x4701) 110 # 0x95, 0x07, // Report Count (7) 113 # 0xb1, 0x02, // Feature (Data,Var,Abs) 115 # 0xc0, // End Collection 117 # R: 118 05 01 09 05 a1 01 85 01 09 39 15 00 25 07 35 00 46 3b 01 65 14 75 04 95 01 81 42 65 00 05 09 19 01 29 0e 15 00 25 01 75 01 95 0e 81 02 06 00 ff 09 20 75 06 95 01 81 02 06 00 ff 09 21 75 08 95 06 81 02 85 03 0a 83 a7 95 09 b1 02 c0 06 f0 ff 09 40 a1 01 85 f0 09 47 95 3f b1 02 85 f1 09 48 95 3f b1 02 85 f2 09 49 95 0f b1 02 85 f3 0a 01 47 95 07 b1 02 c0 N: PDP Media Remote I: 5 0e6f 026f # SHARE button # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 1 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 87 , 66 , 92 , 31 E: 000000.000000 10 01 08 10 00 08 00 57 42 5c 1f # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000000.109914 10 01 08 00 00 08 00 c8 15 45 4f # PS button # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 1 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 255 , 127 , 135 , 78 E: 000002.969989 10 01 08 00 01 08 00 ff 7f 87 4e # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000003.104971 10 01 08 00 00 08 00 c8 15 45 4f # OPTIONS button # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 1 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 246 , 186 , 119 , 239 E: 000007.166328 10 01 08 20 00 08 00 f6 ba 77 ef # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000007.249842 10 01 08 00 00 08 00 c8 15 45 4f # GREEN TRIANGLE button # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 90 , 165 , 163 , 254 E: 000018.495012 10 01 88 00 00 08 00 5a a5 a3 fe # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000018.604996 10 01 08 00 00 08 00 c8 15 45 4f # PINK SQUARE button # ReportID: 1 / Hat switch: 8 | Button: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 74 , 130 , 165 , 47 E: 000024.672577 10 01 18 00 00 08 00 4a 82 a5 2f # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000024.806348 10 01 08 00 00 08 00 c8 15 45 4f # ORANGE CIRCLE button # ReportID: 1 / Hat switch: 8 | Button: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 129 , 77 , 182 , 23 E: 000030.346442 10 01 48 00 00 08 00 81 4d b6 17 # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000030.480160 10 01 08 00 00 08 00 c8 15 45 4f # BLUE X button # ReportID: 1 / Hat switch: 8 | Button: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 204 , 58 , 132 , 142 E: 000040.002823 10 01 28 00 00 08 00 cc 3a 84 8e # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000040.090307 10 01 08 00 00 08 00 c8 15 45 4f # L1 button # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 1 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 173 , 114 , 249 , 247 E: 000045.415425 10 01 08 01 00 08 00 ad 72 f9 f7 # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000045.525646 10 01 08 00 00 08 00 c8 15 45 4f # R1 button # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 1 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 67 , 221 , 76 , 229 E: 000050.470479 10 01 08 02 00 08 00 43 dd 4c e5 # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000050.605489 10 01 08 00 00 08 00 c8 15 45 4f # L2 button # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 159 , 130 , 39 , 192 E: 000057.000593 10 01 08 04 00 08 00 9f 82 27 c0 # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000057.083079 10 01 08 00 00 08 00 c8 15 45 4f # R2 button # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 39 , 61 , 241 , 138 E: 000061.636954 10 01 08 08 00 08 00 27 3d f1 8a # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000061.770649 10 01 08 00 00 08 00 c8 15 45 4f # UP ARROW button # ReportID: 1 / Hat switch: 0 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 9 , 94 , 53 , 127 E: 000068.154519 10 01 00 00 00 08 00 09 5e 35 7f # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000068.363248 10 01 08 00 00 08 00 c8 15 45 4f # LEFT ARROW button # ReportID: 1 / Hat switch: 6 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 169 , 171 , 117 , 240 E: 000074.187110 10 01 06 00 00 08 00 a9 ab 75 f0 # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000074.348488 10 01 08 00 00 08 00 c8 15 45 4f # RIGHT ARROW button # ReportID: 1 / Hat switch: 2 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 105 , 13 , 245 , 5 E: 000080.271228 10 01 02 00 00 08 00 69 0d f5 05 # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000080.406201 10 01 08 00 00 08 00 c8 15 45 4f # DOWN ARROW button # ReportID: 1 / Hat switch: 4 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 201 , 248 , 181 , 138 E: 000085.132491 10 01 04 00 00 08 00 c9 f8 b5 8a # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000085.291313 10 01 08 00 00 08 00 c8 15 45 4f # ENTER button # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 13 , 117 , 105 , 244 , 49 E: 000089.456381 10 01 08 00 00 08 0d 75 69 f4 31 # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000089.591371 10 01 08 00 00 08 00 c8 15 45 4f # REWIND button # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 23 , 15 , 144 , 150 , 204 E: 000095.587712 10 01 08 00 00 08 17 0f 90 96 cc # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000095.746944 10 01 08 00 00 08 00 c8 15 45 4f # PLAY button # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 22 , 153 , 160 , 145 , 187 E: 000100.317804 10 01 08 00 00 08 16 99 a0 91 bb # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000100.451550 10 01 08 00 00 08 00 c8 15 45 4f # FASTFORWARD button # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 24 , 158 , 141 , 41 , 92 E: 000107.749017 10 01 08 00 00 08 18 9e 8d 29 5c # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000107.882698 10 01 08 00 00 08 00 c8 15 45 4f # PREVIOUS TRACK button # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 20 , 181 , 193 , 159 , 85 E: 000114.526718 10 01 08 00 00 08 14 b5 c1 9f 55 # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000114.686734 10 01 08 00 00 08 00 c8 15 45 4f # PAUSE button # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 26 , 178 , 236 , 39 , 178 E: 000117.824287 10 01 08 00 00 08 1a b2 ec 27 b2 # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000117.983005 10 01 08 00 00 08 00 c8 15 45 4f # NEXT TRACK button # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 21 , 35 , 241 , 152 , 34 E: 000122.074342 10 01 08 00 00 08 15 23 f1 98 22 # ReportID: 1 / Hat switch: 8 | Button: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0xff000020: 0 | 0xff000021: 8 , 0 , 200 , 21 , 69 , 79 E: 000122.233063 10 01 08 00 00 08 00 c8 15 45 4f