https://bugs.winehq.org/show_bug.cgi?id=51873
--- Comment #19 from Ivo Ivanov logos128@gmail.com --- Created attachment 71043 --> https://bugs.winehq.org/attachment.cgi?id=71043 Simucube_2_logs.tar.gz
Attached logs with usb captured traffic from Simucube 2 on a Windows machine. There are two logs from Automobilista 2 and BeamNG. Added also two Wine logs (+dinput) from the same games. Just for a reference what's being called in dinput. BeamNG's wine log is from proton (joystick_sdl), since it's FFB is not yet functioning in Wine due to the not supported GetEffectStatus.
It's evident from the captured data, that only the reports that are explicitly set through the flags operand in SetParameters, are being send by the PID driver.
For example Automobilsta 2 calls repeatedly SetParameters with DIEP_TYPESPECIFICPARAMS + DIEP_GAIN (0x104). In result the PID driver sends Set Effect Report and Set Constant Force Report. They probably set the gain to it's max value every time, which results in 400Hz rate of not needed Set Effect Reports with exactly the same values.
BeamNG calls SetParameters repeatedly with just DIEP_TYPESPECIFICPARAMS (0x100), which results in only Set Constant Reports being send by the PID driver. They send a lot of Set Constant Reports which are exactly the same without ever playing them. The first Start report command is on frame 21943.
Also we can note that there are no envelope reports at all, since this parameter is not used by these games - they never set DIEP_ENVELOPE in any SetParameters call.
Some handy filters for WireShark (for examining the usb traffic data): - filter only the Output reports - (usb.transfer_type == 0x1) && (usb.endpoint_address.direction == 0) && (usb.src == "host") - filter only the Input reports - (usb.transfer_type == 0x1) && (usb.endpoint_address.direction == 1) && (usb.dst == "host")