Sign in to follow this  
Skywolf

Possible Solution: Windows 8 and 8.1 Joystick Solution for FSX and Prepar3d

Recommended Posts

Hey everyone,

 

I believe I have solved the joystick woes with Windows 8 and Windows 8.1.  I have done 2 days of stress testing FSX and P3D with multiple installs of the program and OS, and I haven't had a disconnect yet.

 

Before I go further - I want to give my thanks to certain individuals who have helped me and inspired me to solve this joystick annoyance.

 

1) Word Not Allowed for having his awesome guides

2) AVSIM's staff/team for creating the amazing Hardware/Software Guide to FSX/P3D

3) Peter Dowson's FSUIPC utility (it got me through the periods when no joystick fix was avialable)

4) Orbx Team - Thank you Global and your Tips and Tricks Forum section

5) NickN's - FSX Computer System Guide

6) Ranak Jones of "Rogue's Guide to Acquisition: Principles of Final Frontier" for sending me a spare XFX 6970 for my system and pointing me to Windows 8 Registry to search for USB Device GUIDs potential errors

7) Microsoft MSDN for having Windows 8.1 Pro for testing/evaluation purposes only.

8) LM Prepar3d Developer Network

 

Testing:

 

1) FullScreen FSX in Eyefinity Mode (5760x1200) for 3 hours+

2) Windowed FSX in triple screen mode and 1920x1200 for 4 hours+

3) Multiple active windows on top of FSX Windowed in background for 4 hours+

4) Testing was done with USB 3.0 and USB 2.0 ports

 

FSX testing was in Win 8.1 and 8, and P3D 1.4 was in Win 8.

 

My System

 

Cpu: i5-750 (intel 1156 cpu) overclocked to 4.1Ghz

Memory: 8GB DDR3

Storage: 1xSamsung 830 SSD at Sata III (Main drive), Intel 80GB SSD at Sata II speeds, 1 TB hitachi mechanical HDD at sata II <- all connected to PCIEx4 Sata III controller)

Motherboard: MSI Fuzion p55A - has native usb 2.0 and Renesas USB 3.0 controller

Video: New XFX 6970 2GB with latest ATI drivers

OS - Windows 8 Pro Clean install / Windows 8.1 Clean Install

Joystick: Thurstmaster Hotas X

 

Windows 8 Solution - (FSX / Prepar3d 1.4)

 

1) Make sure power management features are off or set to high

2) Most important setting is USB Selective Suspend Setting is Disabled (we all knew this)

 

7BVW9.jpg

 

Honestly, that setting does not disable USB selective suspend in Windows 8 (this is for Windows 8 only), like it promises.

 

The power management on USB devices is set to Selective Suspend

 

Please see your HID Devices, USB Input Device and USB Root Hub Devices - They are STILL set to Suspend.

 

q6Omx.jpg

 

dAI3Y.jpg

 

KGqBk.jpg

 

 

You have to turn OFF the manual power savings one by one to all USB Devices/Compositive Devices and the all the USB Root Hubs (this is v.important).  If it says "Allow the computer to turn off this device to save power" and is checked then please UNCHECK it

 

For example like this

 

Dq6yp.jpg

 

 

This was discovered when I was searching for Joystick UID's in Windows 8 based on Ranak's suggestion.  This is where stuff gets weird for both Windows 8 and Windows 8.1.  I am no registry expert, but GUID's for my joystick is half correct and half backwards as compared to one listed in FSUIPC's ini file

 

See Pic - Windows Registry

 

lfKUT.jpg

 

 

And my Joystick GUID in FSUIPC

 

CLOA.jpg

 

So for some reason half of the GUID is backwards in Registry - I do not know if that is normal or not but that led me to search all the usb devices/ports in Device Manager.  Here I found all the power saving features were somehow enabled when Windows Power Management is explicitly set to disable.

 

 

Recap

 

 

So for Windows 8 Pro ONLY - Uncheck Allow the computer to turn off this device to save power and make sure Windows Power management also has Selective Suspend set to Disabled.

 

 

 

Prepar3d 1.4 - Please have JOYSTICKS=1 in [CONTROLS] in P3D.cfg (more on this later)

 

 

 

Windows 8.1 Pro (RTM Version) - FSX TEST

 

No joystick disconnects with 1 Setting change Only - Joystick works in Windows 8.1 Pro

 

7BVW9.jpg

 

 

 

I am seeing that all devices still have the USB Power Management check in windows 8.1 but in FSX with PNW, and Bowerman addon, Carenado B200 - Joystick did not disconnect.  The only crash I got was from latest FSUIPC 4.92.

 

If in Windows 8.1 you have joystick disconnects, then just turn off all those power management features as listed in for Windows 8. 

 

 

 

Miscellaneous Info

 

FSUIPC

 

I have it installed but it Zero Joystick Configuration in all tests.

 

 

I hope this helps everyone - as Windows 8.1 Pro definitely works fantastic with no joysticks issues so far.  And Windows 8 works with all power management features individually turned off in all those sections listed.

 

 

Have a great day,

 

Skywolf

  • Upvote 2

Share this post


Link to post
Share on other sites
Help AVSIM continue to serve you!
Please donate today!

Hi Skywolf,

 

I want to thank you for your efforts and to share the results with the AVSIM community!

 

I am certainly going to try the fixes you suggest.

 

Best regards,

 

Jos

Share this post


Link to post
Share on other sites

Sticky please mods!

 

I'll give this a shot after I get home tonight, thanks Skywolf!

Share this post


Link to post
Share on other sites

Admins, why is this marked as SOLVED? While I whole-heartedly endorse and appreciate the efforts being made, this issue is anything but solved. Joystick still disconnects on Windows 8.1 RTM with the proposed solution - generally under heavy load and/or while task switching (or the combination of both).

 

To the OP's question about the apparent inversion of the individual byte sequences in the joystick GUID. What you are seeing is the effect of Wintel's "endianness". Endianness is a term that refers to the order in which bytes are sequenced and stored in memory. The reasons this is done are technical, but are a reflection of the CPU architecture, the operating system, and the most efficient way to read/access memory on a given platform. Modern Wintel platforms adopt what is called "Little Endian". Under this storage strategy, the individual bytes of any given multi-byte value are stored in the opposite order in which they would ordinarily appear. For example, the hexadecimal value 0xABCDDCBA would be represented in memory as BA DC CD AB on Windows 8 running an Intel/AMD processor. A "Big Endian" platform would store the bytes "as-is" without any form of inversion, namely AB CD DC BA. You can Google for this if you want to dig into the phat hairy details.

 

In the example above, the GUID {C1E71A20-2044-11E3-8006-444553540000} decomposes to:

 

C1E71A20 (a 32-bit value, 4 bytes)

2044 (a 16-bit value, 2 bytes)

11E3 (a 16-bit value, 2 bytes)

80

06

44

45

53

54

00

00

 

NOTE: This break down is derived from the GUID data structure as defined in the Windows SDK. The last few byte sequences of the GUID are not "really" as they are represented in the GUID string. In reality, they are EIGHT individual bytes (not a giant 64-bit value, nor a 16-bit value followed by a 48-bit value as the textual GUID might lead you to believe). Individual bytes are always stored "as-is" regardless of endianness which is why these last few values appear "un-flipped".

 

All that said, if you examined this GUID in memory, you would see:

 

20 1A E7 C1 - 44 20 - E3 11 - 80 06 - 44 45 53 54 00 00

 

...which is, in fact, what you see represented in the system registry. Yay, technology.

Share this post


Link to post
Share on other sites

Admins, why is this marked as SOLVED? While I whole-heartedly endorse and appreciate the efforts being made, this issue is anything but solved. Joystick still disconnects on Windows 8.1 RTM with the proposed solution - generally under heavy load and/or while task switching (or the combination of both).

 

To the OP's question about the apparent inversion of the individual byte sequences in the joystick GUID. What you are seeing is the effect of Wintel's "endianness". Endianness is a term that refers to the order in which bytes are sequenced and stored in memory. The reasons this is done are technical, but are a reflection of the CPU architecture, the operating system, and the most efficient way to read/access memory on a given platform. Modern Wintel platforms adopt what is called "Little Endian". Under this storage strategy, the individual bytes of any given multi-byte value are stored in the opposite order in which they would ordinarily appear. For example, the hexadecimal value 0xABCDDCBA would be represented in memory as BA DC CD AB on Windows 8 running an Intel/AMD processor. A "Big Endian" platform would store the bytes "as-is" without any form of inversion, namely AB CD DC BA. You can Google for this if you want to dig into the phat hairy details.

 

In the example above, the GUID {C1E71A20-2044-11E3-8006-444553540000} decomposes to:

 

C1E71A20 (a 32-bit value, 4 bytes)

2044 (a 16-bit value, 2 bytes)

11E3 (a 16-bit value, 2 bytes)

80

06

44

45

53

54

00

00

 

NOTE: This break down is derived from the GUID data structure as defined in the Windows SDK. The last few byte sequences of the GUID are not "really" as they are represented in the GUID string. In reality, they are EIGHT individual bytes (not a giant 64-bit value, nor a 16-bit value followed by a 48-bit value as the textual GUID might lead you to believe). Individual bytes are always stored "as-is" regardless of endianness which is why these last few values appear "un-flipped".

 

All that said, if you examined this GUID in memory, you would see:

 

20 1A E7 C1 - 44 20 - E3 11 - 80 06 - 44 45 53 54 00 00

 

...which is, in fact, what you see represented in the system registry. Yay, technology.

 

Thank you for helping me in understanding the GUID info.  Amazing explanation.

 

As for your joystick...are you sure?  The amount of testing I have done is insane, and I have had not had a joystick drop.  Do install FSUIPC but do not configure your joysticks.  I have not tried FSX in Windows 7 compatilibity mode in Win 8.1 yet. 

 

I did leave FSX running while I was away doing errands for like 3 hours again today on Orbx PNW scenery - at around 1500 Feet with dense autogen.  Zero joystick drops.

 

But I do suggest that turning all Power saving features from All those USB devices/sections disclosed in the screenshots - that does help.

 

Please let me know on how it works for you.

 

Thanks

Share this post


Link to post
Share on other sites

Unlike Windows 8, it seems (as your first post suggests) that Windows 8.1 grays out the power saving options on the USB devices when you disable the master option in the global system power management policy. Perhaps I will try to re-enable the master option, forcibly deselect the options from the individual USB devices, then go back and turn off the master. I have not yet rebooted either since making these changes. Perhaps the drivers are caching their power management setup internally. A good reboot should rule out that possibility.

 

FYI...no drop outs flying stock aircraft as of yet, but the PMDG 777 with high-density scenery (read: low frame rate) seem to exacerbate the problem for me. When the frames are high (> 20fps) the probability of a drop out seems to fall off dramatically. Idling on the runway in the T7 at a busy airport with photoscenery seems to bring out the worst of it.

 

UPDATE: Sadly, I must report - even with the individual USB devices disabled and a reboot - that within a few minutes of loading up the sim, my controllers all vanished. Will try removing FSUIPC entirely next.

 

UPDATE #2: No FSUIPC. All power management on USB devices and hubs completely disabled. I can elicit control death in less than 5 minutes. I'd almost be willing to say that the absence of FSUIPC actually exacerbates the condition.

Share this post


Link to post
Share on other sites

UPDATE: Sadly, I must report - even with the individual USB devices disabled and a reboot - that within a few minutes of loading up the sim, my controllers all vanished. Will try removing FSUIPC entirely next.

 

UPDATE #2: No FSUIPC. All power management on USB devices and hubs completely disabled. I can elicit control death in less than 5 minutes. I'd almost be willing to say that the absence of FSUIPC actually exacerbates the condition.

 

 

Don't feel bad. The power settings suggestion in this thread was previously proposed both here and on other flight sim websites. It worked for some people, but not others. FSXAssist, Linda and FSUIPC4 tend to overcome the problem, because they continue to poll the joystick, preventing FSX or P3D from losing control of the device. If none of those apps work for you, then you'll just have to wait for MS to admit that there is a bug in Win 8.  But despite overwhelming criticism, they haven't put back a viable start button, so I wouldn't expect them to care about the flight sim users.

Share this post


Link to post
Share on other sites

FSXAssist's next version was released yesterday, going to try it out this morning to see if Jim's latest attempt at fixing the drops works.

 

EDIT: It's version 1.08a, program should prompt for update upon launch.

Share this post


Link to post
Share on other sites

I have to say that I have tried every other suggested solution in the topics on this matter and none of them worked, except the FSIUPC fix.

There is a good reason why the other massive topic has the best post highlighted at the top.

I have resisited buying a key for this for years but was finally convinced when I found that the Majestic Software Dash 8 Q400 also didn't suffer from controller disconnects because, like FSUIPC, it doesn't use FSX to run its controllers.

With the greatest thanks to Mr. Dowson and himynameistrev, this is the only fix that actually does work for me, not even FsAssist but the author is welcome to the $12.95.

If you have found a fix that works for you, good.

 

Regards,

Nick

Share this post


Link to post
Share on other sites

I think the reason that the FSUIPC4 fix works better than the other approaches is because the joystick is totally disabled in FSX/P3D. Back when I switched to Windows 8, I also tried Don't Lose Your Joystick and Linda (both of which also take complete control of the joystick from the sim) and they seemed to work for me too. I don't use FSXAssist much, since I mostly fly P3D and XP10 these days, so I have to rely on what other people say about it.

 

 

Basically it's a bug in Windows 8 and if MS was ever going to fix it, it would have been fixed already.

Share this post


Link to post
Share on other sites

After spending a bit of time poking around in the internals of DirectInput and FSX, I've come to the conclusion that FSX is interfacing with DirectInput (a legacy API from the days of Windows XP) in a manner which allows it to "surrender" the input devices when the window is minimized, loses focus, or the OS demotes FSX to a "background process". In the course of this spelunking expedition, I've managed to write a little joystick/controller applet which does NOT lose DirectInput devices, even when FSX does. FSUIPC also uses DirectInput and it manages to not lose them either (making it the excellent alternative it is).This makes me believe that the problem may, in fact, be FSX itself - that Windows 8 elicits conditions (USB power management is clearly not it) earlier versions of Windows did not: conditions FSX was not written to adapt to (probably because it never surfaced during testing). P3D probably inherited the defect.

The only thing holding me back from using FSUIPC exclusively was the inability to map the POV HAT successfully. The refresh rate was just too low to provide a smooth pan (compared to when the POV HAT is mapped directly through FS). I managed to get around this problem using my own module to provide smooth panning support. Everything else, I delegate to FSUIPC. I seem to be off to the races - FS is free to do whatever the hell it wants (or doesn't want) with its controllers :) And I get to keep my $12.95.

Share this post


Link to post
Share on other sites

Sorry for the delay post - but did anyone get any success with my solution?  All my tests were done with clean os (with all windows updates) and fsx/p3d installs.  I have carefully documented where the controllers lose connection and don't.

 

And I do stress the system with Orbx sceneries, rex, and some complex aircrafts which I own.

Share this post


Link to post
Share on other sites

OK, I renamed the thread title since it's pretty clear we don't have a universal solution to the problem here.

 

Regards

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this