Skip to content

Simulated TrueForce

mescon edited this page Jul 21, 2026 · 5 revisions

Simulated TrueForce

TrueForce is normally provided by the game itself through Logitech's TrueForce support (see Force Feedback in Games). For titles with no built-in TrueForce, this project ships logi-tf-sim: a small background helper that builds engine haptics from the game's own live data (engine RPM, speed, throttle, sent over the local network) and plays them through the wheel's real TrueForce audio path. That same live data drives the wheel's rev-light strip as a live RPM display.

What you feel

An engine note through the wheel rim: a fundamental tone at the engine's firing rate plus harmonics, louder with throttle, present at idle, silent when the engine is off. The rev LEDs fill with RPM (on the RS50 using your active LIGHTSYNC slot's colors and direction; on a real G PRO rim the onboard profile owns the colors).

Supported games

Any game that broadcasts its live data in one of these formats:

Format Default port Games
Codemasters / EA float array 20777 DiRT Rally 2.0 and the classic Codemasters format titles
Project CARS 2 5606 Project CARS 2, Automobilista 2

The helper listens quietly and detects the game automatically; both ports can be changed.

Enabling it, per game

  1. Open the Setup page in logi-dd-gui or logi-dd (see Configuring the Wheel) and find the Simulated TrueForce panel: master switch, helper start/stop, and a per-game list with individual enables and intensities.
  2. Switch on the game's own telemetry setting. Examples:
    • DiRT Rally 2.0: hardware_settings_config.xml, set <udp enabled="true" ...> (the stock port 20777 is the default here too).
    • Automobilista 2 / Project CARS 2: System settings, UDP frequency to a nonzero value, protocol "Project CARS 2".
  3. Race. The helper stays silent until the game's data arrives and stops when it goes quiet.

The knobs

Configuration lives in ~/.config/logi-dd/tf-sim.conf (plain key=value; the Setup page edits it for you):

Key Meaning Default
enabled master switch on
intensity master intensity, 0-100 60
pitch felt rev rate, 10-200 percent. 100 puts the fundamental at the crank rate (rpm/60 Hz); lower feels like a slower, heavier engine 50
leds drive the rev-light display from telemetry RPM on
port.codemasters, port.pcars the ports it listens on 20777 / 5606
game.<id>.enabled, game.<id>.intensity per-game override, applied on top of the master on / 100

Intensity is master x per-game, so you can set a global comfort level and trim individual games. Pitch is the one to play with if the engine feel reads too frantic or too lazy: it scales the fundamental frequency without touching amplitude.

Trying it without a game

The Setup page (and logi-tf-sim --sweep from a terminal) offers a consent-gated test sweep: a synthetic RPM run-up so you can feel the effect and calibrate intensity with no game running. Hold the rim first; it is a direct-drive wheel.

Good to know

  • Simulated TrueForce and games with built-in TrueForce do not fight: the helper only plays while the game's data is flowing, and games with native TrueForce support stream their own effects directly without using the simulation.
  • The rev-light feeder paces itself (it updates at most every ~160 ms, and only when the level changes) because faster bursts would overwhelm the wheel; see Simulated TrueForce Internals for why.
  • The helper plays through libtrueforce, the project's own version of Logitech's TrueForce support.

For how it works inside (parsers, synthesis, the watchdog loop), see Simulated TrueForce Internals.

Clone this wiki locally