OBSOLETE: Develop HTML gauges with live sim data

[Moved from SDK Discussion - Note that this is a developer tool right now]

PLEASE NOTE: THIS TOOL NO LONGER MAINTAINED DUE TO LACK OF INTEREST

Run the HTML Gauge system outside of FS2020 in any browser with live sim data. This enables learning about the existing gauges using the debugger and DevTools, and iterating on and building your own gauges.

DOWNLOAD
DOWNLOAD and place in Community folder

INSTRUCTIONS

  1. Windows Store users must export base files to C:\MSFS Base. See: Export base files
  2. Download and unzip to Community folder, Start the sim and load a flight.
  3. Start bin\BridgeClient.exe.
  4. Open one or more gauges at a time in your default browser.

TROUBLESHOOTING

  • Verify paths in settings.json are valid.
  • Use the responsive design tools to set the page to the correct size (Tablet icon in DevTools)
  • All cfg files are only scanned at startup, adding/removing planes or changing the VFS entries will require you to restart the app.
  • The Community folder package modifies VCockpit.html. This will conflict if you add debug.js there for your own game debug needs.
  • Try using a non-livery version of the plane if you don’t see any gauge buttons.
  • BridgeClient.exe will attempt to map drive letters J:, K: and L:. If you use those drive letters already, change settings.json before running BridgeClient.exe to avoid a conflict.

STATIC SERVER PORT
Specify a static port in settings.json:

	"Webserver": {
		"Port":  4200
	},

Either start BridgeClient.exe elevated or allow the port using an elevated cmd:

netsh http add urlacl url="http://+:4200/" user=Everyone

TODO

  • FS9GPS situation
  • Various other obvious enhancements
15 Likes

Awesome work on this, you are truly one of the best in the community!

1 Like

Really looking forward to using this!

Thanks guys. An updated version is out.

Some people have been confused in what this is so I’ll try to explain what I know about FS2020 and what I have built. Some of this is well known.

FS2020 is built on ESP (FSX/P3D) which is why there are documents explaining the same concepts with slight differences around the web. The new FS uses CoherentGT, which is a system for enabling web technologies (HTML/CSS/JS) to be used within the sim, with a C++ interop layer so that the technologies can be mixed and matched and still have a high frame rate.

The engine within the sim maintains a set a variables that are available to most components. Things like INDICATED AIRSPEED and also things like LIGHT TAXI ON are maintained and communicated through these global variables. The aircraft variables in the SimConnect SDK are known as A: variables, as they can be prefixed with A: when used in the xml gauge system. There are also L: (local) variables like L:HUD_AP_SELECTED_ALTITUDE that are still global, but created and used independently by a gauge or model xml. The real difference is that they are defined and used freely vs. being predefined and filled in by the system.

Within the sim, Coherent loads essentially one webpage per entry in panel.cfg
For example:

[VCockpit01]
size_mm=1280,800
pixel_size=1280,800
texture=$Touchpad
htmlgauge00=NavSystems/AS3X_Touch/AS3X_Touch.html,0,0,1280,800

The above instructs the game to load the gauge from NavSystems/AS3X_Touch/AS3X_Touch.htm at 1280x800. pixel_size and size_mm are used for scaling the rendered web content into the texture in the game.

Inside the game they maintain a VFS, or virtual file system (see the MSFS SDK for further detail). The VFS is very simple, it is a layered data structure where all the packages share the same file paths, but last-writer-wins when there is a conflict. So if you install a package with a duplicate NavSystems/AS3X_Touch/AS3X_Touch.html then it will load your version instead of whatever package was registered before you.

The game uses this VFS layout:

  1. Base packages (Packages folder within the game directory)
  2. Official packages (Downloaded the first time you ran the game)
  3. Community packages (Addons)

When we run the gauges externally, we add one additional package source to our VFS, which enables having a layer that is added ONLY for external use. The ExternalPackages folder will always be loaded in Chrome but never loaded within the game itself.

The sim will navigate a browser to VCockpit.html for each gauge. Asobo either uses or left us a hook in vcockpit.js that automatically loads window.globalPanelData. The global data has all the information in the [VCOCKPITXX] section from the panel.cfg.

Ok now we see that panel.cfg instructs the sim to load VCockpit.html on the sim VFS with some fixed data that tells it to load a component tree at NavSystems/AS3X_Touch/AS3X_Touch.html with a size of 1280x800.

This will work, but first you need to do some fixes:

  • html imports are deprecated. We need a polyfill. I used GitHub - webcomponents/html-imports: HTML Imports polyfill - this goes at the top of VCockpit.html. Without this all the text/html templates won’t be loaded.
  • common.js:
    • It will try to load coui://html_ui/ URLs. These need to be cut off as the browser needs to get a regular relative path request instead, otherwise you’ll see errors in the console about trying to load coui:// URLs.
    • Name_Z::isValid would pop on transitions with an undefined a.str. Didn’t investigate fully.
    • Disable fastToFixed because it produces number like 0.-7 on Chrome/Windows. WorkingTitle mods also include this and that’s why I have an edit for CommonPFD_MFD.js in the external package, to nop it’s copy of fastToFixed.

These changes are isolated in this commit, so it will be easier to redo them on the next sim update.

And now VCockpit.html with global data will display any gauge in the game! The VFS must be hosted on a webserver and with the above fixes and some static configuration data, you can load any gauge.

One last note here, is that all these paths will exceed Windows’ MAX_PATH limit, so I work around this by using SUBST command to map a drive and chop off most of the path.

So now the gauge loads but we don’t have any live sim data or real data at all. So we need to bridge in live sim data. All the sim data comes through these methods in the game, from simvar.js in one of the base packages:

SimVar.GetSimVarValue
SimVar.SetSimVarValue
SimVar.GetSimVarArrayValues
SimVar.SetSimVarValue
SimVar.GetGlobalVarValue
SimVar.GetGameVarValue
SimVar.SetGameVarValue

You can use SimVar.GetSimVarValue to read any A: (without prefix) or L: variable. SimVar.SetSimVarValue can set L: values and probably A:'s that are defined as readwrite in the SDK.

SimVar.GetGameVarValue is a catch-all for things that are used like variables but aren’t defined the usual way. Some of these read from cockpit.cfg or some interpreted version of flight_model.cfg.

All I’ve seen out of SimVar.GetGlobalVariable is ZULU TIME in seconds.

SimVar.GetSimVarArrayValues is very special, it’s used only for fs9gps calls, and this is currently not implemented due to the complexity of getting this data across the channel. This is used to set the current position an then query for nearest airports, VOR, etc. This drives the map and the flight planner.

So we need all these to work somehow. I replace the game’s version of SimVar.js with my own which points to SimVarBridge.js which implements a table of ‘known vars’ and makes requests through a websocket to the server to read/write values. The server continually sends updated data and thus the table of values is updated for the next calls to SimVar.

The server serves the web resources and also uses SimConnect to connect to FS2020, then uses the client data regions to establish a connection with BridgeGauge.wasm which is loaded via the community folder. The BridgeGauge.wasm calls execute_calculator_code to read and write L:vars. Right now this needs improvement:

  1. Source A: vars via external SimConnect directly.
  2. Replace with get_named_variable_value instead of execute_calculator_code calls.
  3. Register strings instead of passing them over and over.

These changes will result in high fps.

The last part is InGameBridge.js which gets loaded via the Community folder into the game, and continually copies some values into L: vars so the bridge can pick them up in a predictable place. This is how the AIRCRAFT ORIENTATION AXIS GameVar is coming through. The bridge can ONLY read L: and A: so anything else needs to be proxied through InGameBridge.js first.

In summary this covers:

  • How to get all the VFS package sources (Anzu)
  • How to work around file paths being longer then MAX_PATH
  • How the packages are composed
  • Which files drive the HTML gauge system
  • A set of bridge components into the FS that read/writes data
4 Likes

Great work! I have a question though. My MSFS is on Steam, but not on C:, it is on another drive. What would I need to change to settings.json to make it work? Firstly I got a “Could not find a part of the path [first mapped letter]”. Then I tried changing the first entry after “Steam”: on the settings.json, but I got a “Bad JSON escape sequence error”.

1 Like

Thanks for giving it a try!

Open up settings.json

			"Steam": [
				"%ProgramFiles(x86)%\\Steam\\steamapps\\common\\MicrosoftFlightSimulator\\Packages",
				"%AppData%\\Microsoft Flight Simulator\\Packages\\Official",
				"%AppData%\\Microsoft Flight Simulator\\Packages\\Community"
			]

So long as you get the double backslashes right in the file, you should just be able to edit these 3 paths. Based on the error above I think you just forgot to make sure that every \ is actually \\. You can use hard coded paths that you check in File Explorer and then copy in, just make sure that every \ is \\.

The key thing to do is make sure these folders point to a “package source” (a folder with subfolders which are packages with layout.json).

So for your case perhaps something like this?

"D:\\games\\steamapps\\common\\MicrosoftFlightSimulator\\Packages",

I’ve updated to version 1.0.3 which should help with path issues and indicating what is pointing to the wrong place, as well as unmapping the drives at exit and not trying to proceed if J: K: L: drives exist.

1 Like

When I said live, I meant live! Much faster data rates coming soon.

Thank you for responding so fast davux3. I modified the settings.json according to your instructions and indeed the program showed the gauges. Sadly I still couldn’t make it work properly. When I click one of the gauges buttons, a new tab opens on chrome but it remains blank. The address is like so: http://127.0.0.1:4200/Pages/VCockpit/Core/VCockpit.html?id=0.

This is the console output from the chrome tab:

common.js:3669 CONSTRUCTOR /Pages/VCockpit/Core/VCockpit.html
SmartLoader @ common.js:3669
common.js:3696 onResourceLoaded : http://127.0.0.1:4200/Pages/VCockpit/Instruments/Shared/BaseInstrument.js
onResourceLoaded @ common.js:3696
common.js:3700 onResourceLoaded : BASEINSTRUMENT /// /Pages/VCockpit/Core/VCockpit.html
onResourceLoaded @ common.js:3700
SimVarBridge.js:21 WS: Connected
common.js:3696 onResourceLoaded : http://127.0.0.1:4200/Pages/VCockpit/Core/VCockpit.js
onResourceLoaded @ common.js:3696
common.js:3700 onResourceLoaded : VCOCKPIT /// /Pages/VCockpit/Core/VCockpit.html
onResourceLoaded @ common.js:3700
common.js:3720 Check loaded : 0 for /Pages/VCockpit/Core/VCockpit.html
checkLoaded @ common.js:3720
common.js:3721 Array(0)
checkLoaded @ common.js:3721
common.js:3726 ON_VIEW_LOADED Send for /Pages/VCockpit/Core/VCockpit.html
checkLoaded @ common.js:3726
VCockpit.js:23 Uncaught (in promise) TypeError: m.split is not a function
at VCockpit.js:23
at Array.map ()
at VCockpit.js:22
DevTools failed to load SourceMap: Could not load content for http://127.0.0.1:4200/JS/common.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
DevTools failed to load SourceMap: Could not load content for http://127.0.0.1:4200/JS/simvar.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
DevTools failed to load SourceMap: Could not load content for http://127.0.0.1:4200/JS/Avionics.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
DevTools failed to load SourceMap: Could not load content for http://127.0.0.1:4200/JS/SimPlane.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
DevTools failed to load SourceMap: Could not load content for http://127.0.0.1:4200/Pages/VCockpit/Instruments/Shared/Utils/DataReadManager.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
DevTools failed to load SourceMap: Could not load content for http://127.0.0.1:4200/Pages/VCockpit/Instruments/Shared/BaseInstrument.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
DevTools failed to load SourceMap: Could not load content for http://127.0.0.1:4200/Pages/VCockpit/Instruments/Shared/Utils/XMLLogic.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
DevTools failed to load SourceMap: Could not load content for http://127.0.0.1:4200/Pages/VCockpit/Core/VCockpit.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
DevTools failed to load SourceMap: Could not load content for http://127.0.0.1:4200/js/animation/animation.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
DevTools failed to load SourceMap: Could not load content for http://127.0.0.1:4200/js/Types.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE

1 Like

That looks close, but something important in vcockpit.js is failing.

Can you check that you’re using 1.0.3 and then share the (File -> Log) contents? I think you’re on a slightly older version but it’s having trouble parsing the htmlgauge00 line from the panel.cfg for your aircraft.

I downloaded the 1.0.3 version a few hours ago and I deleted the old version from the MSFS community folder before exrtacting the new one.

Here are the contents of the Log:

3:41:15 PM VFS: settings.json: No explicit VFS.Source specified
3:41:15 PM VFS: FS Installation type is detected as: Steam
3:41:15 PM VFS: Mapping M:\Steam\steamapps\common\MicrosoftFlightSimulator\Packages to O
3:41:15 PM VFS: ‘subst O: /D’ -> Invalid parameter - O:
3:41:15 PM VFS: ‘subst O: “M:\Steam\steamapps\common\MicrosoftFlightSimulator\Packages”’ -> OK
3:41:15 PM VFS: Loading packages from O:
3:41:15 PM VFS: Added 6 packages
3:41:15 PM VFS: Mapping M:\Steam\steamapps\common\MicrosoftFlightSimulator\Packages\Official\Steam to P
3:41:15 PM VFS: ‘subst P: /D’ -> Invalid parameter - P:
3:41:15 PM VFS: ‘subst P: “M:\Steam\steamapps\common\MicrosoftFlightSimulator\Packages\Official\Steam”’ -> OK
3:41:15 PM VFS: Loading packages from P:
3:41:16 PM VFS: Added 70 packages
3:41:16 PM VFS: Mapping M:\Steam\steamapps\common\MicrosoftFlightSimulator\Packages\Community to Q
3:41:16 PM VFS: ‘subst Q: /D’ -> Invalid parameter - Q:
3:41:16 PM VFS: ‘subst Q: “M:\Steam\steamapps\common\MicrosoftFlightSimulator\Packages\Community”’ -> OK
3:41:16 PM VFS: Loading packages from Q:
3:41:16 PM VFS: Added 1 packages
3:41:16 PM VFS: Loading packages from M:\Steam\steamapps\common\MicrosoftFlightSimulator\Packages\Community\fs-gauge-bridge-v1.0.3\ExternalPackages
3:41:16 PM VFS: Added 1 packages
3:41:16 PM Loading from simobjects\airplanes\asobo_c152\aircraft.cfg
3:41:16 PM Title: “Cessna 152 Asobo”
3:41:16 PM htmlgauge: Generic/Misc/HourMeter/HourMeter.html
3:41:16 PM htmlgauge: Generic/Radios/KX155A/KX155A.html?Index=1
3:41:16 PM htmlgauge: Generic/Radios/KX155A/KX155A.html?Index=2
3:41:16 PM htmlgauge: Generic/Radios/C300ADF/C300ADF.html
3:41:16 PM Loading from simobjects\airplanes\asobo_generic_airliner_quadengines\aircraft.cfg
3:41:16 PM Title: “Generic Airliner Quad Engines Asobo 00”
3:41:16 PM Title: “Generic Airliner Quad Engines Asobo 01”
3:41:16 PM Title: “Generic Airliner Quad Engines Asobo 02”
3:41:16 PM Title: “Generic Airliner Quad Engines Asobo 03”
3:41:16 PM Title: “Generic Airliner Quad Engines Asobo 04”
3:41:16 PM htmlgauge: Airliners/A320_Neo/PFD/A320_Neo_PFD.html
3:41:16 PM htmlgauge: Airliners/A320_Neo/MFD/A320_Neo_MFD.html
3:41:16 PM htmlgauge: Airliners/A320_Neo/EICAS/A320_Neo_EICAS.html?Index=1
3:41:16 PM htmlgauge: Airliners/A320_Neo/EICAS/A320_Neo_EICAS.html?Index=2
3:41:16 PM htmlgauge: Airliners/A320_Neo/SAI/A320_Neo_SAI.html
3:41:16 PM htmlgauge: Airliners/A320_Neo/Clock/A320_Neo_Clock.html
3:41:16 PM htmlgauge: Airliners/A320_Neo/Com/A320_Neo_Com.html
3:41:16 PM htmlgauge: Airliners/A320_Neo/CDU/A320_Neo_CDU.html
3:41:16 PM htmlgauge: Airliners/A320_Neo/FCU/A320_Neo_FCU.html
3:41:16 PM Loading from simobjects\airplanes\asobo_generic_airliner_twinengines\aircraft.cfg
3:41:16 PM Title: “Generic Airliner Twin Engines Asobo 00”
3:41:16 PM Title: “Generic Airliner Twin Engines Asobo 01”
3:41:16 PM Title: “Generic Airliner Twin Engines Asobo 02”
3:41:16 PM Title: “Generic Airliner Twin Engines Asobo 03”
3:41:16 PM Title: “Generic Airliner Twin Engines Asobo united”
3:41:16 PM htmlgauge: Airliners/A320_Neo/PFD/A320_Neo_PFD.html
3:41:16 PM htmlgauge: Airliners/A320_Neo/MFD/A320_Neo_MFD.html
3:41:16 PM htmlgauge: Airliners/A320_Neo/EICAS/A320_Neo_EICAS.html?Index=1
3:41:16 PM htmlgauge: Airliners/A320_Neo/EICAS/A320_Neo_EICAS.html?Index=2
3:41:16 PM htmlgauge: Airliners/A320_Neo/SAI/A320_Neo_SAI.html
3:41:16 PM htmlgauge: Airliners/A320_Neo/Clock/A320_Neo_Clock.html
3:41:16 PM htmlgauge: Airliners/A320_Neo/Com/A320_Neo_Com.html
3:41:16 PM htmlgauge: Airliners/A320_Neo/CDU/A320_Neo_CDU.html
3:41:16 PM htmlgauge: Airliners/A320_Neo/FCU/A320_Neo_FCU.html
3:41:16 PM Loading from simobjects\airplanes\asobo_generic_piston_multiengines\aircraft.cfg
3:41:16 PM Title: “Generic Piston Multi Engines Asobo 00”
3:41:16 PM Title: “Generic Piston Multi Engines Asobo 01”
3:41:16 PM Title: “Generic Piston Multi Engines Asobo 02”
3:41:16 PM htmlgauge: NavSystems/AS1000/PFD/AS1000_PFD.html
3:41:16 PM htmlgauge: NavSystems/AS1000/MFD/AS1000_MFD.html
3:41:16 PM Loading from simobjects\airplanes\asobo_generic_piston_singleengine\aircraft.cfg
3:41:16 PM Title: “Generic Piston Single Engine Asobo 00”
3:41:16 PM Title: “Generic Piston Single Engine Asobo 01”
3:41:16 PM Title: “Generic Piston Single Engine Asobo 02”
3:41:16 PM htmlgauge: NavSystems/AS1000/PFD/AS1000_PFD.html
3:41:16 PM htmlgauge: NavSystems/AS1000/MFD/AS1000_MFD.html
3:41:16 PM Loading from simobjects\airplanes\asobo_generic_privatejet\aircraft.cfg
3:41:16 PM Title: “Generic Private Jet Asobo 00”
3:41:16 PM Title: “Generic Private Jet Asobo 01”
3:41:16 PM Title: “Generic Private Jet Asobo 02”
3:41:16 PM htmlgauge: NavSystems/AS1000/PFD/AS1000_PFD.html
3:41:16 PM htmlgauge: NavSystems/AS1000/MFD/AS1000_MFD.html
3:41:16 PM Loading from simobjects\airplanes\asobo_generic_turbo_multiengines\aircraft.cfg
3:41:16 PM Title: “Generic Turbo Multi Engines Asobo 00”
3:41:16 PM Title: “Generic Turbo Multi Engines Asobo 01”
3:41:16 PM Title: “Generic Turbo Multi Engines Asobo 02”
3:41:16 PM htmlgauge: NavSystems/AS1000/PFD/AS1000_PFD.html
3:41:16 PM htmlgauge: NavSystems/AS1000/MFD/AS1000_MFD.html
3:41:16 PM Loading from simobjects\airplanes\asobo_generic_turbo_singleengine\aircraft.cfg
3:41:16 PM Title: “Generic Turbo Single Engine Asobo 00”
3:41:16 PM Title: “Generic Turbo Single Engine Asobo 01”
3:41:16 PM Title: “Generic Turbo Single Engine Asobo 02”
3:41:16 PM htmlgauge: NavSystems/AS3000/PFD/AS3000_PFD.html?Index=1
3:41:16 PM htmlgauge: NavSystems/AS3000/MFD/AS3000_MFD.html
3:41:16 PM htmlgauge: NavSystems/AS1000_BackupDisplay/Attitude/AS1000_AttitudeBackup.html
3:41:16 PM htmlgauge: NavSystems/AS1000_BackupDisplay/Speed/AS1000_SpeedBackup.html
3:41:16 PM htmlgauge: NavSystems/AS3000/TSC/Horizontal/AS3000_TSC_Horizontal.html?Index=1
3:41:16 PM htmlgauge: NavSystems/AS3000/TSC/Horizontal/AS3000_TSC_Horizontal.html?Index=2
3:41:16 PM Loading from simobjects\airplanes\asobo_tbm930\aircraft.cfg
3:41:16 PM Title: “TBM 930 Asobo”
3:41:16 PM Title: “TBM 930 Asobo AirTraffic 00”
3:41:16 PM Title: “TBM 930 Asobo AirTraffic 01”
3:41:16 PM Title: “TBM 930 Asobo AirTraffic 02”
3:41:16 PM htmlgauge: NavSystems/AS3000/PFD/AS3000_PFD.html?Index=1
3:41:16 PM htmlgauge: NavSystems/AS3000/MFD/AS3000_MFD.html
3:41:16 PM htmlgauge: NavSystems/AS1000_BackupDisplay/Attitude/AS1000_AttitudeBackup.html
3:41:16 PM htmlgauge: NavSystems/AS1000_BackupDisplay/Speed/AS1000_SpeedBackup.html
3:41:16 PM htmlgauge: NavSystems/AS3000/TSC/Horizontal/AS3000_TSC_Horizontal.html?Index=1
3:41:16 PM htmlgauge: NavSystems/AS3000/TSC/Horizontal/AS3000_TSC_Horizontal.html?Index=2
3:41:16 PM Server starting at http://127.0.0.1:4200/
3:41:16 PM Connecting to sim

3:41:16 PM Connected to sim

1 Like

Thanks for this great tool! Unfortunately it fails with an error:

VCockpit.js:23 Uncaught (in promise) TypeError: m.split is not a function
at VCockpit.js:23
at Array.map ()
at VCockpit.js:22

In the debugger m does not look like a string but an object.

Any idea?

1 Like

Could this be brought to run on a networked client?

Kind regards, Michael

1 Like

@HellGLNC @GhastlyDisc3368 Thank you for your patience. Please get 1.0.4 and give it another try. I had not packaged the right files together and it was breaking as expected.

I think that is the idea. The BridgeClient opens a Webserver and it doesn’t matter if the browser that renders the gauges runs on the local or a remote host.

1 Like

Yes and @HellGLNC is correct. However, for security purposes this app does not open a port accessible outside of localhost. This scenario is not one I haven’t though of, as I intend to run HD HTML gauges on tablets instead of remote touch bitmaps. I’ll provide a config entry in the next update or so that adds this.

1 Like

Hi,
it now loads without errors, but my pages are still blank. I followed the instructions in this thread but they are different from the README.md on the github repository. There it says that you should add another VCockpit section in the panel.cfg or is this only for debugging? My folders are placed on a different drive, because there were not enough space on C:. Thus the path entries are much smaller (Only D:\MSFS\Offical
) but as I understand the path subst is done anyway, right? The BridgeClient loads without errors but doesn’t show any ops/sec, or is this only if there is a client connected? I tried different planes but none of the gauges shown in the bridge can load (neither in Firefox nor in Edge). Any idea what’s wrong with my setup?

it now loads without errors, but my pages are still blank. I followed the instructions in this thread but they are different from the README.md on the github repository.

Don’t follow the README on githubt, it’s referring to a simple sample in the master branch. I haven’t written that up yet. I didn’t realize this was confusing so I’ll expedite that.

My folders are placed on a different drive, because there were not enough space on C:. Thus the path entries are much smaller (Only D:\MSFS\Offical
) but as I understand the path subst is done anyway, right?

Subst is unconditional yes (for now anyway)

The BridgeClient loads without errors but doesn’t show any ops/sec, or is this only if there is a client connected?

It’ll only show ops/sec once a client is connected.

It’s a good idea to check the Variable list to see what is being loaded by the gauge, to see if it might be stuck on something or the sim not sending data.

Unfortunately I’ve got to get more, the log console in Chrome, and the log file in the app will have more info that might clue us in to why it’s not loading.

Make sure you’re picking a reasonable aircraft like the TBM 930 with G3000 or VL3 with G3X or Icon A5 with Aera/G3X.

Great, thanks,

and kind regards, Michael

1 Like