Microsoft Flight Simulator X: Steam Edition

Microsoft Flight Simulator X: Steam Edition

Not enough ratings
Fix controller loosing settings after disconnect or sleep
By Dr Nico
Joysticks and gamepads settings may reset to default after controller unplug/replug, or after entering controller or USB sleep mode

Settings come back after FSX restarts, but having to reconfigure a controller in flight is rather a hardish experience

This guide proposes a turnround to keep settings unchanged after a controller disconnect, and gives some explanations about FSX controller settings files

It does NOT involve FSUIPC, although same benefits can be expected when using this tool.
   
Award
Favorite
Favorited
Unfavorite
Who is this guide for ?

This guide may be of interest in this situation:
  • Use of a controller, joystick or gamepad, handled by FSX only
  • Controller not handled by FSUIPC
  • Experience a controller settings loss during a flight if:
    • unplug the controller, then reconnect it
    • the controller enters sleep mode.
      This can be either if the USB port goes into sleep mode, or with wireless controllers like XBOX going into power saving.
      During a long airliner flight, controller is often left untouched for some time, and may enter sleep mode by itself or through the USB port. When woken up, settings are reset to FSX defaults

This guide explains the main reason this happens, and proposes a turnaround solution.
How FSX handles controller settings
A few things first to understand how FSX handles controllers

2 files named both Standard.XML are involved for "default" and "current" keyboard, mouse and controllers settings, and also 2 lines in FSX.cfg configuration file.

NB: FSX.cfg always refer here to the configuration file in:
<Current User>\Appdata\Roaming\Microsoft\FSX

  • Standard.XML in Main FSX folder in Steamapps library:
    <Steam Library>\common\FSX

    This is the default controllers settings file, coming with FSX installation.
    It contains controllers default configurations, although now pretty outdated.
    It includes also "generic" controller settings, in case your controller isn't listed

    This file is known by FSX through that line in FSX.cfg:
    controls_default=<name without XML extension>

    Changing the name Standard.XML to anything else.XML is possible, as long as you modify also the controls_default= entry accordingly in FSX.cfg

    In case this file does not exist, or controls_default= does not match, FSX then:
    • recreates at startup, a carbon copy of the original Standard.XML,
    • names it as: Standard.XMLX,
    • and places it in <Current User>\Appdata\Roaming\Microsoft\FSX\Controls

    This file normally never changes. But updates for different or new controller DEFAULT settings can be added here.

  • Standard.XML in User folder:
    <Current User>\Appdata\Roaming\Microsoft\FSX\Controls

    This other Standard.XML file contains user customized settings for keyboard, mouse, and controllers, it is different from the first one described above.

    The file name can also be changed so as to keep different files with different settings for different situations, for instance: GA, airliners, specific airplane, ...

    FSX will load at startup the current user file matching the name set in FSX.cfg, line:
    controls_current=<name without XML extension>

    If no matching file is found, then FSX will build internally new default settings, based on the default <FSX folder>\Standard.XML, and save them at exit, in the <user folder> under the same file name <Current User>\Appdata\Roaming\Microsoft\FSX\Controls\Standard.XML

    Note that all user changes to the control settings are saved when exiting FSX.

  • FSX.cfg in User folder:
    <Current User>\Appdata\Roaming\Microsoft\FSX

    As everybody knows, this files contains all the settings that FSX uses to configure almost everything.

    As on purpose here, there are 2 lines of interest in this file, in the section [CONTROLS]:

    [CONTROLS] Controls_Default=Standard Controls_Current=Standard

    Details have been given in the 2 previous points, use these to customize controller files configuration if needed.

The User custom Standard.XML file
A bit deeper into the User settings configuration file

Sitting in <Current User>\Appdata\Roaming\Microsoft\FSX\Controls, it contains several sections for keyboard, mouse, controllers, each one having 2 separate descriptions for nomal mode, and Slew mode.

Each of these sections:
  • is included between tags <SimControls.Map></SimControls.Map>,
  • contains a <name></name> tag, that identifies it
Here is a simple search for their names:


Each section contains entries for all user settings: keys, controller axis/buttons, ....

The controllers sections are listed at the end of the file, here, the 2 last lines for XBOX 360 controller, which is how an XBOX one controller is detected.

All sections are initialized with "default" settings, taken from the other Standard.XML file, the one in FSX main folder.

Controllers management

As seen in previous picture, both lines for the XBOX controller name end with: #1

This #1 is a counter added by FSX, incremented each time a controller of the same type is detected by FSX.

This is a bit awkward, because when the same controller is unplugged then replugged in, here's what happens:


FSX creates a NEW controller section numbered with #2 at the end, with a complete DEFAULT configuration, and not the user current one, described in the #1 section.

Unplugging, then replugging again the controller, another #3 new controller appears again, with a new default configuration section:


Each time FSX discovers a controller, it treats it as a NEW controller, and feeds it with the default controller configuration that is defined for it, not the configuration that you would expect!

Note this #N counter keeps incrementing, there does not seem to be any limit.

This counter resets to #1 only when restarting FSX. In this case, controller is assigned the #1 configuration, the expected one.
Turnaround fix proposed
A few modifications now to <Current User>\Appdata\Roaming\Microsoft\FSX\Controls\Standard.XML will turnaround the way FSX adds incrementally controllers to this file, and hopefully meet the goal to keep the same controller configuration whatever happens to the controller.

Taking advantage of these 2 points:
  • Each controller section in between the <SimControls.Map></SimControls.Map> tags has initially a single <name></name> identifier tag.
    But several names, using the tag <name></name> can be added in the same controller section.
    All the controllers named in that section will use the settings of that section
  • If a same controller name is listed several times in different sections of the file, then FSX uses the section entries where the controller name appears first.
So the turnaround consists in adding to the section where the controller appears with #1 in its name, several copies of the same tag name, replacing the #1 by #2, #3, #4 ...

This way, any user change to the controller settings will be valid for any new controller created by FSX, in the extent to the # counter

It would be better to first clean up the file from the additionnal controllers that FSX added each time the controller disconnects, but this is not compulsory. Taking advantage of point 2 above, FSX processes correctly the file even if a same names appears several time in this file.

So here are the steps to follow:
  • Close FSX
  • Create a backup copy of your
    <Current User>\Appdata\Roaming\Microsoft\FSX\Controls\Standard.XML file as you are going to edit it
  • Open it with a text editor, like the free Notepad++ for instance
  • Locate the controller you want to modify, with the #1 at the end of its name, here for instance: Xbox 360 Controller #1
  • Copy/paste the whole line
    <name>Xbox 360 Controller #1</name>
    and change in sequence the #1 by #2, #3, #4, ... to create new lines with #N counter increments, as shown in current example here for the XBOX controller:
Make these changes to the file:
.
Do this also for the Slew line, to support also the slew mode:

Modify to
.
I've placed 10 lines for my convenence, allowing for 10 times getting the XBOX controller to sleep mode, but you can put any number of lines you want.

Save the modifications and start FSX

Check that it is working fine by unplugging and replugging your controller.
No settings loss should occur, unless the number of disconnections exceeds the maximum # lines added for a controller.

Try also to change some settings in FSX control settings page, and after an unplug/replug of the controller, check the changes are still there

Hope this helps!
9 Comments
dhoskins18 Nov 21, 2022 @ 10:21pm 
There is 1 thing I do not understand, that if this was designed for pilots to tune up their skills, then why is it set up for console controllers? You would think a joystick, hotas, something upscale, as I have a x56 Hotas, but I cannot get it to work worth a darn, as I am 64 and not pc savy, I cannot figure it out, its a shame as I love being in an airplane.
Chqnces Jan 19, 2021 @ 2:18pm 
Thank you!
Works as it should now 👌
Stormie Jun 18, 2018 @ 12:35am 
Nevermind. IDK wtf I did, but it SEEMS to be working now.
Stormie Jun 17, 2018 @ 11:35pm 
This isn't working for me, and as far as I can tell, I followed the instructions correctly. It's MASSIVELY annoying since the USB cable or my controller are super finicky and disconnect at the slightest provocation.

Mind seeing if you can help me out a bit?
Erazer Apr 8, 2018 @ 7:17am 
Basically using the sleep and hibernate functions is not good policy. Far better to turn the computer off when you are not using it if you really want to save energy.

The longer you stay on-line the longer the hackers have to gain entry to your system.

The CIA also states that this is the case.

As for being misanthropic it means a hater of the human race.

As for the avatar it clearly reads F**K society.

That makes for two expletives in the last contributers post.

The continual use of expletives has always denoted a lack of mental ability.
Dr Ace Misanthrope Apr 7, 2018 @ 3:52am 
I am going to ignore Pegasus because he is clearly insane or a troll. How did we get onto porn?
But thanks again to the author. My shitty, broken cable needed replacing, or I needed FSUIPC, but instead this simple fix, editing the Standard.XML solved my issue. I didn't have to spend any money. So thanks!
Dr Nico  [author] Apr 7, 2018 @ 2:51am 
Thanks you for your feedbacks and comments!

I used this tweak a while back for a **wireless** Xbox controller + wireless adapter.
In airliner flights, Autopilot is On, and controller not necessary during cruise monitoring. I use the controller for taxiing, taking off, and landing
Controller goes to sleep mode by itself after a few minutes left untouched for battery saving.

Also, I sometimes plug the wireless adapter on my laptop usb port **after** FSX is started, this makes you fall in the same situation as disconnecting it: settings are reset.

The tweak described here will turnaround this FSX behavior and bring back your controller settings in any case.

Forcing usb power to "always on" is another solution but restricted only to "usb entering sleep mode" case. This will not work for wireless adapters entering sleep mode
Here, a wider range of disconnect or sleep situations is covered

Hope being more explicit, and hope it helps!

Blue and safe skies!
Dr Ace Misanthrope Apr 6, 2018 @ 8:49pm 
My Xbox One controller was cutting out due to the little pins in the cable, being pressed in. The cable cuts out constantly and I use it for Rocket League and FSX. So this was a saviour! Tweaking settings as suggested by Pegasus, the commenter below, would have no effect. It wasn't power saver.
Dr Ace Misanthrope Apr 2, 2018 @ 7:28am 
Thank you so much! Works PERFECTLY, as described. You saved me $38AUD as I was tempted to buy FSUIPC for this one function. Thank you!