Brian Koponen

Programming and Tech Tips

Best GRID Autosport Wheel Settings for Thrustmaster TMX / T150

GRID Autosport, just like its predecessor GRID 2, plays very well with a wheel. Unfortunately, when you try to play with a Thrustmaster TMX, T150 or any other unsupported wheel, you can barely even navigate the menus because the default bindings are completely wrong for a wheel and pedal set. The menu is constantly scrolls unless you hold down the brake, which makes it nearly impossible to bind the pedals to accelerate and brake. You could rightfully assume that the game is just broken when using an unsupported wheel.

Thankfully, with a little text file editing, we can fix all of those problems and you will have a very nice force feedback wheel to play with. With good force feedback and the return of the cockpit view, GRID Autosport ventures closer to the feel of a raw simulator, while maintaining the wild arcade action that defines the series.


Direct Input Device File Edit

When GRID Autosport doesn't recognize a device, it uses a default control scheme simply called the "Direct Input Device." This could be either a gamepad or a wheel and, unfortunately, it is very much setup for a gamepad, leading to the constant menu scrolling problem.

In order to get the buttons configured on the wheel properly, we need to edit the Direct Input Device settings file.

Edit this file in your Steam Library: steamapps\common\GRID Autosport\input\dinput_default.xml

For the Thrustmaster TMX, replace the contents with this file:

<!-- Default action map for Direct Input -->
<ActionMap name="di_default" device_type="di_default" priority="16">

<!-- In Game Actions -->
  <Action id="Accelerate">
    <Axis id="di_z_axis_rotation" type="uniDirNeg" deadzone="0.0" saturation="1.0" />
  </Action>
  <Action id="Brake">
    <Axis id="di_y_axis" type="uniDirNeg" deadzone="0.0" saturation="1.0" />
  </Action>
  <Action id="Handbrake">
    <Axis id="di_button_3" />
  </Action>
  <Action id="Steer Left">
    <Axis id="di_x_axis" type="biDirLower" deadzone="0.05" saturation="1.0" />
  </Action>
  <Action id="Steer Right">
    <Axis id="di_x_axis" type="biDirUpper" deadzone="0.05" saturation="1.0" />
  </Action>
  <Action id="Change View">
    <Axis id="di_button_9" />
  </Action>
  <Action id="Gear Up">
    <Axis id="di_button_1" />
  </Action>
  <Action id="Gear Down">
    <Axis id="di_button_0" />
  </Action>
  <Action id="Look Left">
    <Axis id="" />
  </Action>
  <Action id="Look Right">
    <Axis id="" />
  </Action>
  <Action id="Look Up">
    <Axis id="" />
  </Action>
  <Action id="Look Down">
    <Axis id="" />
  </Action>
  <Action id="Look Back">
    <Axis id="di_button_5" />
  </Action>
  <Action id="Pause">
    <Axis id="di_button_7" />
  </Action>
  <Action id="Instant Replay">
    <Axis id="di_button_2" />
  </Action>
  <Action id="Boost">
    <Axis id="" />
  </Action>
  <Action id="Radio Car Health">
    <Axis id="di_dpad_0_left" />
  </Action>
  <Action id="Radio Rival Update">
    <Axis id="di_dpad_0_down" />
  </Action>
  <Action id="Radio Team Update">
    <Axis id="di_dpad_0_right" />
  </Action>
  <Action id="Radio Split Time">
    <Axis id="di_dpad_0_up" />
  </Action>
 <Action id="Radio TeamMate Push">
    <Axis id="di_button_11" />
  </Action>
 <Action id="Radio TeamMate Drop">
    <Axis id="di_button_10" />
  </Action>
 <Action id="Clutch">
    <Axis id="di_button_10" />
  </Action>

  <!-- FE Actions -->
  <Action id="Menu Left">
    <Axis id="di_dpad_0_left" />
  </Action>
  <Action id="Menu Right">
    <Axis id="di_dpad_0_right" />
  </Action>
  <Action id="Menu Up">
    <Axis id="di_dpad_0_up" />
  </Action>
  <Action id="Menu Down">
    <Axis id="di_dpad_0_down" />
  </Action>
  <Action id="Menu Select">
    <Axis id="di_button_4" />
  </Action>
  <Action id="Menu Back">
    <Axis id="di_button_8" />
  </Action>
  <Action id="Menu Button3">
    <Axis id="di_button_2" />
  </Action>
  <Action id="Menu Button4">
    <Axis id="di_button_9" />
  </Action>
  <Action id="Menu Start Button">
    <Axis id="di_button_7" />
  </Action>
  <Action id="Menu Left Shoulder">
    <Axis id="di_button_0" />
  </Action>
  <Action id="Menu Right Shoulder">
    <Axis id="di_button_1" />
  </Action>
  <Action id="Fe View Tweak Left">
    <Axis id="di_x_axis" type="biDirLower" deadzone="0.05" saturation="1.0" />
  </Action>
  <Action id="Fe View Tweak Right">
    <Axis id="di_x_axis" type="biDirUpper" deadzone="0.05" saturation="1.0" />
  </Action>
  <Action id="Fe View Tweak In">
    <Axis id="di_z_axis_rotation" type="uniDirNeg" deadzone="0.0" saturation="1.0" />
  </Action>
  <Action id="Fe View Tweak Out">
    <Axis id="di_y_axis" type="uniDirNeg" deadzone="0.0" saturation="1.0" />
  </Action>

  <!-- Replay/Youtube Actions -->
  <Action id="Replay Rewind">
    <Axis id="di_x_axis" type="biDirLower" deadzone="0.0" saturation="1.0" />
    <Axis id="di_y_axis" type="uniDirNeg" deadzone="0.0" saturation="1.0" />
  </Action>
  <Action id="Replay Fast Forward">
    <Axis id="di_x_axis" type="biDirUpper" deadzone="0.0" saturation="1.0" />
    <Axis id="di_z_axis_rotation" type="uniDirNeg"  deadzone="0.0" saturation="1.0" />
  </Action>
  <Action id="Replay Pause">
    <Axis id="di_button_5" />
  </Action>
  <Action id="Replay Next Camera">
    <Axis id="di_button_9" />
  </Action>
  <Action id="Replay Prev Camera">
    <Axis id="" />
  </Action>
  <Action id="Replay Jump In">
    <Axis id="" />
  </Action>
  <Action id="Replay Exit">
    <Axis id="di_button_3" />
  </Action>
  <Action id="Replay UI On Off">
    <Axis id="di_button_0" />
  </Action>
  <Action id="Replay Youtube">
    <Axis id="di_button_2" />
  </Action>
  <Action id="Youtube Drag Left">
    <Axis id="di_dpad_0_left" />
  </Action>
  <Action id="Youtube Drag Right">
    <Axis id="di_dpad_0_right" />
  </Action>
  <Action id="Youtube Speed Up">
    <Axis id="di_dpad_0_up" />
  </Action>
  <Action id="Youtube Speed Down">
    <Axis id="di_dpad_0_down" />
  </Action>
  <Action id="Youtube Upload">
    <Axis id="di_button_4" />
  </Action>
  <Action id="Youtube Exit">
    <Axis id="di_button_3" />
  </Action>

  <!-- Spectator Actions -->
  <Action id="Spectator Next Camera">
    <Axis id="di_button_9" />
  </Action>
  <Action id="Spectator Previous Camera">
    <Axis id="" />
  </Action>
  <Action id="Spectator UI On Off">
    <Axis id="di_button_0" />
  </Action>
  <Action id="Spectator List On Off">
    <Axis id="di_button_4" />
  </Action>
  <Action id="Cycle Forward On Board Cameras">
    <Axis id="" />
  </Action>
  <Action id="Activate Replay System">
    <Axis id="" />
  </Action>

</ActionMap>


For the Thrustmaster T150, replace the contents with this file:

<!-- Default action map for Direct Input -->
<ActionMap name="di_default" device_type="di_default" priority="16">

  <!-- In Game Actions -->
  <Action id="Accelerate">
    <Axis id="di_z_axis_rotation" type="uniDirNeg" deadzone="0.0" saturation="1.0" />
  </Action>
  <Action id="Brake">
    <Axis id="di_y_axis" type="uniDirNeg" deadzone="0.0" saturation="1.0" />
  </Action>
  <Action id="Clutch">
    <Axis id="di_slider_2" type="uniDirNeg" deadzone="0.2" saturation="0.6" />
  </Action>
  <Action id="Handbrake">
    <Axis id="di_button_4" />
  </Action>
  <Action id="Steer Left">
    <Axis id="di_x_axis" type="biDirLower" deadzone="0.0" saturation="1.0" />
  </Action>
  <Action id="Steer Right">
    <Axis id="di_x_axis" type="biDirUpper" deadzone="0.0" saturation="1.0" />
  </Action>
  <Action id="Change View">
    <Axis id="di_button_6" />
  </Action>
  <Action id="Gear Up">
    <Axis id="di_button_1" />
  </Action>
  <Action id="Gear Down">
    <Axis id="di_button_0" />
  </Action>
  <Action id="Gear 1">
    <Axis id="" />
  </Action>
  <Action id="Gear 2">
    <Axis id="" />
  </Action>
  <Action id="Gear 3">
    <Axis id="" />
  </Action>
  <Action id="Gear 4">
    <Axis id="" />
  </Action>
  <Action id="Gear 5">
    <Axis id="" />
  </Action>
  <Action id="Gear 6" >
    <Axis id="" />
  </Action>
  <Action id="Gear 7" >
    <Axis id="" />
  </Action>
  <Action id="Gear Reverse" >
    <Axis id="" />
  </Action>
  <Action id="Look Left">
    <Axis id="" />
  </Action>
  <Action id="Look Right">
    <Axis id="" />
  </Action>
  <Action id="Look Up">
    <Axis id="" />
  </Action>
  <Action id="Look Down">
    <Axis id="" />
  </Action>
  <Action id="Look Back">
    <Axis id="di_button_5" />
  </Action>
  <Action id="Pause">
    <Axis id="di_button_7" />
  </Action>
  <Action id="Instant Replay">
    <Axis id="di_button_2" />
  </Action>
  <Action id="Boost">
    <Axis id="" />
  </Action>
  <Action id="Radio Car Health">
    <Axis id="di_dpad_0_left" />
  </Action>
  <Action id="Radio Rival Update">
    <Axis id="di_dpad_0_down" />
  </Action>
  <Action id="Radio Team Update">
    <Axis id="di_dpad_0_right" />
  </Action>
  <Action id="Radio Split Time">
    <Axis id="di_dpad_0_up" />
  </Action>
 <Action id="Radio TeamMate Push">
    <Axis id="di_button_8" />
  </Action>
 <Action id="Radio TeamMate Drop">
    <Axis id="di_button_9" />
  </Action>

  <!-- FE Actions -->
  <Action id="Menu Left">
    <Axis id="di_dpad_0_left" />
  </Action>
  <Action id="Menu Right">
    <Axis id="di_dpad_0_right" />
  </Action>
  <Action id="Menu Up">
    <Axis id="di_dpad_0_up" />
  </Action>
  <Action id="Menu Down">
    <Axis id="di_dpad_0_down" />
  </Action>
  <Action id="Menu Select">
    <Axis id="di_button_5" />
  </Action>
  <Action id="Menu Back">
    <Axis id="di_button_4" />
  </Action>
  <Action id="Menu Button3">
    <Axis id="di_button_3" />
  </Action>
  <Action id="Menu Button4">
    <Axis id="di_button_2" />
  </Action>
  <Action id="Menu Right Shoulder">
    <Axis id="di_button_1" />
  </Action>
  <Action id="Menu Left Shoulder">
    <Axis id="di_button_0" />
  </Action>
  <Action id="Menu Start Button">
    <Axis id="di_button_7" />
  </Action>
  <Action id="Fe View Tweak Left">
    <Axis id="di_x_axis" type="biDirLower" deadzone="0.0" saturation="1.0" />
  </Action>
  <Action id="Fe View Tweak Right">
    <Axis id="di_x_axis" type="biDirUpper" deadzone="0.0" saturation="1.0" />
  </Action>
  <Action id="Fe View Tweak In">
    <Axis id="di_z_axis_rotation" type="uniDirNeg" deadzone="0.0" saturation="1.0" />
  </Action>
  <Action id="Fe View Tweak Out">
    <Axis id="di_y_axis" type="uniDirNeg" deadzone="0.0" saturation="1.0" />
  </Action>

  <!-- Replay/Youtube Actions -->
  <Action id="Replay Rewind">
    <Axis id="di_x_axis" type="biDirLower" deadzone="0.0" saturation="1.0" />
    <Axis id="di_y_axis" type="uniDirNeg"  deadzone="0.0" saturation="1.0" />
  </Action>
  <Action id="Replay Fast Forward">
    <Axis id="di_x_axis" type="biDirUpper" deadzone="0.0" saturation="1.0" />
    <Axis id="di_z_axis_rotation" type="uniDirNeg"  deadzone="0.0" saturation="1.0" />
  </Action>
  <Action id="Replay Pause">
    <Axis id="di_button_5" />
  </Action>
  <Action id="Replay Next Camera">
    <Axis id="di_button_6" />
  </Action>
  <Action id="Replay Prev Camera">
    <Axis id="" />
  </Action>
  <Action id="Replay Jump In">
    <Axis id="di_button_3" />
  </Action>
  <Action id="Replay Exit">
    <Axis id="di_button_4" />
  </Action>
  <Action id="Replay UI On Off">
    <Axis id="di_button_9" />
  </Action>
  <Action id="Replay Youtube">
    <Axis id="di_button_2" />
  </Action>
  <Action id="Youtube Drag Left">
    <Axis id="di_button_0" />
  </Action>
  <Action id="Youtube Drag Right">
    <Axis id="di_button_1" />
  </Action>
  <Action id="Youtube Speed Up">
    <Axis id="di_dpad_0_up" />
  </Action>
  <Action id="Youtube Speed Down">
    <Axis id="di_dpad_0_down" />
  </Action>
  <Action id="Youtube Upload">
    <Axis id="di_button_3" />
  </Action>
  <Action id="Youtube Exit">
    <Axis id="di_button_4" />
  </Action>

  <!-- Spectator Actions -->
  <Action id="Spectator Next Camera">
    <Axis id="di_button_6" />
  </Action>
  <Action id="Spectator Previous Camera">
    <Axis id="" />
  </Action>
  <Action id="Spectator UI On Off">
    <Axis id="di_button_9" />
  </Action>
  <Action id="Spectator List On Off">
    <Axis id="di_button_3" />
  </Action>
	<Action id="Cycle Forward On Board Cameras">
    <Axis id="d" />
	</Action>
	<Action id="Activate Replay System">
    <Axis id="" />
  </Action>

</ActionMap>

Now, with the appropriate Direct Input Device settings for your wheel, you will be able to navigate the menus properly, using the correct buttons on the wheel for selecting and canceling actions.


Control Settings

In the Thrustmaster Control Panel:

Set the rotation to its maximum.

Under Gain Settings:

Setting Value
Overall Strength of all forces 100%
Constant 100%
Periodic 100%
Spring 100%
Damper 0%
Auto-Center by the game

The Damper applies a constant dampening effect (on top of any in-game settings), making the wheel feel heavy. On lower-end wheels, there is plenty of natural dampening in the wheel mechanism itself. (Dampening is used on higher-end wheels to solve oscillation problems.)

The Spring force constantly pulls the wheel back to the center, but, unlike the Damper, it is completely controlled by the game, just like the Constant and Periodic forces. Most games don't use the Spring force at all (their native physics simulations do this already), so it actually doesn't matter what the value is set to in the Control Panel.

I leave the Spring force on in the Control Panel, making the in-game settings the only factor controlling the force feedback. This makes the settings consistent across all games and prevents confusion in the few games that use it about why a FFB setting seems to have no effect.


In GRID Autosport Settings:

In Options & Extras > Options > Controls:

Choose the "Direct Input Device" preset. Now that you can navigate the menus properly using the wheel, feel free to customize the buttons as you see fit.

From now on, whenever you start the game, make sure to press some buttons on the wheel before pressing the enter key on your keyboard. If you don't do this, you may need to go back and select the Direct Input Device preset.


In Options & Extras > Options > Controls > Advanced Options:

Setting Value
Steering Deadzone 0%
Steering Saturation 40% (TMX) 35% (T150)
Steering Linearity 0

You need to lower the Steering Saturation to get the wheel rotation to 360°. This is the best overall rotation value to have, but you may want to set this lower for certain courses if you find you can't turn the wheel fast enough to make some tighter turns.


Force Feedback Settings

We can improve the force feedback effects a little bit by editing the following file in your Steam Library:

steamapps\common\GRID Autosport\forcefeedback\devicesetup.xml

Edit the default device listing as follows:

<FFBDevice name="default" scaleForce="1.2" scaleFriction="0.3" baseFriction="0.05" maxFriction="100.0" scaleEffects="1.19" delay="0.0"/>

These are the settings defined for the G27, which is the closest wheel to the TMX or T150. This change is quite subtle, but there is no reason not to match the settings.


In GRID Autosport Settings:

In Options & Extras > Options > Vibration:

Setting Value
Vibration On
Vibration Strength 30%
Wheel Strength 40%
Wheel Weight 20%


Bonus Tip: Game Progress Not Saving?

While I was figuring out how all of this worked, I thought GRID Autosport had a horrible bug that would prevent the game from saving any data, whether it be control settings or actual game progress. I saw that many other people had this problem, and the one thing they had in common was that they all had modified the game files in some way. This isn't a "bug" at all, but rather an anti-cheat mechanism the game has built in to it. I had added several files, trying out different settings, which had triggered this mechanism.

Thankfully, modifying the two files we need does NOT cause this to happen, just make sure not to add any additional files into those folders, like creating a backup copy of the original files.


Conclusion

When I initially got this game and couldn't get the wheel to work, I was very disappointed and didn't really play it. Now that I put the time in to get this to work, I've found a whole new appreciation for this game series. There is a lot of fun to be had here.

Let me know if you have any comments or questions.

Question or Comment?