Game Input steering wheel FFB events have no effect on Logitech and Thrustmaster wheels in UE5
I am encountering an issue where force feedback events have no physical effect on steering wheels using GameInput in UE5 .
When using the latest version of GameInput from NuGet inside Unreal Engine 5.5.4 on Windows 11, I can create and start force‑feedback (FFB) effects on two different steering wheels ( Logitech G29 and Thrustmaster T248 ). GameInputCreateForceFeedbackEffect() succeeds, GetState() returns GameInputFeedbackRunning, but no physical feedback is produced—the wheels go completely limp the moment the UE editor or packaged build launches, and spring centering resumes ( depending on ghub settings in the case of the g29 ) as soon as the application quits.
Both wheels I am testing with work in available games like Automobilita2, Asseto Corsa, etc. and they both produce FFB effects with the test apps provided by Logitech and Thrustmaster.
Both wheels have latest drivers and firmware.
I have also tested with the LogitechGamingSteeringWheelSDK and this is able to control the FFB effects on the logitech wheel from UE5 editor.
I believe the issue is that IsForceFeedbackMotorPoweredOn() consistently reports FALSE, when wheels are enumerated, and before and after sending and starting force feedback events, in editor and in packaged builds. According to the documentation if IsForceFeedbackMotorPoweredOn() is false the FFB effects will have no effect on the wheel.
The wheels are plugging in when testing, and show power lights on.
I have tried tricking the motors into powering on in UE5 with raw HID, and DirectInput before attempting to create events.
Both wheels inputs are working with the GameInput plugin in UE5.
There are no warnings or errors in the logs related to GameInput or FFB.
I have tested spring and constant ffb events.
When queried with GameInput both wheels forceFeedbackMotorCount is 1. And both wheels report that they support spring, friction, damper, and inertia events.
The G29 is recognized as GameInputKindRacingWheel and the t248 is recognized as GameInputKindController.
I don't know if this is a bug, or if there is some undocumented step I am missing. Any help would be greatly appreciated.
Test Environment: -UE5.5.4 built from source, with the GDK installed, and have verified my environment variable. -Windows 11 -Latest game input from nuget installed to windows, and Gameinput.lib linked via third party plugin.
Some of the logging I setup:
LogFFBTest: GameInputCreate success LogFFBTest: Found Thrustmaster wheel: VID 044F, PID B696 LogFFBTest: VID 044F (PID 0xB696) connected LogFFBTest: Wheel has 1 motors LogFFBTest: Wheel supported axes: angular X LogFFBTest: Wheel spring effect supported: yes LogFFBTest: Wheel friction effect supported: yes LogFFBTest: Wheel damper effect supported: yes LogFFBTest: Wheel inertia effect supported: yes LogFFBTest: Wheel motor powered on: no LogFFBTest: Wheel device status: connected LogFFBTest: Wheel has 10 controller axes LogFFBTest: Wheel has 26 controller buttons LogFFBTest: Wheel has 1 controller switches LogFFBTest: Wheel supported input: unknown LogFFBTest: Wheel supported rumble motors: LogFFBTest: Testing spring and damper effects... LogFFBTest: CreateForceFeedbackEffect hr=0x00000000 LogFFBTest: Spring effect state: 0 LogFFBTest: Spring effect applied to Wheel LogFFBTest: Spring effect state: 1 LogFFBTest: Wheel motor powered on: 0
And example of the spring effect I have tried:
GameInputForceFeedbackParams p1{};
p1.kind = GameInputForceFeedbackSpring;
auto& c1 = p1.data.spring;
c1.magnitude.angularX = {10000.0f};
c1.positiveCoefficient = -1.0f;
c1.negativeCoefficient = -1.0f;
c1.maxPositiveMagnitude = 10000.0f;
c1.maxNegativeMagnitude = 10000.0f;
c1.deadZone = 0.0f;
c1.bias = 0.0f;
IGameInputForceFeedbackEffect* fx = nullptr;
uint32_t motorIndex = 0;
HRESULT hr = gG29->CreateForceFeedbackEffect(motorIndex, &p1, &fx);
gG29->SetForceFeedbackMotorGain(0, 1.0);
fx->SetParams(&p1);
fx->SetGain(1.0f);
fx->SetState(GameInputFeedbackRunning);
SpringFX = fx; // storing reference in the manager to not lose the effect
Hi Naytor, thanks for reaching out. A couple of questions for you:
- Have you already tried the GameInput samples? It would be helpful to know if the issue here is related to UE.
- Do other effects, for example constant force, do not work either?
- Could you please capture logs using the attached batch file (rename to CaptureGameInputLogs.cmd, start capture before running your application and stopping it after your repro).
Thank you!
Hi Alex, Thank you for your reply! 1 - I haven't come across the GameInput samples, are you able to direct me to them. ( I see there are GDK samples for GameInputInterfacing and GameInputSequential, but the table states they are for XBOX and not PC ) 2 - I have tried constant force and it is the same result, it has no effect on the wheel, but does not error and will report that it is running. 3 - I will try out the capture logs and report back.
With some additional research I also found that there may be some conflict between legacy and newer system installations of GameInput services, I have yet to test uninstalling the older legacy GameInput services that appear in ProgramFiles.
@AlexYatskov Do you have an email I can send the log to?
Naytor,
You should be able to use the simple FFB sample here: https://github.com/microsoft/Xbox-GDK-Samples/tree/main/Samples/System/SimpleFFBWheel
Please send the ETL logs to [email protected], it is our team alias for all sort of GameInput related questions and issues :)
@AlexYatskov I sent the log to the email you provided. I have tested the SimpleFFBWheel with the Logitech and Thrustmaster wheel. The Logitech wheel works with the sample, but the Thrustmaster does not it says no wheel connected ( seems consistent with the results I saw in Unreal with the G29 being recognized as KindRacingWheel and the T248 as KindController )
Thanks again for reaching out, we have identified this as a focus issue related to using GameInput in UE; this will be fixed in an upcoming release.
@Naytor we introduced a fix for this in GameInput 2.1. Would you be able to validate if the issue was resolved for your case? Thank you!
Amazing news! Ill take a look!!
On Thu, Dec 4, 2025, 5:28 p.m. lsalvadormsft @.***> wrote:
lsalvadormsft left a comment (microsoft/GDK#97) https://github.com/microsoft/GDK/issues/97#issuecomment-3614947878
@Naytor https://github.com/Naytor we introduced a fix for this in GameInput 2.1. Would you be able to validate if the issue was resolved for your case? Thank you!
— Reply to this email directly, view it on GitHub https://github.com/microsoft/GDK/issues/97#issuecomment-3614947878, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALBBQMGYY7VUP5YM3YFQ3FD4ADNULAVCNFSM6AAAAAB7BBUPXSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTMMJUHE2DOOBXHA . You are receiving this because you were mentioned.Message ID: @.***>