[RELEASE] FS2EFB data export toolbar & EFB app (into Foreflight, SkyDemon, Garmin Pilot, XCSoar and so on) + weather and flight plan import

FS2EFB bridges Microsoft Flight Simulator (MSFS) to tablet/phone EFB apps (SkyDemon, ForeFlight, XCSoar, etc.). It has two components you configure together:

  • MSFS Toolbar Panel β€” runs inside MSFS, reads SimVars, sends data to your device. Supports PC and Xbox, PS5 - waiting for MP access for 3rd party devs.
    If you want to test this add-on before purchase - rent options are not available for tool add-ons sadly, but you can rent L-13 Blanik aircraft for $0.99. It has same script built-in into the tablet, with same functions available but only for single aircraft.

  • Mobile Bridge App β€” receives that data and forwards it to your EFB app. Available both for Android and iOS (iPhone, iPad) devices

Part 1: MSFS Toolbar Panel

Opening the Panel

The panel is a custom MSFS2020 in-game toolbar panel. Open it via the MSFS toolbar during flight (or in the main menu). It loads as a Web Component inside the MSFS Coherent GT browser engine.

For FS24, FS2EFB script provided as EFB app. While all the functionality provided as-is (same script used for both), EFB app has significant advantage – it can work at background so no need to keep toolbar panel opened. The UI colors adjusted to fit newer palette scheme, but all the interactive elements position is the same.


Panel Layout (direct connection mode)

The panel has three main zones:

[ Connection Mode Buttons ]
[ IP Address Display        ]
[ SYNC IP / SHOW QR Button  ][ Help ]
[ Virtual Keyboard          ]
[ QR Codes (Android / iOS)  ]
[ START / STOP Button       ]
[ Log Area                  ]

YouTube: Import flight plan and weather preset into Xbox Microsoft Flight Simulator 2020 & 2024 with FS2EFB

Panel Layout (relay server mode)

As connection happens through dedicated server, IP field is no longer required. Instead, unique ID used to connect your smartphone/tablet app with MSFS toolbar or EFB app.

[ Connection Mode Buttons ]
[ SHOW USER ID QR  ][ Help ]
[ START / STOP Button       ]
[ Log Area                  ]

YouTube: Connect your favorite EFB with FS24 in Cloud Gaming mode - FS2EFB tutorial


Connection Mode

Two buttons at the top switch between connection methods:

Button Mode When to use
DIRECT CONNECTION Sends data directly to a local IP:port Same WiFi network, hotspot, or USB tether
RELAY SERVER Routes data via dedicated relay server When direct network access isn’t possible

The active mode is highlighted. Switching modes changes which controls are visible.


IP Address Entry (Direct Mode)

The large green display shows the current target address (e.g. 192.168.1.5:5544).

Below it is a virtual numeric keyboard for entering the address directly in-sim:

  • Keys 0–9, ., : β€” enter digits and separators

  • Red backspace key β€” delete last character

  • Format must be IP:PORT (e.g. 192.168.1.50:5544)

The address is saved automatically to browser storage and restored on next launch. You only need keyboard if SYNC feature does not work correctly for some reason.

In RELAY mode, the keyboard is hidden (no IP needed).


SYNC IP WITH APP Button

In Direct mode, this button attempts to discover the Android/iOS app’s IP automatically.

  • Launch FS2EFB app on your smartphone or tablet

  • Click SYNC IP button

  • β€œSyncing…” appears in the log

  • On success: IP field updates and button turns blue

  • On failure: button turns red, log shows Sync Failed: Network Error or Sync Failed: Timeout. In this case, check the mobile IP on your device screen, type it using keyboard into IP field of the toolbar.

In Relay mode, this button changes to SHOW USER ID QR, which displays a QR code popup containing the session UID. Scan this from the mobile app to pair them.


START / STOP Button

The large button at the bottom of the controls section starts and stops data transmission:

State Appearance Action
START Green border, black background Click to begin sending SimVar data
STOP Red background, red border Click to end transmission

When active, the panel reads SimVars every frame via requestAnimationFrame and sends HTTP GET requests to the bridge app at the configured frequency.


Log Area

The dark scrollable area below the buttons shows real-time status messages, each with a timestamp:

Message Meaning
Ready Panel loaded, awaiting action
Starting send to 192.168.1.5:5544 Transmission started
Stopped. Transmission ended
Syncing... IP sync in progress
Received: 192.168.1.5 Sync succeeded
Sync Failed: Network Error Cannot reach device
Error: Invalid Format. Use IP:PORT Malformed address entered
[N] traffic planes received Traffic data count
Flight plan received: [N] waypoints Mobile app sent a flight plan
Teleporting to [WP] at [alt] ft Position set in-sim
Weather preset applied successfully Weather updated

Click the log area to copy its contents to the clipboard.


Help / Tutorial

The ? button (top-right of the panel) launches an 8-step interactive tutorial:

Step Topic
0 Welcome
1 Platform selection (Android / iOS)
2 Connection method overview
3 Local connection (WiFi client)
4 Hotspot connection
5 Relay server explanation
6 QR code scanning and UID
7 Starting data transfer
8 Completion

The tutorial can be dismissed at any step. It only auto-launches on first use.


QR Codes

Two QR codes link to the Android and iOS app download pages.

Android: https://play.google.com/store/apps/details?id=com.touchingcloud.msfs2nmea
iOS: https://apps.apple.com/app/fs2efb/id6759614296


Screen Capture Overlay (Remote Touch, Android app only)

When Screen Cast is enabled in the Android app, the panel displays a live screenshot of the Android device. If Remote Touch also enabled, Tapping or dragging on this image sends touch events back to the phone via the HTTP response, allowing you to control the Android device from within MSFS.


Flight Plan Import

When the mobile app sends a flight plan, a popup appears in the panel:

  • β€œFlight plan received: N waypoints”

  • Click LOAD to inject waypoints into the MSFS active flight plan

  • If Load & Teleport , the sim teleports to the first waypoint; aircraft attitude is preserved for ~10 seconds while terrain loads


Panel Settings (Stored)

These are saved in MSFS browser storage between sessions:

Setting Description Default
NMEA_IP Target IP:PORT (last entered)
FS2EFB_MODE DIRECT or RELAY DIRECT
FS2EFB_UID Relay session UID (from QR scan)
FS2EFB_TUTORIAL_DONE Suppresses first-run tutorial false

Runtime parameters (frequency, traffic range, etc.) are synchronized from the mobile app via the HTTP response JSON β€” the panel does not configure these independently.

Part 2: Mobile Bridge App

Screen Layout

[ Preset Selector ]  [ Help ] [ Defaults ] [ Close ]
─────────────────────────────────────────────────────
[ WiFi Client ] [ Hotspot ] [ Remote ] [ Relay ]    ← Device Mode
─────────────────────────────────────────────────────
[ TCP Client ] [ TCP Server ] [ UDP Client ] [ UDP Server ]  ← Transport
─────────────────────────────────────────────────────
  FS Port:    [5544      ]
  NMEA IP:    [192.168.x.x]   (editable in client modes)
  NMEA Port:  [49002     ]
─────────────────────────────────────────────────────
[ SYNC IP ]  [ GET USER ID ]  [ START / STOP ]
─────────────────────────────────────────────────────
[ GPS Spoof ] [ Screen Cast ] [ Remote Touch ] (Android only)
─────────────────────────────────────────────────────
  NMEA Sentences:  ☐ GPGGA  ☐ GPRMC  ☐ LXWP0  β˜‘ XGPS  β˜‘ XATT ☐ RPOS
  Traffic:         ☐ XTRAFFIC_GND  β˜‘ XTRAFFIC_AIR
                   ☐ GDL90_GND     ☐ GDL90_AIR
                   ☐ PFLAA_GND     ☐ PFLAA_AIR
  Data Frequency:  β–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘ 5 Hz
  Traffic Range:   β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘ 250 NM
  Traffic Freq:    β–ˆβ–ˆβ–ˆβ–‘β–‘ 4 Hz
─────────────────────────────────────────────────────
  IAS: 245 kt   TE: +200 fpm   HDG: 270Β°   ALT: 32000 ft
─────────────────────────────────────────────────────
[VARIO] (iOS only)
─────────────────────────────────────────────────────
[ Log area β€” scrollable, tap to copy ]


Presets

The preset dropdown at the top loads a predefined configuration suitable for common EFB apps. When a preset is selected:

  • Only compatible device modes and transport modes are enabled (others are grayed out at 5% opacity)

  • NMEA sentence checkboxes are set to the preset’s recommended combination

  • Manual overrides remain possible (β€œCUSTOM” label appears)


Top Bar

Control Function
Preset Spinner Loads a preset configuration (mode + transport + sentences), only usable options are unlocked. β€œCUSTOM” = manual settings, all the options available
Help Opens preset documentation in browser
Restore Defaults Resets all settings to factory defaults (confirmation required)
Close Exits the app

Device Mode (Row 1)

Selects how the phone is connected to the MSFS PC/console. Only one mode is active at a time (highlighted blue).

WiFi Client

Phone and MSFS PC/console are on the same WiFi network.

  • App shows the phone’s local IP

  • Use SYNC IP to auto-discover the PC/console’s IP

  • Most common setup for home users

Hotspot

Phone creates a WiFi hotspot and the MSFS PC/console connects to it.

  • App auto-detects the hotspot gateway IP

  • No sync needed β€” the PC/console’s IP is known

  • UPnP is disabled in this mode

Remote

Uses UPnP port mapping to expose the phone through a router.

  • App fetches the external IP via STUN

  • Shows a 5-step UPnP setup dialog with pass/fail/warning per step

  • Requires the router to support UPnP, or manual port forwarding

Relay

Uses the relay server β€” no local network needed.

  • Requires a UID obtained by scanning the QR code shown in the MSFS panel

  • The GET USER ID button appears (replaces SYNC IP)

  • UID is stored and reused on subsequent launches

  • START is disabled until a valid UID is present

  • Screen share is not available in this mode, data frequency is locked to 1hz (once per second)


Transport Protocol (Row 2)

Selects how NMEA data is delivered to the EFB app. All modes are from the EFB app’s perspective:

Mode Who connects/sends NMEA IP field
TCP Client EFB connects to phone (phone is TCP server) Disabled β€” shows phone’s IP
TCP Server Phone connects to EFB (EFB is TCP server) Editable β€” enter EFB app’s IP
UDP Client Phone sends UDP packets to EFB Editable β€” enter EFB app’s IP
UDP Server EFB sends UDP packets to phone Disabled β€” shows phone’s IP

GDL90 always uses a dedicated UDP socket on port 4000, regardless of transport mode.


Network Fields

Field Label Default Notes
FS Port β€œFS Port” 5544 Port the web server listens on for MSFS data
NMEA IP β€œNMEA Server IP” 127.0.0.1 Target IP (EFB app). Editable only in client modes
NMEA Port β€œNMEA Server Port” 49002 Output port for NMEA sentences

Changing NMEA IP or port while the service is running automatically stops the service.


SYNC IP / GET USER ID Button

  • WiFi/Hotspot/Remote modes β€” shows SYNC IP: sends an HTTP request to the MSFS panel to retrieve its detected IP, then updates the NMEA IP field

  • Relay mode β€” shows GET USER ID: opens the QR scanner; scan the QR code shown in the MSFS panel to extract and store the UID


START / STOP Button

Starts or stops the data transfer service.

State Appearance Notes
START Green Service is not running
STOP Red Service is running

When running, the service:

  • Hosts a web server on the configured FS Port to receive MSFS HTTP data

  • Parses incoming telemetry

  • Sends enabled NMEA sentences to the EFB app via the configured transport

  • Sends GDL90 heartbeats every 1 second (if enabled)

  • Auto-stops after 5 minutes with no data received


Feature Buttons (Android only)

GPS Spoof

Enables a mock GPS location provider, making the phone report the aircraft’s position as if it were a real GPS fix. Useful for apps that read device location.

  • Requires ACCESS_FINE_LOCATION permission

  • On Android 12+, also requires enabling Mock Location in Developer Options

  • The app guides you through the Settings screens if permissions are missing

Screen Cast

Captures the phone screen and sends frames back to the MSFS panel for display in the cockpit.

  • Requires granting screen capture permission (native Android dialog)

  • Used together with Remote Touch for two-way interaction

Remote Touch

Enables the TouchAccessibilityService, which receives touch coordinates from the MSFS panel and replays them as real tap/drag gestures on the phone screen.

  • Requires enabling TouchAccessibilityService in Settings β†’ Accessibility

  • The app links directly to the Accessibility settings page

  • Works together with Screen Cast for full remote control of the phone from within MSFS


NMEA Sentence Selection

Checkboxes control which data sentences are sent to the EFB app. Changes take effect immediately (service re-reads configuration).

Ownship Sentences (enabled by default)

Sentence Data
GPGGA GPS fix, latitude/longitude, altitude MSL, fix quality
GPRMC Position, speed over ground, track, date/time
LXWP0 IAS (km/h), baro altitude, variometer, heading, wind
XGPS ForeFlight/SkyDemon: lon, lat, alt (m), track, ground speed
XATT ForeFlight/SkyDemon: heading, pitch, roll

Traffic Sentences (disabled by default)

Sentence Data
XTRAFFIC_GND Custom MSFS format β€” ground traffic
XTRAFFIC_AIR Custom MSFS format β€” airborne traffic
GDL90_GND ADS-B binary GDL90 β€” ground traffic (UDP port 4000)
GDL90_AIR ADS-B binary GDL90 β€” air traffic (UDP port 4000)
PFLAA_GND FLARM format β€” ground traffic (relative N/E/V offsets)
PFLAA_AIR FLARM format β€” air traffic

XGPS and XATT have no $ prefix and no NMEA checksum β€” they are raw proprietary strings expected by ForeFlight and SkyDemon and many others.


Frequency and Range Sliders

Slider Label Default Range Effect
Data Frequency β€œData Frequency: X Hz” 5 Hz 1–20 Hz How often ownship data is sent
Traffic Range β€œTraffic Range: X NM” 250 NM adjustable Maximum distance of tracked traffic
Traffic Frequency β€œTraffic Frequency: X Hz” 4 Hz 0.5–10 Hz How often traffic is polled

Traffic sliders only appear when at least one traffic sentence is enabled. The MSFS panel reads these values from the HTTP response and adjusts its own send rate accordingly.


Live Telemetry Display

Four read-only data cells update every ~100 ms while the service is running:

Cell Data Unit
IAS Indicated airspeed kt
TE Total energy / vertical speed fpm
HDG Magnetic heading Β°
ALT Altitude ft

Log Area

Scrollable, timestamped log of all service events. Tap to copy the full log to clipboard. Key messages:

Message Meaning
Requesting Service Start... START tapped
Requesting Service Stop... STOP tapped
Syncing: 192.168.1.x... SYNC IP in progress
WiFi test failed Not connected to WiFi
UPnP port mapped Remote mode setup succeeded
Mock Location permission denied GPS Spoof requires permission
Screen Cast permission denied Screen Cast requires permission

Persistent Settings

All settings survive app restarts via SharedPreferences (MSFS_BRIDGE_PREFS):

  • Network config (ports, IP, mode, transport)

  • All NMEA checkbox states

  • Frequency and range slider values

  • Relay UID

  • Selected preset


Part 3: Typical Setup Workflows

Workflow A β€” Same WiFi Network (Most Common)

  1. Mobile app: Select WiFi Client mode

  2. Mobile app: Select EFB app from the presets list

  3. Mobile app: Tap START β€” log shows service started

  4. MSFS panel: Select DIRECT CONNECTION

  5. MSFS panel: Tap SYNC IP WITH APP β€” IP field updates automatically

  6. MSFS panel: Tap START β€” log shows β€œStarting send to X.X.X.X:5544”

  7. Configure your EFB app following instructions available by pressing (?) icon near presets

  8. EFB should now receive position and attitude data

  9. Mobile app: Enable desired NMEA sentences; adjust frequency

Workflow B β€” Phone Hotspot

  1. Enable hotspot on your phone

  2. Connect MSFS hardware to the phone WiFi hotspot

  3. Mobile app: Select Hotspot mode β€” IP is detected automatically

  4. Continue from step 7 of Workflow A

Workflow C β€” Relay Server (No Local Network)

  1. Mobile app: Select Relay mode

  2. MSFS panel: Select RELAY SERVER β†’ click SHOW USER ID QR β†’ tap START

  3. Mobile app: tap GET USER ID β†’ scan QR from MSFS screen β†’ tap START

  4. Data routes via the relay server; no IP configuration needed

  5. Continue from step 7 of Workflow A

Workflow D β€” Enabling Traffic

  1. In the mobile app, check one or more traffic sentence boxes (e.g. PFLAA_AIR for XCSoar, GDL90_AIR for ForeFlight)

  2. Set Traffic Range and Traffic Frequency sliders

  3. Ensure your EFB app is configured to receive the matching traffic format on the correct port (49002 for NMEA, 4000 for GDL90)

  4. Both apps must be running (service and MSFS panel both started)


Part 4: Ports Reference

Port Direction Purpose
5544 MSFS β†’ phone Web server β€” receives telemetry HTTP GET requests
49002 Phone β†’ EFB NMEA output (TCP or UDP, configurable)
4000 Phone β†’ EFB GDL90 binary output (always UDP, fixed)

Thank you. What is the difference with existing solution like fs2ff which allows me to connect my Foreflight and Skydemon on my iPad, for example?

As far as I understood (I did my best to extract features info from the technical documentation - no offense, it’s certainly useful but not really as this stage of the discovery for me), it adds the need to have on the mobile (smartphone/tablet) an additional piece of software (β€œbridge app”) which is not required with what I’m currently using.

Hi! sorry for confusing description, it was made such for a reason so only experienced EFB users will find it interesting. If someone have used XMapsy or FS2FF or any alternative in the past then it will easier find issues in FS2EFB.

All three (if you don’t mind I will include XMapsy into comparison) tools has similar goal - deliver aircraft and traffic data to the EFB, but in a bit different ways.

FS2FF and XMapsy uses SimConnect to get aircraft and traffic data, FS2EFB - JavaScript. While SimConnect is very flexible and allows to do many things with it, sometimes it act unpredictable, especially on consoles - requests throttled, some things stops to work after sim updates, connection closes for no reason, and so on. JavaScript seem to be more stable but it has data pull delays compare to SimConnect and, most important, traffic is limited to the AI airplanes - you can’t get multiplayer planes or aircraft added by 3rd party tools (like traffic injectors). Not sure how last one is implemented in SimConnect tools tho.

FS2FF provides only data in X-Plane protocol which supported by many EFBs but not all. XMapsy and FS2EFB support binary protocol for position+attitude and GDL-90 for traffic which is required by some EFBs like iFly GPS. FS2EFB also support native NMEA protocol which used by soaring tools (XCSoar) and marine navigation tolls. Yep, you can sail like a pro now with Aqua Map :grin:

FS2FF has minimalist settings which suits many but still someone may need more for better flexibility. XMapsy has a lot of parameters, but they may cause confusion for not experienced user. FS2EFB has as much params as XMapsy but they controlled by presets system - select EFB you need and all unrelated options will disappear.

FS2FF and XMapsy are EXE programs, means should be downloaded and installed manually. It may be not a big deal for experienced used, but novice simmers afraid to install EXEs from unknown sources, especially when MS defender triggers on it with notification β€œTHIS THING MAY BE MALWARE!”. FS2EFB is an app tested by authorities (Google and Apple) and theoretically safer to use (but some bugs may cause unexpected result, like battery drain).

Below only FS2EFB benefits.

As a mobile app installed on same device as EFB, it may has less chances of network interruptions during the work (a bit weak possibility but still).

As a mobile app, there is no need to have PC at all. So this is only solution for console players as I know. But I will not release it on MS Marketplace until it fully tested tho.

Android app has some cool stuff to use: GPS spoofing may β€œfake” your device location like it is flying in airplane, so you can connect Google Maps with MSFS, or name any tool which uses fused GPS service but do not support X-Plane or NMEA protocols. Also there is a screen share option so you can see Android phone/tablet screen inside the toolbar. May be interesting for VR users (PS5 VR is on the way btw). You can even simulate screen taps by pointer clicks.

So the answer on your question - I’m not sure you will find any benefits in new solution if old one covers all your needs. If you found any interesting feature listed - it’s worth to try (free anyway). But it is not tested well yet so high chances something will not work as good as on mature competitors. If you will find anything like this - feel free to report, will try to find the reason and fix it.

Thanks for the details answer, again. Don’t misundertand, I’m not supporting (nor developping) any of the mentionned β€œother” solutions. Just a addicted users of Foreflight and Skydemon (on iPad) connected to my MSFS2024. And curious.

My Skydemon connect to FS2FF via generic GDL90 compatible communication.

As I’m a PC MSFS user, so far I don’t see the need to have to launch extra on my iPad. In any case, FS2FF (this build Release Added broadcast support Β· jeffdamp-wave/fs2ff Β· GitHub) fits my need, but as far as I understand if I were a Xbox console user, your solution would interest me. As said, I’m curious and will monitor this thread.

Good to know! Thanks for the attention anyway :slight_smile:
Forget to mention - you can create flight plan in EFB and import it into MSFS by the app. Sounds cool but there is an unexpected issue happens - some MSFS navigation tools may not catch new flight plan and continue to display old one. So this feature is still under development.
Another one is weather preset import - but it may be helpful only for console soaring pilots, as PC has option to load weather preset before flight start anyway.

Project is finished, add-on provided in different forms depends on the sim version - toolbar panel for MSFS2020 and EFB app for FS24. Advantage of the FS24 solution as it is not required to keep the app active during flight. You can’t install FS24 version into MSFS2020 obviously, but you can do vice versa, if you prefer toolbar for some reason.

File links provided on add-on page: FS2EFB data export toolbar - TouchingCloud - Microsoft Flight Simulator!

Current progress:

  • Traffic export for Relay server mode (Cloud Gaming) - COMPLETE

  • Volanta data export (desktop/laptop with running Volanta app is required) - COMPLETE

  • Navigraph data export - COMPLETE but waiting for Navigraph approval

    Next update will be released once Navigraph will provide API credentials (or decline to provide).

Could this be a potential bridge, between Xbox MSFS2024 and the third party online virtual career site’s / systems like NeoFly, Fly the Line, OnAir, Etc… that PC players have access too?

That is interesting, will check such possibility.

Btw Navigraph still haven’t provided API keys so such integration is not possible at the moment. New update compatible only with Volanta.

Navigraph is of ok most good aircraft have it baked in. Or you can use without position marker.