#FSS Embraer E-Jets — WinWing CDU integration

1 messages · Page 1 of 1 (latest)

visual cobalt
#

Hi all, I've been experimenting with displaying the FSS E-Jets MCDU on a WinWing CDU, mainly inspired by the AAO approach and built with the help of Claude.
Wanted to share what I found and ask if anyone has gone down this path before.

Unlike FBW or FSLabs, the FSS E-Jets does not look to expose any SimVars or proprietary API for the MCDU, or so it looks to me.
The only accessible data source is the HTML panel rendered inside MSFS's Chromium engine.

The MCDU renders as a 24×14 grid of div id="cell-{col}-{row}" class="mcdu-display-cell" elements. Each cell carries:
Character as textContent (mixed case — label rows are lowercase, data rows uppercase)
Colour as CSS variable: --mcdu-white, --mcdu-cyan, --mcdu-green, --mcdu-magenta, --mcdu-amber, --mcdu-yellow, --mcdu-gray (disabled)
Size via font-family: FSS-EJET-MCDU = Large, FSS-EJET-MCDU-Small = Small

To read this, I'm currently connecting to the MSFS Chromium remote debugger on port 19999 via CDP (Chrome DevTools Protocol), targeting VCockpit01 (page 19), and polling the DOM every ~55ms via Runtime.evaluate.
This requires RemoteDebugging 1 in UserCfg.opt and that no DevTools tab is open on that page.

It works, but it's not ideal as a general solution since it requires users to enable remote debugging.

AAO solves this differently — they inject a JS file directly into the FSS panel via an import-script tag in MCDU.html, which POSTs the HTML to a local HTTP server.
No remote debugging needed, but it requires modifying the aircraft package files (which break on updates).

Has anyone already worked on this, or found a cleaner approach?
Specifically — does FSS expose any local WebSocket or HTTP stream for the MCDU (similar to FBW SimBridge on port 8380) that would avoid the need for remote debugging entirely?

Happy to share if useful!

I've also opened the same dicussion with the whole Script attached here:
https://github.com/MobiFlight/MobiFlight-Connector/discussions/2955

Leo

GitHub

fss_ejets_winwing_cdu.py Hi all, I've been experimenting with displaying the FSS E-Jets MCDU on a WinWing CDU, mainly inspired by the AAO approach and built with the help of Claude. Wanted to s...

fallen halo
# visual cobalt Hi all, I've been experimenting with displaying the FSS E-Jets MCDU on a WinWing...

Hi, here is an example of a javascript plugin for the CJ4 directly pushing the data to the MobiFlight Websocket interface. You could do the same, and if there is an example already, it should not be too hard.
https://flightsim.to/addon/105898/mobiflight-plugin-for-msfs-2024-wt21-cdus

Here the interface description:
https://docs.mobiflight.com/game-controllers/winctrl/winctrl-cdu/dev-instructions/

Flightsim.to

✓ For Microsoft Flight Simulator: This add-on integrates MobiFlight CDU support for the WT21 CDUs in MSFS 2024. It offers plugin activation settings and optional display of FMC messages in the scratchpad. Included MobiFlight profiles...

#

If there is a way to access the data via javascript plugin, then you can push it to MobiFlight.

visual cobalt
#

Hi, thanks — I think there might be a small misunderstanding.

I already have the MCDU working end-to-end with MobiFlight (DevTools -> Python → WebSocket → CDU).
The part I'm trying to improve is how to access the MCDU data from MSFS, not how to send it to MobiFlight.

Right now I'm reading the HTML panel via the Chromium DevTools Protocol (remote debugging on port 19999), which works but requires enabling RemoteDebugging in UserCfg.opt.

I'm trying to avoid that dependency and find a cleaner solution, ideally:
without enabling remote debugging
without modifying the aircraft package (like AAO injection does)

So the key question is:
is there any way to access the panel DOM or MCDU state from outside without CDP or injection?
(e.g. hidden WebSocket, internal bridge, etc.)

If your suggestion implies accessing the data via a JS plugin without modifying the aircraft files, I'd be very interested — otherwise it's equivalent to the injection approach I'm trying to avoid.

Thanks!

fallen halo
#

I think if the publisher of the plane does not provide an official interface via SimConnect or another external process, then I only know the injection approach.

rapid notch
#

the other issue is that in the ejets beta the cdu has moved to a wasm instrument so one that is released as stable i dont think the remote debugging access will work

visual cobalt
#

Thanks both, really appreciate the input — very helpful from both sides.

I think I now have a clearer picture:

  • without an official socket, injection seems to be the only viable alternative to CDP
  • but if the CDU is moving to a WASM instrument, both approaches might become obsolete

In the meantime, I’ll probably try to move forward with a JS injection approach, just to get a cleaner and more user-friendly solution compared to remote debugging.
If that works reliably, it could make sense to publish the script so others can also use the E-Jets CDU on the WinWing — at least for the current (HTML-based) versions.

Out of curiosity: do you know if the new Beta (WASM) version exposes anything via SimConnect, LVars/HVars, or any external interface?

rapid notch
#

i don't believe anything is currently exposed.

fallen halo
#

Best is to access the plane devs. The more people ask, the more likely they will publish an interface.

mortal wedge
#

If it's modeled as an HTML gauge you could try the approach someone developed for the MSFS 2024 Asobo 737 Max and 747-8 with Winctrl CDU. https://github.com/hsystems7/msfs-737-747-ww-cdu
This hooks into the creation and data update calls to send the data to the MF URL.
I solved a small bug for the 737 where data from both MCDUs overwrite each other on the physical device before getting me the PMDG 738:
https://github.com/MacAce1/msfs-737-747-ww-cdu

GitHub

Contribute to hsystems7/msfs-737-747-ww-cdu development by creating an account on GitHub.

GitHub

Contribute to MacAce1/msfs-737-747-ww-cdu development by creating an account on GitHub.

visual cobalt
#

Thank you! That’s exactly what I was looking for.
I’ve now managed to get it working without RemoteDebugger by editing the aircraft’s MCDU.js, but I found it much slower than the DevTools solution, which refreshes instantly.
I’ll take a look at your code and try to improve it, hopefully finding a solution that won’t interfere with the FSS files so updates won’t break everything.
At the same time, I also tried the experimental version and, just as @fallen halo said, there’s no way to access that data there.

I’m joining the FSS Discord to ask the devs directly and hopefully they’ll implement something in the future, but for now I’m sticking with the base version because having the CDU on the WinWing is just fantastic.
BTW, I think they would benefit for their business to support as many hardware integrations as possible. It would definitely increase popularity and help sell their products.

visual cobalt