Re: Adding force feedback for a gamepad (146b:0902 BigBen Interactive Kid-friendly Wired Controller PS3OFMINIPAD SONY)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi there,

advice/help from a more experienced developer would be very appreciated.


I'm still trying to get the BigBen PS3OFMINIPAD game controller [1] to
work better.


* what works, what doesn't - and with which device

When connected directly to the PS3, force feedback and LEDs work as
expected.

When connected to a Linux box, the hid-generic driver supports all axes
and buttons, but it's missing support for force feedback and the LEDs.


* lsusb not very helpful (to me)

The HID device descriptor (posted earlier [2] in this thread [3]) didn't
help much, but as a novice to USB HID specifics, I may be overlooking
something obvious.

These items remain unclear and what one can do with them:

> Usage, data= [ 0x21 0x26 ] 9761
> Usage, data= [ 0x2c ] 44
> Usage, data= [ 0x2d ] 45
> Usage, data= [ 0x2e ] 46
> Usage, data= [ 0x2f ] 47


* guessing output messages didn't work

Thanks to Simon's suggestion, I have been able to send/read direct HID
communication with a python script. But that didn't help much, the
gamepad would not respond to anything sent to it. So even guessing
possible output messages to it didn't do anything yet.


* sniff it?

The next attempt was to sniff the protocol. It is possible to use a
Raspberry Pi Zero to act as a HID device. Copying the BigBen gamepad's
HID descriptor, product/vendor ids etc. to the Zero's gadget driver
settings, it was possible to use the Zero as a MITM sniffer for the raw
HID traffic between the gamepad and another device.

The "fake" HID gamepad offers different endpoint addresses (didn't find
out yet how to specify them in the gadget driver), but the rest of its
lsusb output is the same.

The "fake" HID gamepad works when sniffing between the gamepad and a
Linux box.

The moment I use the Zero as a sniffer between the gamepad and the PS3,
only the axes and buttons are supported (and it is possible to use the
PS3 UI with it) minus some phantom button clicks.

But the LEDS / force feedback stop working. There is no raw HID traffic
at all from the PS3 to the gamepad when there's the Zero between them.


* other gamepads?

It appears that there are gamepads with similar HID descriptors on the
market.

The 0f0d:0092 "HORI CO.,LTD. POKKEN CONTROLLER" [4] and
the 0738:8828 "Mad Catz,Inc. PS3 RF pad" [5]

share this HID report descriptor items with the BigBen gamepad:

> Usage, data= [ 0x21 0x26 ] 9761

The 0738:8828 controller even mentions the other four items

> Usage, data= [ 0x2c ] 44
> Usage, data= [ 0x2d ] 45
> Usage, data= [ 0x2e ] 46
> Usage, data= [ 0x2f ] 47

I didn't find existing drivers for these two other devices that refer to
force feedback functionality.


* so how to find out more?

I'm now trying to guess why the gamepad works directly with the PS3 but
not while sniffing with the Zero.

Obviously, the Zero's gadget config might be different because of the
endpoint addresses, but the PS3 accepts the Zero's sniffed gamepad as a
gamepad and works with it.

Is the gamepad offering two USB modes, one for PCs using standard USB
HID and another for PS3 using a proprietary USB protocol?

If it is, can it be possible that the gamepad's "PC mode" isn't offering
any force feedback at all?


Thanks.

Hanno



[1]
https://www.bigben-interactive.co.uk/bigben-products/gaming-accessories/wired-mini-controller-ps3
[2] https://marc.info/?l=linux-input&m=152285384607009&w=2
[3] https://marc.info/?t=152283563900001&r=1&w=2
[4]
https://github.com/progmem/Switch-Fightstick/blob/master/HORI_Descriptors
[5] https://bugs.launchpad.net/qtsixa/+bug/933258
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux