Re: [PATCH] HID: sony: disable descriptor fixup for FutureMax Dance Mat
From: Mikko Perttunen
Date: Mon Jul 25 2016 - 11:23:23 EST
On 07/25/16 14:05, Antonio Ospite wrote:
On Mon, 25 Jul 2016 11:14:04 +0200
Benjamin Tissoires <benjamin.tissoires@xxxxxxxxxx> wrote:
On Jul 21 2016 or thereabouts, Antonio Ospite wrote:
[...]
It would be interesting to understand why some (supposedly) compatible
devices break, maybe they rely on the fact that the PS3 would use the
original report?
[just speculating]
I would be *really* surprised if the Sony software were to overwrite the
report descriptor of their own sony controllers. My guess is that their
HID stack or their Playstation driver is compatible with the original
report descriptors and so they can handle the differences between
original and weirdo controllers.
That's basically what I was thinking too, in my last sentence I meant
to write report _descriptor_ :)
Mikko, if you have some time, could you post the original report
descriptor for your device?
Sure, here's the output from hidrd-convert:
0x05, 0x01, /* Usage Page (Desktop), */
0x09, 0x04, /* Usage (Joystick), */
0xA1, 0x01, /* Collection (Application), */
0x09, 0x01, /* Usage (Pointer), */
0xA1, 0x00, /* Collection (Physical), */
0x05, 0x09, /* Usage Page (Button), */
0x19, 0x01, /* Usage Minimum (01h), */
0x29, 0x0A, /* Usage Maximum (0Ah), */
0x15, 0x00, /* Logical Minimum (0), */
0x25, 0x01, /* Logical Maximum (1), */
0x75, 0x01, /* Report Size (1), */
0x95, 0x0A, /* Report Count (10), */
0x81, 0x02, /* Input (Variable), */
0x95, 0x06, /* Report Count (6), */
0x81, 0x03, /* Input (Constant, Variable), */
0xC0, /* End Collection, */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x15, 0x00, /* Logical Minimum (0), */
0x25, 0x01, /* Logical Maximum (1), */
0x25, 0x01, /* Logical Maximum (1), */
0x25, 0x01, /* Logical Maximum (1), */
0xC0 /* End Collection */
$ hexdump /sys/bus/hid/devices/XXXX\:YYYY\:ZZZZ.0001/report_descriptor
or
$ hidrd-convert -i natv -o code /sys/bus/hid/devices/XXXX\:YYYY\:ZZZZ.0001/report_descriptor
You can also find out the length of the raw output report with trial and
error, start with a line like this:
$ sudo hexdump -v -e '49/1 "%02x " "\n"' /dev/hidraw0
and increase/decrease the value (49 works with original controllers)
until you see a regular pattern when comparing lines.
/dev/hidraw0 seems to be all zeroes straight from the beginning
Anyways this is just for curiosity, we are not going to spend too much
time on that... or are we? :)
At least it's some reference information.. :)
Thanks,
Antonio
Cheers,
Mikko.