Jump to content
The simFlight Network Forums

Joystick Loss


Recommended Posts

I have started to loose connection to joysticks in FSUIPC after months of normal operation.  Here is the log of a recent trial:

Console Started ...

 

********* FSUIPC4, Version 4.962 (8th February 2017) by Pete Dowson *********

Windows 8.1 Pro with Media Center 64 Bit reported as Build 9600 (OS 6.3)

fsx.exe version = 10.0.62615.0

Reading options from "C:\Program Files (x86)\Steam\steamapps\common\FSX\Modules\

Running inside FSX Steam Edition on Windows 8.1 or later

Module base=560E0000

User Name="Arlyn Liddell"

User Addr="liddellag@comcast.net"

FSUIPC4 Key is provided

WideFS7 Key is provided

       15 System time = 01/03/2017 16:14:48

       15 FLT UNC path = "C:\Users\liddellag\Documents\Flight Simulator X Files\

       15 ------ Module Version Check ------

       15        acontain.dll: 10.0.62615.0

       15             api.dll: 10.0.62615.0

       15        controls.dll: 10.0.62615.0

       15      fs-traffic.dll: 10.0.62615.0

       15             G3D.dll: 10.0.62615.0

       15        language.dll: 10.0.62615.0

       15            sim1.dll: 10.0.62615.0

       15        visualfx.dll: 10.0.62615.0

       15         weather.dll: 10.0.62615.0

       15          window.dll: 10.0.62615.0

       15 ----------------------------------

       47 Trying to connect to SimConnect Steam ...

       78 FS UNC path = "C:\Program Files (x86)\Steam\steamapps\common\FSX\"

      203 ---------------------- Joystick Device Scan -----------------------

      219 Product= CH PRO PEDALS USB

      219    Manufacturer= CH PRODUCTS

      219    Vendor=068E, Product=00F2 (Version 0.0)

      219    Serial Number=

      219 Product= CH FLIGHT SIM YOKE USB

      219    Manufacturer= CH PRODUCTS

      219    Vendor=068E, Product=00FF (Version 0.0)

      219    Serial Number=

      250 Product= CH THROTTLE QUADRANT

      250    Manufacturer= CH PRODUCTS

      250    Vendor=068E, Product=00FA (Version 0.0)

      250    Serial Number=

      250 Product= Cyborg X

      250    Manufacturer= Saitek

      250    Vendor=06A3, Product=0836 (Version 1.48)

      250    Serial Number=

      250 -------------------------------------------------------------------

      328 LogOptions=00000000 00000001

      328 -------------------------------------------------------------------

      328 ------ Setting the hooks and direct calls into the simulator ------

      328 --- CONTROLS timer memory location obtained ok

      328 --- SIM1 Frictions access gained

      328 --- FS Controls Table located ok

      328 --- Installed Mouse Macro hooks ok.

      328 --- Wind smoothing fix is fully installed

      328 --- SimConnect intercept for texts and menus option is off

      328 --- All links checked okay

      328 -------------------------------------------------------------------

      328 SimConnect_Open succeeded: waiting to check version okay

      328 Trying to use SimConnect Steam

      328 Opened separate AI Traffic client okay

     1422 Running in "Microsoft Flight Simulator X", Version: 10.0.62615.0 (SimC

     1422 Initialising SimConnect data requests now

     1422 FSUIPC Menu entry added

     1453 C:\Users\liddellag\Documents\Flight Simulator X Files\P-38 RESTORED.FL

     1453 C:\Program Files (x86)\Steam\steamapps\common\FSX\SimObjects\Airplanes

     6828 Weather Mode now = Theme

    11031 User Aircraft ID 1 supplied, now being used

    95250 System time = 01/03/2017 16:16:23, Simulator time = 16:14:55 (23:14Z)

    95265 Aircraft="P-38J Restored"

   109328 Starting everything now ...

   110484 Advanced Weather Interface Enabled

   269859 Sim stopped: average frame rate for last 172 secs = 29.8 fps

   269859    Max AI traffic was 2 aircraft (Deleted 0)

   325734 ---------------------- Joystick Device Scan -----------------------

   325734 -------------------------------------------------------------------

 

The rescan did not find any controllers. I monitored the raw joystick data using slimdx and there were no changes in joystick assignment and the raw values were stable.  The only action I took was clicking the 'Reload all assignments' button.

 

A second problem is in the calibration screen.  The elevator axis is jumping all around, making it impossible to do a calibration.  Again the raw values monitored with slimdx are completely stable and vary normally.  It is almost as if the conversion routine is oscillating as values jump all over the whole range.  The values reported by the axis assignment screen are stable and vary over the normal range.

 

My Ini file is attached.  It is presently messed up from normal due to experiments trying to diagnose this problem.

 

Any suggestions on how to find and correct the source of these problems will be appreciated.

 

FSUIPC4.ini

Link to comment
Share on other sites

14 minutes ago, LiddellAG said:

The rescan did not find any controllers. I monitored the raw joystick data using slimdx and there were no changes in joystick assignment and the raw values were stable.  The only action I took was clicking the 'Reload all assignments' button.

What "rescan". I don't think reloading assignments necessarily does the whole works. To force a USB joystick rescan you'd normally need to pull one of then out of the PC or hub and plug it back in again. 

16 minutes ago, LiddellAG said:

My Ini file is attached.  It is presently messed up from normal due to experiments trying to diagnose this problem.

I'm not so sure about "messed up", but it still lists the same joysticks and their assignments, with GUIDs, so they are still in the Registry and will still be subject to FSUIPC's normal DirectInput requests.

Does FSX still recognise them when FSUIPC doesn't?

You are using probably the worst version of Windows ever for DirectInput devices. It has a predilection for losing them. I would strongly suggest you either return to Windows 7, which IMHO is still the best version ever, or update to Windows 10 which now seems to be a lot better behaved with devices.

Also, I see you are two full versions of FSUIPC out of date. Please install 4.964 before coming back.

Pete

 

 

Link to comment
Share on other sites

Pete;

Thank you for the quick response.  I have upgraded to version 4.964 and things have changed.  The pitch axis is no longer oscillating, it appears that that problem was due to the Cyborg controller with a confliction assignment.

FSUIPC still losses access to the controllers.  The loss depicted in the attached log occurred when I opened FSUIPC to try to solve the brake problem.  Windows 8.1 is not loosing the controllers as my Joystick Monitor program, which uses slimdx to access the controllers, does not have any problem and was continuously monitoring the Joysticks during the full period of the log. Unplugging the controllers and reattaching them has no effect, FSUIPC still cannot find the controllers.  I haven't tried to return the controllers to FSX because I have other windows, which if focused cause FSX to loose the joysticks.  FSUIPC used to work perfectly, even when going to other windows.  During the period of the log file focus never left FSX/FSUIPC.

The 'messed up' condition of the ini file is that the controller setup was not uniform across all axis'. 

I am seriously considering returning to Win 7, I can't yet go to Win10 because of MediaCenter.

I reassigned all axis' after the upgrade and the ini file now shows:

[JoyNames]
AutoAssignLetters=Yes
A=CH PRO PEDALS USB
A.GUID={E0AC2670-E88D-11E6-8003-444553540000}
B=CH THROTTLE QUADRANT
B.GUID={E0AC2670-E88D-11E6-8009-444553540000}
C=CH FLIGHT SIM YOKE USB
C.GUID={E0AC2670-E88D-11E6-800A-444553540000}
D=Cyborg F.L.Y.5 Flight Stick
D.GUID={89389AD0-F5DB-11E6-8001-444553540000}
0=CH PRO PEDALS USB
0.GUID={E0AC2670-E88D-11E6-8003-444553540000}
1=CH FLIGHT SIM YOKE USB
1.GUID={E0AC2670-E88D-11E6-800A-444553540000}
2=CH THROTTLE QUADRANT
2.GUID={E0AC2670-E88D-11E6-8009-444553540000}
3=Cyborg F.L.Y.5 Flight Stick
3.GUID={89389AD0-F5DB-11E6-8001-444553540000}
 

[Axes]
PollInterval=10
RangeRepeatRate=10
0=AX,256,F,66387,0,0,0 -{ TO SIM: AXIS_LEFT_BRAKE_SET }-
1=AY,256,F,66388,0,0,0 -{ TO SIM: AXIS_RIGHT_BRAKE_SET }-
2=AZ,256,F,65764,0,0,0 -{ TO SIM: AXIS_RUDDER_SET }-
3=CX,256,F,65763,0,0,0 -{ TO SIM: AXIS_AILERONS_SET }-
4=CY,256,F,65762,0,0,0 -{ TO SIM: AXIS_ELEVATOR_SET }-
5=BX,256,F,66420,0,0,0 -{ TO SIM: AXIS_THROTTLE1_SET }-
6=BY,256,F,66423,0,0,0 -{ TO SIM: AXIS_THROTTLE2_SET }-
7=BZ,256,F,66421,0,0,0 -{ TO SIM: AXIS_PROPELLER1_SET }-
8=BR,256,F,66425,0,0,0 -{ TO SIM: AXIS_MIXTURE2_SET }-
9=BU,256,F,66424,0,0,0 -{ TO SIM: AXIS_PROPELLER2_SET }-
10=BV,256,F,66422,0,0,0 -{ TO SIM: AXIS_MIXTURE1_SET }-
 

[Axes.P-38]
RangeRepeatRate=10
0=AX,256,F,66387,0,0,0 -{ TO SIM: AXIS_LEFT_BRAKE_SET }-
1=AY,256,F,66388,0,0,0 -{ TO SIM: AXIS_RIGHT_BRAKE_SET }-
2=AZ,256,F,65764,0,0,0 -{ TO SIM: AXIS_RUDDER_SET }-
3=CX,256,F,65763,0,0,0 -{ TO SIM: AXIS_AILERONS_SET }-
4=CY,256,F,65762,0,0,0 -{ TO SIM: AXIS_ELEVATOR_SET }-
5=BX,256,F,66420,0,0,0 -{ TO SIM: AXIS_THROTTLE1_SET }-
6=BY,256,F,66423,0,0,0 -{ TO SIM: AXIS_THROTTLE2_SET }-
7=BZ,256,F,66421,0,0,0 -{ TO SIM: AXIS_PROPELLER1_SET }-
8=BR,256,F,66425,0,0,0 -{ TO SIM: AXIS_MIXTURE2_SET }-
9=BU,256,F,66424,0,0,0 -{ TO SIM: AXIS_PROPELLER2_SET }-
10=BV,256,F,66422,0,0,0 -{ TO SIM: AXIS_MIXTURE1_SET }-

Is there any significance that there are both letters and numbers in the [JoyNames] section?

Regards;

Arlyn

 

 

 

Link to comment
Share on other sites

33 minutes ago, LiddellAG said:

FSUIPC used to work perfectly, even when going to other windows. 

"Used to"? What did you change?

35 minutes ago, LiddellAG said:

Is there any significance that there are both letters and numbers in the [JoyNames] section?

The numbers is how FSUIPC identifies the devices in the Registry in order to get the GUID it needs to handle them. The letters are there so that if you move the devices around (unplug them and plug them in differently) it can keep track of them and not mess up all your assignments. The facility is called "JoyLetters", and you evidently enabled this facility else you'd have no letters!  It is described in the User Guide.

Pete

 

 

Link to comment
Share on other sites

Pete;

I was forced to refresh windows for problems beyond windows ability to recover and then to reinstall every thing not from the ap store.  I restored all the ini files from backups.  FSUIPC was updated to version 4.962 from version 4.955c in the reinstall.  These are the only changes I am aware of.

It is interesting that the instance GUIDs for the joysticks have not changed through all my machinations.

Regards;

Arlyn

 

Link to comment
Share on other sites

1 hour ago, LiddellAG said:

It is interesting that the instance GUIDs for the joysticks have not changed through all my machinations.

That's why I use them to tie up your assignments to the actual devices. The ID numbers themselves can change.

Pete

 

Link to comment
Share on other sites

I am under the impression that instance GUIDs are assigned by Windows and can be different each time a joy stick is removed and then reattached.  The product GUID is constant and is imbedded in the joystick.  My reference to instance GUIDs was to indicate that Windows was not reassigning the joystick identities.  Am I wrong?

Does FSUIPC use DirectX to communicate with controllers?

 

Link to comment
Share on other sites

On 3/3/2017 at 5:10 PM, LiddellAG said:

I am under the impression that instance GUIDs are assigned by Windows and can be different each time a joy stick is removed and then reattached.

No. They are different on different PCs, and are probably different if you reformat and reinstall Windows. I expect they can also change if you completely uninstall the device, so it removes all details from the registry and maybe INF files too. But otherwise they are the only sure way of keeping assignments the same if you disconnect and reconnect. Product GUIDs are not so useful because folks often have multiples of the same product.

On 3/3/2017 at 5:10 PM, LiddellAG said:

Does FSUIPC use DirectX to communicate with controllers?

Yes, of course. Only back in FSUIPC3 times and before was it using the "joy" interface, which is much simpler. But that's where the use of Joystick IDs comes from.

The DirectX methods also need to instance GUIDs to connect. So for compatibility I equate the one to the other. this was actually always done by Windows automatically (placing the Joystick ID alongside the GUID in the Registry) but it seems erratic with Win8 and Win10, especially it seems with Saitek devices.

Pete

 

Pete

 

Link to comment
Share on other sites

Pete;

Thank you for your excellent help.  I am at a loss to solve this problem.  I have disabled all start up programs and removed all FSX add ins except FSUIPC.  I still get random loss of joystick connections.  One occurrence was when I accessed FSUIPC and depressed a button in the buttons setup screen.

When the loss occurs, FSUIPC tries 4 times to reestablish contact with the joysticks.  If I disconnect the USB hub to which all my joysticks are connected and reconnect it FSUIPC again tries 4 times to access the joy sticks and fails to connect.

I have a program which accesses and monitors raw joystick state using slimdx.  Using this program I am able to read the raw values from the joysticks while FSUIPC cannot access them.  The program also can reconnect to the joysticks without any problem while FSUIPC cannot.

The log shows:

  2884907 *** EVENT: Cntrl= 65927 (0x00010187), Param= 0 (0x00000000) MAGNETO1_OFF
  2885313 Button changed: bRef=0, Joy=64, Btn=2, Released
  3088969 ***** HID USB device reconnected: re-initialising FSUIPC connections
  3088969 ---------------------- Joystick Device Scan -----------------------
  3088969 -------------------------------------------------------------------
  3089157 ***** HID USB device reconnected: re-initialising FSUIPC connections
  3089157 ---------------------- Joystick Device Scan -----------------------
  3089157 -------------------------------------------------------------------
  3089360 ***** HID USB device reconnected: re-initialising FSUIPC connections
  3089360 ---------------------- Joystick Device Scan -----------------------
  3089360 -------------------------------------------------------------------
  3090016 ***** HID USB device reconnected: re-initialising FSUIPC connections
  3090032 ---------------------- Joystick Device Scan -----------------------
  3090032 -------------------------------------------------------------------
  3279000 *** EVENT: Cntrl= 65732 (0x000100c4), Param= 0 (0x00000000) EXIT
  3279219 Sim stopped: average frame rate for last 416 secs = 29.6 fps

Since this is different from the initial scan when the joysticks are found, I assume that FSUIPC cannot communicate with them.

FSUIPC also does not respond to aircraft specific button presses but does respond to general assignments of the same button.

I have also tried using other aircraft, but the problem persists.

I have reinstalled FSX and FSUIPC to eliminate a corrupted copy being the cause.

Do you have any suggestion for finding the cause of this very annoying problem?

Best regards;

Arlyn

Link to comment
Share on other sites

1 hour ago, LiddellAG said:

When the loss occurs, FSUIPC tries 4 times to reestablish contact with the joysticks.  If I disconnect the USB hub to which all my joysticks are connected and reconnect it FSUIPC again tries 4 times to access the joy sticks and fails to connect.

Those log entries, " ***** HID USB device reconnected ..." are NOT records of FSUIPC "attempting" anything at all. they are notifications sent to FSUIPC by Windows when a USB device connects -- the same signal that also gives rise to its sounding of such connections being made, like if you pull a USB plug out and plug it in again.

The 4 reconnections will be your 4 devices denig detected as reconnecting by Windows, bit 4 attempts to connect by FSUIPC.

The joystick device scan in FSUIPC is automatically re-run when it is told of a connection. It is the same scan as at initialisation. I see from the log that the reconnection is very short-lived indeed and in fact the devices are still disconnected when the scan occurs. Hence the empty list.

The only times I EVER get the symptoms you are seeing are when either I disconnect a device, or the power fails on one of my USB hubs. The fact that all 4 of your devices are doing this together means they are all either on the same faulty hub or if all connected directly to the PC they will be a sign that the USB hardware on your motherboard is failing.

1 hour ago, LiddellAG said:

I have a program which accesses and monitors raw joystick state using slimdx.  Using this program I am able to read the raw values from the joysticks while FSUIPC cannot access them. 

Both FSUIPC and FS/P3D use standard DirectInput, a part of DirectX.  FSUIPC and FS/P3D are dependent upon Windows for the data regarding these devices. There is no direct connection by any program using DirectInput, it all goes through the same Windows functions and motherboard drivers no matter what sort of data is handled, raw or processed. Those are simply slightly different calls. It may be that for Windows to operate devices correctly it needs to see certain signals which your evidently much cleverer program does not, but I find that quite hard to believe! Maybe you can find its secrets from the author so that Microsoft can do a better job. ;-)

1 hour ago, LiddellAG said:

Do you have any suggestion for finding the cause of this very annoying problem?

Check hubs, connections, and wiring. Try different USB cables. Try different PC sockets. Maybe get a separate USB card for the PC so the on-borad USB can be bypassed. Check the power supplies for any powered hub.

Pete

 

Link to comment
Share on other sites

Pete and Thomas;

Thank you both for your suggestions  I have my controllers plugged into a powered USB hub with a 2.5 Amp power source.  I replaced the hub and all the cables and plugged the hub into a separate USB card.  The problem still existed and did not change from before the hardware swap.

My Joystick Monitor program also uses DirectInput with SlimDx as the interface with DirectX.  SlimDx is a .Net wrapper around DirectX.  I modified my program to test poll the joysticks once each millisecond and report any polling errors.  I initiated the program and then started FSX with all my add ins. 

It took a lot longer to get FSUIPC to loose the connections to the joysticks.  The loss occurred when tried to bring FSX out of pause.  The log recorded the 'P' keystroke as unassigned and passed it directly to FSX.  After several key depressions FSUIPC recognized the key as assigned and toggled Pause. My program reported no polling failures during the problem with FSUIPC. DirectX was on line and working during the loss at least every millisecond.

I restarted FSX and was able to successfully complete a flight with all the controllers working flawlessly.  A new problem emerged with FSUIPC loosing the keyboard and not responding to key strokes.  The log did not record any keyboard actions.  I was able to restore the keyboard by going to the key assignment screen and entering a key and exiting without any changes.

It seems that as long as I run my program along with FSX and UIPC that the problem is at least somewhat mitigated.  I operated for over an hour with only the keyboard problem which occurred twice.

Are you intercepting a windows message for the " ***** HID USB device reconnected ..." line in the log?  I am under the impression that DirectX must be polled to get any data from it.  Does the "---------------------- Joystick Device Scan -----------------------" line indicate that FSUIPC is attempting to acquire the controllers?

Is it possible that DirectX11 has introduced a greater delay between the device reconnected event and the availability of the device data which might explain the problems with Win 8 and 10 and not with Win 7?

Best regards;

Arlyn

Link to comment
Share on other sites

13 hours ago, LiddellAG said:

A new problem emerged with FSUIPC loosing the keyboard and not responding to key strokes.

FSUIPC can't "lose the keyboard". It doesn't handle keyboards. The keys are detected as Windows messages just as in all Windows programs. there's no keyboard detection or polling. It is, for keys, just a normal Windows program.

13 hours ago, LiddellAG said:

The log did not record any keyboard actions.  I was able to restore the keyboard by going to the key assignment screen and entering a key and exiting without any changes.

I think you must have some serious problems on yor system somewhere. Entering options screens and so on changes absolutely nothing in the way keys are seen. If a key is not programmed, the keypress is handled by FS instead of FSUIPC which doesn't touch it. The logging of key presses is not dependent on any assignments at all, it is simply notification from Windows/FS.

13 hours ago, LiddellAG said:

Are you intercepting a windows message for the " ***** HID USB device reconnected ..." line in the log?  I am under the impression that DirectX must be polled to get any data from it.

No, that is not an interception. It is a CallBack from Windows. FSUIPC simply registers a function with Windows to be called whenever a HID device disconnects or reconnects -- ANY such device, not just the ones t deals with (the callback cannot be made so specific). When it gets the callback for a reconnection it re-runs the scan.

There is no way I know that Windows will say a device is reconnected unless it has, even momentarily, disconnected and reconnected. When it disconnects, FSUIPC will lose access as its handle to the device becomes useless. That's why it has to rescan.

13 hours ago, LiddellAG said:

Is it possible that DirectX11 has introduced a greater delay between the device reconnected event and the availability of the device data which might explain the problems with Win 8 and 10 and not with Win 7?

How soon data becomes available isn't relevant to disconnect/reconnect indications. That's not a "disconnection". And most FSUIPC users now appear to be using Win10, and without any problems. Win8 and early versions of Win10 did appear to suffer from easy USB device loss, but according to all reports a fully updated Win10 performs okay.

Once a device is acquired FSUIPC does poll it at intervals -- that's controlled by the PollInterval parameter in the main [Buttons] section of the INI file. That defaults to 25 mSecs (so 40 times per second). But polling isn't related to the disconnect/reconnect indications. The polling is performed by using the "GetDeviceState" DirectInput function. That returns the current (virtually instantaneous) values for all buttons, exes, sliders and POVs. 

There is a "JoystickTimeout" parameter in the INI file, but that dates back to the FSUIPC3 dats when the "joy" interface was used instead of DirectInput. That is now only still used for EPIC controller board connections, as it is too restrictive for most modern devices.

You can get FSUIPC to make a full log of the joystick state reading attempts. Add these lines the the [general] section of the INI file:

Debug=Please
LogExtras=x1000

The log will become very large very quickly.

From the symptoms you describe and the results you get, I strongly suspect some sort of Windows corruption, or even a motherboard problem. There is nothing I can do in FSUIPC to make hardware connections work any differently. It is totally dependent on the Windows DirectInput API (for HID devices) and the standard Windows keyboard handling for keys.

Pete

 

Link to comment
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
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. Guidelines Privacy Policy We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.