Forza Horizon 4

Forza Horizon 4

Not enough ratings
Multi-USB Logitech G29 Wheel with USB Handbrake (Thrustmaster) and USB Shifter (VNM) on external USB hub
By LeadMagnet
As I've spent a lot more hours than I'm happy about getting the Steam version of Forza Horizon working in a multi-USB wheel configuration, I figured it was worth writing up a guide in the hopes of saving others some of this pain.

I've gone this way because Forza's built in multi-USB does not work for me - I'm assuming because I'm using an external USB hub. So I'm to using third party tools to get it working. I expect this guide could be used with minimal modification to sort out a Forza Horizon setup for a mix of USB shifters, handbrakes and pedals with a logitech G-type wheel (and likely also non-Logitech wheels).

For reference, my setup consists of a Wavlink 4 Port USB 3.0 hub connected to a USB 3.0 port on my PC, with the following controllers:
  • A Logitech G29 Wheel and pedals (and for the rest of the guide, when I refer to my wheel, this is shorthand for the wheel and pedal combo).
  • A Thrustmaster Sparco TSS in handbrake mode.
  • A VNM Shifter.
Aside from Forza Horizon 4 itself, the solutions in this guide are based on the following third party tools vJoy[github.com] (but see later notes about working versions) and your choice of:
  • Forza EmuWheel[forzatools.weebly.com]. This is your only choice if you are modifying this guide for a non-Logitech wheel with Force Feedback that isn't already supported by FH4. It has a very active support discord, and EmuWheel's developer, @FirstPlatoLV provides extensive and patient responses to queries.
  • Universal Control Remapper[github.com] (UCR). This seems to be the simplest to configure, but also looks to be in development limbo at the moment.
  • Joystick Gremlin[whitemagic.github.io], which is my preferred choice, as I have both wheel and multi-joy stick setups that I want to be able to switch between. It supports scripting with python, and is still under active development.
All three options have active user bases, so pick the one that works for you.

I've spent an awful lot of time on simracing sub-reddits, github and the EmuWheel discord (particularly @FirstPlatoLV's posts and responses) to get things detailed in this guide working. All credit to the various people who have put time into the software and solutions summarised here, and in particular to the developers of vJoy, Joystick Gremlin, EmuWheel and UCR.

The first part of the guide is about getting the G29 wheel working as a standalone controller for Forza Horizon 4 on Steam. As some of this is very general G29 troubleshooting, it may be applicable to other games and Logitech wheels. You can skip this if your wheel is already working and you just want to go to a multi-USB setup.

Later sections detail the shared vJoy setups and configuration of the individual tools.
   
Award
Favorite
Favorited
Unfavorite
HUGE WARNING!
As always, there is some risk from using a guide from internet randos like me. The steps in this guide have worked fine for me and my system. But I can't guarantee it will work for you and that you won't have problems with your own system. So use at your own risk.

Unfortunately, I have limited free time, so I can't promise to help resolve problems that arise from using this guide (and definitely can't help if you modify the guide!). But I will drop into the comments when I do have time, and will respond to questions and suggestions as much as I can.

Most importantly, I'm assuming that anyone using this guide is comfortable with registry editing and doing a bit of installing and uninstalling drivers to get niche gaming hardware working. If this doesn't sound like you, then I strongly recommend you do not use this guide, as you have a reasonable chance of breaking your system in exciting ways.

I will highlight sections which are higher risk - mainly around modifying contents of system folders and registry editing.

I've got a couple of more assumptions about users of this guide:
  • You are looking at this guide because you already have multiple driving controllers that aren't working well with Forza Horizon, so I won't be doing much introduction on this.
  • You are already aware that this setup can be particularly painful for Forza games and that consequently you were expecting and are comfortable with a bit of trial and error to get things working.
  • You know your way around Windows system folders, and tools like Device Manager and Registry Editor.
In spite of this warning, if you are careful with the changes you make, the worst case outcome you are likely to face is needing to undo changes and start from scratch.
Logitech G29 General and Trouble Shooting
Logitech G29. A perfectly serviceable entry level wheel. With some of the world's crappiest driver software. But it's what I have, so here's how I've got it working mostly reliably.

I'm currently using Logitech GHub. I've tried Logitech Gaming Software, but it has been a bust each time.

Troubleshooting - GHub locks up on "Loading Resources"



You're going to see this. A lot. GHub is charitably described as awful and fragile. The easiest way to break a wheel setup in GHub is to add, remove or modify any USB controller while GHub is active with a Logitech wheel plugged in (you know, precisely the things that USB is supposed to be robust for ...). This will also happen when you make changes in the wheel settings, when Saturn is in retrograde, and when a butterfly sneezes in a South American jungle. Get used to the idea you will see and fix this plenty of times.

So the first step in this guide is how to reset a G29 that is already working properly whenever GHub hangs on "Loading Resources".

These steps work pretty well 100% of the time for me after the wheel is properly set up (see below):
  1. Leave GHub open.
  2. Open Device Manager.
  3. Go to Human Interface Devices.
  4. Click on view and show hidden devices (at least the first time you do this - shouldn't be needed after this).
  5. Delete all instances of "Logitech G Hub G29 Driving Force Racing Wheel" and "Logitech G Hub G29 Driving Force Racing Wheel (HID)" - there may be none of the "(HID)" device, which is one of the symptoms of the "Loading Resources" problem.

    When you delete the device, a warning will pop up about uninstalling the device. There is a tick box to "Attempt to remove the driver for this device". Leave this UNTICKED - there is nothing wrong with the driver. Click uninstall.



    I expect other Logitech wheels will have similar devices that can be deleted.

  6. When there are no driving wheel devices left in Device Manager, go to Action and "Scan for Hardware Changes". This should instantly find and create "Logitech G Hub G29 Driving Force Racing Wheel" and "Logitech G Hub G29 Driving Force Racing Wheel (HID)" devices (one of each), and the "Loading Resources" screen in GHub should be fixed.
No need to exit device manager, no need to reboot, no need to kill tasks, no need to reinstall drivers. (At least most of the time - I have faith Logitech will find a way to screw it up painfully at some point.)
Setting Up GHub
This section goes through optionally uninstalling GHub/LGS and then installing and setting up GHub for a Logitech wheel.

(Optional) Step 1: Uninstall GHub and LGS

Warning: This step will nuke any Logitech GHub customisations for all GHub devices you own (not just your wheel). If you don't want this to happen, don't follow this process, and you will need to find an alternative process to clean up your old wheel installation.

If your wheel isn't working, a good, optional starting point is to nuke your current install and start from scratch. That said, if you are uncomfortable with messing with system files and folders, you can try just re-installing and keeping your fingers crossed (Step 2).

The following steps work for GHub, and similar steps apply for removing LGS (a quick search should find the detailed steps for removing LGS).

Warning. This is a high risk step, as you are modifying system folders and the registry. Where you are removing folders and files, do double/triple checks to be sure they are part of LGHUB only, and not part of other software packages.
  1. Make sure your wheel is unplugged.
  2. Go to add/remove programs and uninstall Logitech GHub.
  3. Go to "C:\Program Files" and delete any remaining folders for LGHUB.
  4. Go to "C:\ProgramData" and delete any LGHUB folder.
  5. Go to your personal appdata folders (%appdata% in a file explorer location box, Windows default is "C:\Users\<yourusername>\AppData") and check and remove any LGHUB folders from:
    %appdata%\local %appdata%\Roaming
  6. Go to device manager, go to view and show hidden devices. Remove all GHub Wheel and Logitech wheel devices. These may be in their own Logitech devices category, under Human Interface Devices, or Game Controllers. If you are offered a tick box to remove drivers, tick this and uninstall.
  7. Open Registry Editor and remove the OEMData and OEMName keys from:
    Computer\HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_046D&PID_C24F Computer\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_046D&PID_C24F
    The VID/PID key will be different for other Logitech wheel models.
  8. Reboot.
  9. Move to the next step and hopefully never do this again (or at least not until the next time you decide to upgrade LGHUB, which may require a full uninstall ...).
Finally, if these steps haven't worked for you, check other guides for uninstalling LGHub or LGS.

Step 2: (Re-)Install GHub
  • Make sure your wheel is unplugged.
  • Download the latest version of GHub from Logitech.
  • Install GHub.
  • Start Ghub and let it update automatically (you mostly don't have a choice the first time).
  • Hit the triple bar menu and go to settings.
  • Untick "ENABLE AUTOMATIC UPDATES".



  • Reboot.
  • Start GHub and plug in your wheel at the "Connect Your Logitech Gear" prompt.
  • Reboot again!

At this point, you hopefully have a working installation of GHub which Logitech can't break with "highly helpful" automatic updates.

Step 3: Post Install Checks

Before making configuration changes in GHub, you should also check that the following device registry keys for the wheel have the correct values for OEMData and OEMName:
Computer\HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_046D&PID_C24F Computer\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_046D&PID_C24F
Both keys should contain the following value/data pairs:

Name
Type
Data
OEMName
REG_SZ
Logitech G HUB G29 Driving Force Racing Wheel USB
OEMData
REG_BINARY
43 00 08 10 19 00 00 00

Modifying your registry is a high risk step. If these are missing or different, you will need to add/correct them. Some games (likely Project Cars 2) may modify this key, so if force feedback disappears, check this.

If you interested in what the OEMData flags mean, check the fine detail section at the the end of this guide.

Step 4: GHub Setup

Unfortunately, installed is not same as working properly. In default settings, my wheel starts up extremely stiff on the desktop and some of this carries over into games. As far as I can tell this is because the settings for non-force feedback games are not working properly. To make matters worse, this behaviour seems to vary between individual wheels - so you may need to do some experimentation to get things working as you expect.

To get my setup working as I would expect, I needed to make the following change to my GHub setup:
  • Use "Persistent Profile in Desktop". The automatic dynamic profiles are a crapshoot for me. Sometimes they switch when I start a game, sometimes they don't. I figure I'll live with changing profiles when I change games.
  • For my wheel, I have disabled centering spring in non-force feedback games. This is absolutely essentially for getting Forza to work properly with my G29. Again - this seems to vary from wheel to wheel and PC to PC, but this is what works for me!



    This is one of the major Logitech pain points. You would expect that unticking "CENTERING SPRING IN NON FORCE FEEDBACK GAMES" would, you know, disable the out of game centering spring everywhere. But, no. To completely disable GHub centering spring actions, you need to both have this box ticked and the "CENTERING SPRING STRENGTH" slider set to 0. If I don't do both of these things, force feedback in Forza is very erratic. If I do both of these things, force feedback is inactive on the desktop and works properly in Forza (untested in other games that support FFB).

    This setting does break GHub force feedback for older games that don't have built in support for force feedback - if your wheel needs this setup for Forza and you want to play older games, you are going going to need separate profiles.
At this point, my wheel is working properly and force feedback can be setup in Forza Horizon 4. The next short section covers in game configuration.

Sidebar - Updating LGHUB

You may need to update GHub in the future. Before you do, I strongly recommend you go and scan recent posts in the r/LogitechG subreddit to make sure that the latest version will not break your hardware in irritating ways (if you have to update, it at least gives you an idea of what your pain points are going to be to get things working again).

For example, a couple of recent versions have caused me grief by flip-flopping behaviour of force feedback in non-force feedback games, and Forza Horizon 4 went from ignoring "Invert Force Feedback" option to honouring it. Sometimes this will also be vaguely hinted at in the GHub update notes (triple bar menu->Settings->Click on Version: xxx.xx.xxxx in the top left).
Setup G29 in Forza Horizon 4
The next step in this guide goes through setting up the G29 as a native wheel in Forza Horzon 4 (Steam version). If you are one of the people who is unlucky enough that your Logitech wheel is not detected, you will probably need to use Forza EmuWheel to get things working (outside the scope of this already very long guide).

The steps in this section are:
  • Do the installation preliminaries detailed in the earlier parts of this guide.
  • Make sure your wheel is unplugged.
  • Start GHub and then plug in your wheel.
  • Set up your preferred GHub profile settings for Forza. I'm currently using Brian Koponen's recommended settings for FH4[www.briankoponen.com] - operating range of 540 degrees and sensitivity of 50. See my previous notes to see how I have turned off the GHub centering spring (unticking the box may not work!).
  • Start Forza Horizon 4 and go to Start Game->Options->Controls. You should see a wheel option. If not, you are either one of the unlucky ones, or there is a problem with your installation and you will need to start the process again.



  • Click on wheel. You should be able to use left/right arrows to switch between any native wheel profiles and the 5 custom wheel profiles (we'll need one of these later). You should see Logitech G29 as one of the wheel configurations. If not, same problem as above - you either need to reinstall or figure out why the game can't see your wheel.



  • Assuming FH4 found your G29, you can now set up the Advanced settings from the G29 menu. Again, I'm using Brian Koponen's recommendations[www.briankoponen.com].

At this point, you should jump into the game and test that everything is working and drivable with the native wheel and pedal setup.

Invert Force Feedback (if needed)

The last thing you might need to do is invert force feedback on the wheel axis.

The quickest test for needing to do this is find a flat patch of gravel or grass in game, accelerate, and pull the wheel to one side and let go. If the car pulls into the turn rather than straightening up, you probably need to invert your wheel force feedback (the car will also feel really weird on turns and be very, very hard to control).

There are two possible ways to invert force feedback, depending on how GHub is working.
  • There is a an Invert Force Feedback option in the FH4 Advanced Wheel Controls settings page. Try switching this on. This has been working for me since about October 2022, when something was changed in GHub.
  • Before this, I had to use the method detailed by Turn10 in this page on FH4: Wheel input on Steam[support.forzamotorsport.net]. Given Logitech's tendency for reversions, this may be needed again in the future.

Your G29 Should Now Be Working in FH4 Native Mode

If your wheel is not working properly in native mode, you'll need to redo part or all of the above steps to sort this out. Don't move onto to multi-USB until you have this sorted out!

If all is well, the next step is setting your system up for multi-USB controls.
Multi-USB Preliminaries
This guide assumes that you need third party software because the native Forza multi-USB does not see any driving controllers other than your Logitech wheel. If you haven't tried the native support already, give it a go - if it works, it is a lot less painful than the options that follow.

Assuming you do need a third party solution, it will consist of the following steps, each detailed in their own section below:
  • Set up a vJoy device that emulates a driving controller and is visible to Forza Horizon 4. This will operate in parallel to your Logitech wheel.
  • Set up a feeder program that captures your device inputs.
  • User the feeder to map device inputs to vJoy inputs. For example, I will map shifter buttons to vJoy buttons, and a handbrake axis to a vJoy axis.
  • Run GHub and connect your wheel. Wait until the wheel is connected before the next step.
  • Run the feeder.
  • Start Forza Horizon 4 and create a custom mapping.
  • If required, fix your force feedback.
  • Play!
HUGE WARNING. If FH4 can see your wheel as a native device, do NOT map any of the wheel axis (wheel or any attached pedals), hats or buttons to vJoy equivalents. FH4 will black screen shortly after start up. This process creates a virtual device that operates in parallel to the wheel device, and we use a custom in game mapping to combine the wheel and vJoy device inputs.
vJoy Installation and Basic Setup
This section outlines setting up vJoy, which is the virtual device used to forward signals from your physical controllers (handbrakes, shifters, pedals, etc) to FH4.

The original vJoy[github.com] was developed by shauleiz. However, this version does not support Windows 11 (which I'm using). So everything in this guide is based the version 2.1.9.1 fork by jshafer817. There are more recent versions with additional functionality, but as these don't work with Windows 11 at the moment, I have not tested these myself - you are on your own with these!

Download and run the installer that you can find here:

vJoySetup[github.com]

Reboot after installing.

At this stage, you need to decide which feeder you are going to use (Forza EmuWheel, UCR or Joystick Gremlin).

If you decide on Joystick Gremlin, run "Configure vJoy" and setup exactly as follows (7 axes only, 1 x Continuous Hat, all FFB enabled):



If you decide on Forza EmuWheel, run "Configure vJoy" and setup exactly as follows (all 8 axes, 1 x 4 Direction Hat, all FFB enabled):

insert FE configuration

If you decide on UCR, you can use either of the above configurations.

Please, please don't be like me and start tweaking configurations before you have everything working properly (well, you can be like me, but it will cost you a lot of time and frustration). Re-check that your setup exactly matches the above configurations before going any further.

The following three steps should be followed each and every time you make any changes to your vJoy configuration (see warning above re: time and frustration if not).
  • Click "Apply" to apply changes. Wait a bit for the message about restarting now or later to pop up (doesn't always happen). Select "Restart later".
  • Untick "Enable vJoy" to disable vJoy, wait for the panel to grey out, and then tick "Enable vJoy" to re-enable (this is probably redundant with the reboot, but I do it as belt and braces).
  • Reboot! (Really. Do this!)
I really, really recommend you do this every time you make a change in vJoy. I suspect I lost a couple of days to assuming Windows would just sort things out. Don't be me.

Registry Changes for Steam Version of FH4

The next step is the last thing needed to get vJoy working with the Steam Version of Forza Horizon 4. Be aware this may cause problems with using vJoy with other games/applications, so you may need to reverse this step in the future! This step will BREAK the Windows store version of Forza Horizon 4.

Editing the registry is a high risk step!

Open Registry Editor and find the following registry keys for vJoy device 1:
Computer\HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_1234&PID_BEAD Computer\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_1234&PID_BEAD
Add or modify the following value/data pair in these keys (see the Appendix if you want to know what this is about):

Name
Type
Data
OEMData
REG_BINARY
43 00 88 01 fe 00 00 00

Side note: The above data is as recommended in the EmuWheel discord (you can download a file called "vjoy_is_car_controller.reg" from the discord #helpdesk channel which makes these changes for you). But I've done a bit of experimentation and found that you get away with a data line as simple as
40 00 00 00 00 00 00 00
(40 followed by 7 pairs of zeros).

After you have made these changes, run "Configure vJoy", untick "Enable vJoy", wait a bit, retick "Enable vJoy", and finally reboot.

At this point vJoy is setup for the Steam version of FH4.

If you need reverse this change in future, simply delete the OEMData value you created/modified above, and do the disable vJoy/enable vJoy/reboot dance.

Multiple vJoy Devices, Alternative Configurations

For the remainder of this guide, I'm assuming you have setup only vJoy device 1 per one of the settings described above. It is possible to set up more than one vJoy device (but Forza EmuWheel will only work with device 1) and it is possible to use different vJoy configurations for UCR and Joystick Gremlin (but Forza EmuWheel will only work with the configuration detailed above).

However, I figure if you know enough to make these sorts of changes, you know what you are doing and don't need help from this guide. That said, if you are one of these advanced users, I've done a bit of trial and error experimentation to work out the range of vJoy parameters that work with FH4 - these are in an Appendix at the end of the guide.
Joystick Gremlin Setup
Reminder: You only need one of Joystick Gremlin, Forza Emuwheel and UCR. Emuwheel and UCR are most commonly used for FH4, I'm using Joystick Gremlin for cross compatibility with my Joysticks.

Joystick Gremlin is a portable application which you can download from WhiteMagic's github Joystick Gremlin releases page[github.com]. Extract the file to a convenient location.

The process for Joystick Gremlin set up is:
  • Connect the peripherals you will be using with Joystick Gremlin (JG).
  • Run "Joystick Gremlin.exe" in the JG folder..
  • Go through the tabs for the peripheral's you want to map and select buttons and axes that you want to remap, and perform any additional transforms and modifications you need to apply.

    In the first example, I have my handbrake y-axis mapped to the vjoy device x-axis, and I have applied a response curve (mainly because I want to test the effect of inverting my handbrake response in FH4).



    In the second example, I show mapping VNM shifter Button 1 to vjoy device 1 Button 1. I have done this for the first 10 VNM buttons, which allows me to use both the 8 gear H-shift mode and the sequential shift mode in a single mapping.



  • Save the profile!

To start the feeder, select and load the profile you want (as far as I can tell, it automatically loads the last profile when you start up), and hit the controller icon in the top left. When this is green, JG is running.



Two quick points on JG:
  • It has a lot of options and functionality. Check the documentation if you want to explore more.
  • Note that you can see the G29 wheel available for mapping in the setup phase. Don't map any of your wheel inputs, as this will cause FH4 to lock up after one of the warning screens. This is probably because FH4 is seeing a native version of the wheel, and a second version of the wheel via JG (this warning also applies for EmuWheel and UCR - don't map your wheel or you will break FH4).
Forza EmuWheel Setup
Reminder: You only need one of Joystick Gremlin, Forza Emuwheel and UCR. Emuwheel and UCR are most commonly used for FH4.

EmuWheel is a portable application which you can download from the Forza EmuWheel homepage[forzatools.weebly.com]. Extract the file to a convenient location.

The process for EmuWheel set up is:
  • Connect the peripherals you will be using with EmuWheel (NOT your Logitech wheel).
  • Run "Configurator.exe" in the EmuWheel folder.
  • Map the axes, buttons and D-Pad you need to use in FH4. Note that you **must** map a steering axis in EmuWheel (won't run without it), and also that you only need to map axis, buttons etc. that you will be using (in my case, one axis for handbrake, 2 buttons for sequential shifter).

    I suggest saving after each mapping, as this process sometimes crashes. I've found it is a little more reliable to map buttons first and axis afterwards (I suspect I have a noisy handbrake that jitters after the first mapping).

    To map a button, click "Set" under buttons, select a button you are mapping to from the list, and then click the button on the device.

    To map an axis, click "Set" and then move the axis on the peripheral you want to map.

    My simple configuration is shown below, with my handbrake mapped to the steering axis (I map it back to handbrake in game).



  • Save your configuration and exit the configurator!

To start the feeder, run "Forza EmuWheel.exe" in the EmuWheel folder. This should load your configuration and give some diagnostics. Assuming no errors, you can then start EmuWheel and move on to in game setup.



Two brief notes:
  • The EmuWheel documentation states that you need to run "Hush.exe" before starting EmuWheel. This is not required for the Steam version of FH4.
  • If the device you have mapped to the steering axis doesn't support force feedback, EmuWheel will warn you about this and disable force feedback for the vJoy device (e.g. my handbrake in the above screenshot). This does not affect EmuWheel's operation.
Universal Controller Remapper Setup
Reminder: You only need one of Joystick Gremlin, Forza Emuwheel and UCR. Emuwheel and UCR are most commonly used for FH4.

UCR is a portable application which you can download from Snoothy's github UCR releases page[github.com]. Extract the file to a convenient location.

The process for UCR set up is:
  • Connect the peripherals you will be using with UCR (NOT your Logitech wheel).
  • Run "UCR.exe" in the UCR folder. The first time you run UCR, it will ask to unblock some libraries which have been blocked by Windows security. These are the addins that are part of UCR, and if you don't unblock them, UCR won't work at all.
  • From the Profiles Pane on the left click on the "+silhouette"icon to add a new profile and give it a name.
  • Select the peripherals you want to map to vJoy as Input Devices, and vJoy Stick 1 as the output device. Click "Create" and you should get something like this:



  • Save at this point.
  • Edit the profile (double click the Profile name in the left pane) and map buttons and axes from the devices you want to use.

    To do this, add whatever plugins you need. For me, I added one "Axis to Axis" and two "Buton to Button".

    For each map select the input device you are mapping, and the vJoy output you want to map, and any modifiers you need to apply (e.g. inverting an axis). This screenshot shows my mapping for an axis and a button.

    insert mapping

    (The Unknown input is a button on my shifter, which works fine)

  • Save your configuration!

To start the feeder, either edit the Profile you want to run and hit the play icon, or simply select the Profile in the Profile pane and hit the play button.



You can tell that your profile is running by checking the title bar of the main UCR window - the runing profile name is shown next to the profile icon ("Forza vJoy" for me). If no profile is running, this will read "None".
In Game Multi-USB Setup
This is the home stretch, and hopefully the easiest part of setting up the multi-USB configuration. The steps are:
  • Start up GHub.
  • Connect your wheel.
  • Start up your feeder and get it running with the profile you set up in the previous steps.
  • Start Forza, go into options and select controls.
  • Check that your native wheel is available under wheel.



  • Check that you have a completely empty custom wheel configuration (all mappings undefined). This is important for preserving as much as possible of the native wheel mapping in the next step (See Appendix if you don't have any empty profiles).



  • Now go back your native (G29) wheel profile and go down to the first button you want to map to one of your other peripherals - in my case Shift Up. Hit Enter. At this point, Forza will ask you to select which profile you wish to overwrite - pick the empty profile you found in the previous step.



    This is something Turn10 have done really well - if the profile you select is empty, it will copy everything from the native wheel profile into the empty profile, so you keep all of the native wheel context mapping for submenus! After this, a remap dialogue pops up.



    At this point, hit the button you want to map - in my case, Shift Up is Device 1: Button 10 which corresponds to the vJoy mapping of shift up on my sequential shifter.



  • Forza should now have automatically filled the empty profile with a copy of your native wheel profile, switched you into this profile, and remapped your first button.
  • Now remap all of the other non-wheel buttons you want to use with this profile. (keeping in mind that wheel is shorthand for the wheel itself and any pedals/shifters/etc. plugged into the wheelbase).
  • Save the profile. This also makes the custom wheel profile your default wheel profile.
  • Finally, remap any axes and d-pad buttons you are using. From my experience, remapping axes before buttons can cause problems if your axis has any noise/jitter - after you move an axis once, Forza keeps reading it for later remaps. If you do run into this problem, you may need to play around with dead zones (I don't have a satisfactory answer to this issue yet).
  • Save the profile again.

All going well, you should be able to start playing with a fully mapped set of controls. The next time you want to play, you'll need to go through the following start up routine:
  • Start GHub and connect your wheel.
  • Start your feeder.
  • Start Forza. You should default to the custom profile you created above.
If you make a mistake in setting up a configuration and you want to do a fresh start with a clean custom profile, see the Appendix below for the steps to reset custom wheel configurations.

At this point, you should go to the game and do some driving. All going well, everything should work as expected. Test that your wheel and pedals are working as expected, and that the game is responding to the other USB devices that you have added to the custom profile.

If things aren't quite right, you may need to try the following troubleshooting steps.
  • If force feedback is missing in action, see the next section for a quick fix.
  • If your axes are backwards, try inverting them in your feeder software.
I will add to this list as issues and solutions come up in the comments.
Fix If Force Feedback Stops Working
So we've finally got Forza cooperating with a Logitech wheel and other USB peripherals. Time to drive at last ... Except. You get behind the wheel and all of the peripherals are working fine, but there's no force feedback.

Fortunately, this last is the last issue to address in this guide, and the steps are easy, if slightly fiddly to fix.

This problem happens if Forza decides vJoy is your primary controller, and then tries to operate force feedback from the vJoy device. Which isn't connected to your wheel. The fix is to flip primary device back to your G29 (or other natively supported wheel).

Before getting to this fix - there is one minor annoyance - if you make any changes in your custom profile, Forza will flip the primary controller, so you'll need to reset it again. So I recommend making sure your configuration is final before applying this fix.

This is a mildly high risk step. Get it wrong and it may affect your Steam save games.

I may write a script to do this fix in the future, but for now, you'll need to follow these manual steps.
  • The first thing you are going to need is a decimal version of your wheel's VID and PID. For a G29, these are 46D and C24F. You can do this conversion with the windows calculator in programming mode, which gives a decimal value of 74,302,031.



  • Next you need to find a file with the roll off your tongue name of "InputTranslationManager_Profiles.Profiles". This will be in your Steam userdata folder in a path something like this:
    C:\Program Files\Steam\userdata\XXXXXXX\1293830\remote
    If you've installed steam in a non-default location, your userdata will be in that folder. XXXX is your steam id number - if more than one person uses steam on your PC, you'll need to work out which one is yours. 1293830 is the FH4 app id (1551360 is the appid for FH5 if needed).
  • Make. A. Backup. Copy. Of. This. File.
  • Really, make a backup!
  • Edit the file with notepad or another text editor (NOT WORD!).
  • Do a text search - you are looking for a line starting with <RawGameControllerInputMappingProfile and containing the search text "IDS_CustomWheelProfile_X" where X is the custom wheel profile with broken force feedback - you are going to fix the VID/PIDs in this line.
  • (Optional check) The current values for PrimaryDeviceVidPid and FFBDeviceVidPid should both be 305,446,573, which corresponds to the vJoy device 1 VID of 1234 and PID of BEAD.
  • Replace the values for PrimaryDeviceVidPid and FFBDeviceVidPid with the value calculated for your wheel above WITHOUT COMMAS AND SURROUNDED BY DOUBLE QUOTES. So for the G29, the values should like this:
    PrimaryDeviceVidPid="74302031" FFBDeviceVidPid="74302031"

Close your editor and you should now be good to go!
Remove vJoy Customisation for Forza Horizon
This may be required if you are having vJoy problems with other games, or if you need to reset your FH4 vJoy configuration because it isn't working properly.

EVERYTHING in this section is A HIGH RISK STEP!

In theory, this should be as simple as:
  • Removing the OEMData values from:
    Computer\HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_1234&PID_BEAD Computer\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_1234&PID_BEAD
  • Run "Configure vJoy", untick "Enable vJoy", wait a bit, retick "Enable vJoy", and finally reboot.

However, if you want to nuke your settings for vJoy device 1 back to the stone age, try this:
  • Run "Configure vJoy", untick "Enable vJoy".
  • Delete the device
    VID_1234&PID_BEAD
    subkeys from the following registry keys.
    Computer\HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\DirectInput Computer\HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM Computer\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM
  • Reboot.
  • Reconfigure vJoy, which should create fresh registry keys.
Appendix: How to Reset Custom Wheel Configurations
The process presented in this guide requires creating custom wheel profiles. However, if you are like me, you will make some mistakes/misconfigurations while you are working out how you want your custom profile to look and work.

If you are only changing one or two settings, it's pretty easy to remap those settings in your custom profile.

However, sometimes it is easier to just clear the profile altogether and start from a completely fresh profile.

The process is simple, but not well documented.
  • Start GHub and connect your wheel.
  • Start Forza and go to Options->Controls.
  • You will probably start in the custom profile you are working on, but there is no obvious way to clear the profile. I believe this is because you can't clear the active profile.


  • To fix this, make another profile active by selecting it and "Save". For simplicity, I make my G29 native profile active. You can also use any other custom profile you have created - but be warned that if you haven't connected peripherals and feeders, you may end up clearing that profile due to missing bindings (it is a two for one if you want to clear two profiles at once).
  • Then go back to the profile you want to reset and there should now be a "Clear Profile" option at the bottom of the screen.

Appendix: Allowable vJoy Parameters for FH4
This table details combinations of feeder software and vJoy configurations that work with Forza Horizon 4.

Feeder
Axes
Buttons
POV hats
POV Type
Force Feedback
Forza EmuWheel
8
128
1
4 Direction
All Enabled (1)
UCR
2-8 (2)
16-128
1-4
Either
All Enabled (1)
Joystick Gremlin
2-7 (2, 3)
16-128
1-4
Continuous
All Enabled (1)

(1) Enable effects enabled, all effect types enabled.
(2) Tested with X, Y for 2 axes.
(3) Tested with All except Dial/Slider2 enabled for 7 axes.

A dash specifies a range (2-8). If a cell has only one entry, that value is mandatory for the feeder. If you use values outside the ranges/mandatory values, the feeder may not work, may crash, or Forza won't see the vJoy device (with the end result it can't be used for Forza).

Joystick Gremlin will crash and lock up if you run it with 8 axes enabled and enable the car controller flag in the the Registry OEMData value (0x40).

As an example, I'm using a pretty simple setup for my configuration - 2 axes and 16 buttons. This is one more axis than I need for my handbrake, and matches the number of buttons on my VNM shifter.

Appendix: OEMData Registry Value Fine Detail
This section gives a quick summary of my understanding of the various flag constants used in the OEMData registry value throughout this guide.

The G29 value data is:
43 00 08 10 19 00 00 00
is interpreted as:
  • Byte 1-43 is made up of:
    • 40: is a wheel controller. From putting this guide together, I'm guessing this is absolutely required for Forza Horizon to detect the controller as a wheel at all!
    • +1 has a Z axis.
    • +2 has a POV hat.
  • Byte 2-00: X, Y, Z axes are on the default joystick (Jn) axis.
  • Byte 3-08: has an R axis.
  • Byte 4-10: the driver will be autoloaded by GHub.
  • Byte 5-19: the controller has 0x19 or 25 buttons.

While the EmuWheel vJoy data is:
43 00 88 01 fe 00 00 00
is interpreted as:
  • Byte 1-43 is made up of:
    • 40: is a wheel controller. From putting this guide together, I'm guessing this is absolutely required for Forza Horizon to detect the controller as a wheel at all!
    • +1 has a Z axis.
    • +2 has a POV hat.
  • Byte 2-00: X, Y, Z axes are on the default joystick (Jn) axis.
  • Byte 3-88: has an R (08) and U axis (80).
  • Byte 4-01: has a V axis.
  • Byte 5-fe: the controller has 0xfe or 254 buttons.

I'm assuming all values are required for the Logitech wheel. However from the experimentation I've done with vJoy, it looks as though Forza only cares about the 0x40 value in the first byte to detect vJoy as a wheel controller. This conclusion may not apply if you are actually including a wheel axis or doing a more complex setup than I have detailed in this guide (and the values may very much matter to games other than Forza).

These values come from some very old directX include files (mmddk.h and dinput.h) - there are quite a few more constants, and you may need to to hit the wayback machine to find copies of these files.
9 Comments
LeadMagnet  [author] 2 Jul @ 11:24pm 
> I asked in the discord and was directed to use UCR to only map the shifter to the vjoy device which worked thanks to your guide :)

Excellent - I think emuwheel works the same way - FH4 breaks if you try to use vjoy to map any wheel that is supported in FH4, but it has been a while since I checked. (I moved to Fanatec, but most of the stuff in the guide still applies - still using it for FH4. FH5 is better on multi-device, and just a better experience with a wheel)
Rodin 2 Jul @ 7:01pm 
I asked in the discord and was directed to use UCR to only map the shifter to the vjoy device which worked thanks to your guide :)
LeadMagnet  [author] 2 Jul @ 3:02pm 
> When searching around have you seen the wheel settings tab disappearing after enabling emuwheel?

Sorry - I haven't seen this. I'd suggest trying the Emuwheel discord. It's very active, if a bit chaotic.
Rodin 1 Jul @ 10:43pm 
Thank you for the guide. When searching around have you seen the wheel settings tab disappearing after enabling emuwheel? vjoy monitor is showing its working but not FH4
Raiden 6 May @ 4:29pm 
Thought I'll share this as well. Might be DFGT specific, but updating vJoy configuration will make one of the wheel's HID drivers borked. This will cause the wheel to not apply the correct FFB/wheel turn settings and make Profiler act funny. To fix this, go to Device Manager > HID Devices and attempt to update drivers of "Game controller compatible with HID" (might not be the exact name in English). One of these will become "Logitech Driving Force GT USB (HID)", then reconnect the wheel and everything should work as before.
Raiden 6 May @ 4:28pm 
I was fighting with FH4 for a week trying to get Logitech Driving Force GT and TH8S combo to work together. Turns out the "vJoy as a wheel" registry edit was all I needed. Strange it's not mentioned on the Emuwheel's website... Using UCR and it just works, had to adjust FFB device in the input configuration as well.

Trying to bind gears will always end with Axis 2 being bound for me. The workaround: stop UCR and open vJoy Feeder, set axes Y, Z and Rx (2, 3 and 4 according to Forza) to 100%, and use buttons section to bind gears in-game. Remember to set axes back to initial values or re-open the Feeder to achieve the same, as the state of the controller is not reset on Feeder's quit. (It's mostly affecting the Start Menu, so not a major issue)
polynomial2001 4 May @ 6:31am 
Universal Control Remapper (UCR) worked (still testing FFB) for me to link a Logitech G920 with a Thrustmaster TH8S Shifter and use them together with the Steam version of Forza Horizon 4 (FH4). This setup also requires HID-Hide and VJoy to be installed. No registry editing was required.

Plan to spend a day testing and documenting button and axis mappings and entering them in UCR and FH4; once entered though, UCR and FH4 save these settings. The created UCR/VJoy device works just like the G920, except now the TH8S replaces the Logitech Driving Force Shifter.

Not clear yet if FFB is fully working, though the 'Center Spring in FFB Games' option in G Hub provided adequate force feedback performance in FH4.

I played this setup on FH4 for about an hour and I was very pleased with the results.

LeadMagnet's instructions were helpful with testing the options listed in it. Everything you need to know and more is in there if you really want to spend the time to get it working. I did :-).
LeadMagnet  [author] 10 Apr @ 11:18pm 
No worries - let me know if you have any queries.
Roger 5 Apr @ 10:58am 
Thanks a lot for your work on this matter, i’ll try it as soon as i can.