protonscr

Logitech G920 Force Feedback delay because of device command queue filling up

protonopen
ValveSoftware/Proton#9135 · opened 2025-10-25 by Markus87 · updated 2026-02-25 · 2 comments · github
MMarkus87 2025-10-25 github

Proton: 1760690223 experimental-10.0-20251017

dmesg

Force feedback command queue contains 6620 commands, causing substantial delays!

I have tested with Assetto Corsa and Euro Truck Simulator 2, both show this problem.
In Assetto Corsa there is a setting reducing the ffb update rate to half, then it works.
Also ETS2 does not have this issue if running native on Linux.

Does anyone have insight into the system? Is it likely that this should be optimized on wine/proton side?

I have workaround kernel patch which just drops commands if the queue fills up, which fixes the delay.
It works better than i expected, but I doubt its even close to optimal. (I doubt I will get this put into the kernel, even if I only enable it for the g920)

Patch for linux/drivers/hid/hid-logitech-hidpp.c
diff -rupN linux-6.17.5/drivers/hid/hid-logitech-hidpp.c modified/drivers/hid/hid-logitech-hidpp.c
--- linux-6.17.5/drivers/hid/hid-logitech-hidpp.c       2025-10-23 16:24:41.000000000 +0200
+++ modified/drivers/hid/hid-logitech-hidpp.c   2025-10-25 16:14:59.613650766 +0200
@@ -2519,8 +2519,11 @@ out:
 
 static int hidpp_ff_queue_work(struct hidpp_ff_private_data *data, int effect_id, u8 command, u8 *params, u8 size)
 {
+       int s = atomic_read(&data->workqueue_size) + 1;
+       if( s >= 20 )
+               return -EBUSY; // lets tell the caller we are busy or act like its okay? => 0
+
        struct hidpp_ff_work_data *wd = kzalloc(sizeof(*wd), GFP_KERNEL);
-       int s;
 
        if (!wd)
                return -ENOMEM;
?ghost 2026-02-25 github

There's this utility tool called ffbwrap, https://github.com/berarma/ffbtools/blob/master/docs/ffbwrap.md

It can help prevent that specific issue.

MMarkus87 2026-02-25 github

I know of it, but it's a pain to use and just a workaround. That's why I wanted to check if it can be fixed without needing it at all.

Nothing extracted yet.