Documentation

End-User Manual.

The full manual, always up to date. Prefer a downloadable file? Get the PDF.

SimFlyMinimums — End-User Manual

Edition: Desktop and browser interface ·

Document version: 1.0 · App version: 1.0.0

Simulators supported: Microsoft Flight Simulator 2020 / 2024, X-Plane 11 / 12 · Lockheed Prepar3D (in progress)

Audience: pilots and simmers who want the app working — no programming knowledge assumed.


A note about updates

SimFlyMinimums is continually evolving. As features are improved, some screens, labels and workflows may differ slightly from those described in this manual.

Use this guide as a reference alongside the version you have installed. If a difference leaves you unsure how to proceed, please contact novreis@simflyminimums.com.

About this manual

Chapter What it answers
1. Quick Start Guide What you need, how to install, how to get from a cold desktop to live telemetry on the map.
2. Dashboard & UI Overview Every screen, every flight-data field (Altitude, IAS, VS, Heading…), and what the connection indicators really mean.
3. Core Features Guide Feature-by-feature walkthrough: planning, charts, checklists, alerts, AI copilot, autopilot control, recording.
4. Troubleshooting Guide Connection drops, frozen or mismatched data, setup failures — with the exact log lines to look for.
Appendices A / B Connection settings and a quick reference checklist.

SimFlyMinimums is a cockpit companion, not a replacement for your simulator. It reads live telemetry from your simulator, draws a moving map with real procedures and charts, drives phase-aware checklists, warns you with custom rules, and can talk back to the simulator (autopilot, heading, takeoff assistance, replayed routes). Everything runs on your own machine — the "app" is a local web page served by a small local server, so you can also open it from a tablet or a second PC across the room. ---

How the application fits together

Three parts work together on your computer:

  1. The launcher starts the application and opens your browser.
  2. The local server connects to the simulator and supplies live flight data. Keep it running while using the application.
  3. The browser displays the controls and Moving Map. You can also open the interface on another device on your local network.

There are two separate connections. A page that opens successfully confirms that the browser can reach the server; it does not necessarily mean the simulator is connected. Use the Moving Map Start / Stop / Restart button and the changing flight values to check the simulator connection. See sections 1.5 and 2.5 for details.

1. Quick Start Guide

1.1 System requirements

Category Requirement Notes
Operating system Windows 10 / 11, 64-bit The server targets net10.0-windows, so the server must run on Windows. The browser (client) can be any device.
CPU / RAM 4-core, 16 GB RAM recommended Simulator + server + browser at once. The server is light; the simulator is not.
.NET runtime .NET 10 Desktop Runtime (only for an unpacked / dev build) The installed app is self-contained (win-x64), so in the normal case nothing else must be installed.
Disk 2 GB program + **140 MB navdata pack** (CIFP-2038.db) The navdata pack (airports, navaids, runways) ships separately and is required for map and procedures.
Data folder Writable ?:\SFMPublished\SFMFiles\ Created by the installer with full permissions; holds navdata and the chart cache.
Browser Current Edge or Chrome (Chromium) Required: the map, the WASM runtime, the spoken voice and joystick reading (Gamepad API) all live in the browser.
Internet Not needed for a few features Online services need it: map tiles, chart sites, SimBrief, FR24/OpenSky, AI, weather.
Privileges Administrator for installation only The installer writes a machine-level key and creates ?:\SFMPublished\SFMFiles. Dayto-day use does not need admin.

Optional keys and accounts — the app works without them; each one unlocks one feature:

Key / setting Where you set it Unlocks
Map (MapTiler, included) or your Azure Maps key Nothing to set for MapTiler. For Azure Maps: Setup → Map Provider → Azure Maps → Save Keys Base map imagery
AI Models keys -> Environment variables Windows environment variable (Setup shows the exact setx line) AI chat, First Officer, chart OCR
AzureSpeech:Key + Region appsettings.json on the server PC ATC speech recognition
FR24_API_TOKEN Windows environment variable FlightRadar24 search
OPENSKY_CLIENT_ID / OPENSKY_CLIENT_SECRET Environment variables (never in the browser) OpenSky real-flight import
SimBrief:ApiKey / SimBrief:UserId appsettings.json on the server PC SimBrief generate / load

1.2 Installing the app

A note on paths: SimFlyMinimums doesn't force everything onto drive C:. Where it lives on your disk is set by a config.xml file in your Documents folder, which points the app at the drive of your choice. Throughout this manual, ?:\ stands for that drive — wherever you see it, read it as "the drive you configured."

  1. Download SFMSetup-<version>.exe and run it as administrator.
  2. Accept the default folder ?:\Program Files\SimFlyMinimums, and tick Create a desktop shortcut if you want one.
  3. The installer then:
    • copies the self-contained app — server, launcher, and the browser client bundled inside the server;
    • creates ?:\SFMPublished\SFMFiles\ and ?:\SFMPublished\SFMFiles\Panels\ (cockpit panel pictures);
    • installs the encrypted European charts database eaip.dat and registers the machine key that unlocks it;
    • registers Uninstall in Windows settings.
  4. Copy the navdata pack CIFP-2038.db into ?:\SFMPublished\SFMFiles\ if it is not already there. Without it the airport, runway and procedure screens come up empty.
  5. Tick Launch SimFlyMinimums now, or double-click the desktop icon.

Panels folder: cockpit images are read from ?:\SFMPublished\SFMFiles\Panels\<aircraft>\*.png (for example Panels\FBWA320NX\). Drop your own screenshots in there to feed the Panel Image Viewer.

1.3 First launch

SimFlyMinimumsLauncher.exe does four things so you never have to: it starts the server hidden, waits up to

60 seconds for the server to answer its health check, then opens your browser on the app. If a healthy server is already running it simply opens the browser; if a stale server from a previous crash is found, it is closed and restarted (only processes launched from its own folder are touched).

Success: a browser tab opens on the Setup page. The server keeps running in the background — closing the tab does not stop it, and reopening the browser is instant.

  • Failure: a dialog says "SimFlyMinimums could not start" with the reason and the log file path. Logs are in %LocalAppData%\SimFlyMinimums\logs\ (launcher-YYYYMMDD.log, plus server-stdout-* and server-stderr-*). See §4.2.

Check the server by hand: open http://localhost:5266/health. JSON containing "status": "ok" (plus the version and uptime) means the engine is alive — this is the one address to trust when anything else disagrees.

Address to use: in the current configuration the server listens on

http://localhost:5266 — plain HTTP, bound to all interfaces, so it is also your LAN address (http://<server-ip>:5266). No HTTPS endpoint is listening by default. The launcher and some older shortcuts still mention port 7168, and the server configuration mentions 5261/7161; those are not what actually answers today (see §4.2, item L-4).

DevTools: press F12 → Console. Almost every diagnostic quoted in this manual is a console line.

1.4 Simulator prerequisites

Microsoft Flight Simulator 2020 / 2024 and Prepar3D (SimConnect)

Start the simulator and load an active flight — aircraft on the ground, not sitting in the main menu. There is nothing to enable in MSFS: the SimConnect interface is built in, and the required SimConnect.dll ships next to the server executable.

The server must run on the same PC as the simulator for the normal (named-pipe) connection. If the simulator lives on another PC, use option C in §1.5. Prepar3D uses the same SimConnect path — choose P3D in Setup and the app behaves identically. If you fly through FSUIPC (or a legacy FSX-era setup), the server can reach an external FSUIPC bridge over HTTP instead — FsuipcBridge:Url in appsettings.json (default http://192.168.1.103:5555), used for things like live heading capture. Point it at the PC and port where your bridge listens.

X-Plane 11 / 12 (UDP datarefs)

In X-Plane open Settings → Network. Enable the data output ("Data Export / output datarefs to applications") and note the port — standard is UDP 49000. The app connects to host 192.168.1.103, port 49000 by default (the developer's own lab address). If X-Plane runs elsewhere, repoint it — the Setup IP box is not wired to this in the current build — with one call to the server: POST http://localhost:5266/api/XPlane/connect with body {"ip":"192.168.1.50","port":49000} (optionally plus "dynamicVars"), or give your X-Plane PC that default address. GET /api/XPlane/status reports what the server currently thinks. Choose xplane in Setup → Simulator so the variable catalogue, unit conversions and on-screen labels come from the X-Plane side instead of the SimConnect side.

What Setup's simulator choice actually switches

Choose the simulator you are using in Setup, then press Start. The rest of the interface follows the same workflow across simulators. Some status labels and control features depend on the selected simulator.

1.5 Using the app across your local network (and firewall rules)

Option A — Everything on one PC (default, no network work at all)

Simulator, server and browser on the same machine. No firewall rule is needed — traffic stays on localhost. This is the recommended starting point; get it working here first.

Option B — Simulator + server on the "sim PC", browser elsewhere (tablet, second screen, cockpit PC)

Only the interface moves; the simulator link stays local on the sim PC.

On the sim PC, launch the app once so the server runs (http://<simPC>:5266/health should answer). Allow the app's port through Windows Defender Firewall on the sim PC (PowerShell as administrator):

   netsh advfirewall firewall add rule name="SimFlyMinimums (TCP 5266)" dir=in action=allow protocol=TCP localport=5266

Graphically: Windows Security → Firewall & protection → Allow an app through firewall → allow SimFlyMinimumsBlazorServer on Private networks. Clicking

Allow on the first-launch firewall prompt does the same thing. From the other device open http://<sim-PC-name-or-IP>:5266 (for example http://192.168.1.50:5266). Use the HTTP address — this is the endpoint the server actually listens on, and there is no login. The real-time stream address is derived from the URL you typed, so the app finds its own server automatically — nothing else to configure. In the app set Setup → Computer location to Remote (§2.2). Keep the browser tab visible and focused. The app is tuned to survive a backgrounded tab (§4.3, C-6), but a dedicated tab behaves best.

Never expose port 5266 to the internet. The local server has no login — allow it on Private networks only, and never forward this port on your router.

Option C — Simulator on a different PC than the server

X-Plane: works out of the box, because its transport is the network. Set the X-Plane PC's address as the connect target (§1.4) and allow UDP 49000 inbound on the X-Plane PC:

  netsh advfirewall firewall add rule name="X-Plane datarefs (UDP 49000)" dir=in action=allow protocol=UDP localport=49000

MSFS / Prepar3D (remote SimConnect): SimConnect must be configured for TCP on both machines. On the simulator PC enable network SimConnect in the simulator's own SimConnect.xml (Protocol=IPv4, Address=0.0.0.0, Port=500) and open the port: netsh advfirewall firewall add rule name="SimConnect TCP 500" dir=in action=allow protocol=TCP localport=500 On the server PC edit the shipped SimConnect.cfg (next to the server executable) so the client profile points at the sim: [simConnect] Protocol=Ipv4 Address=192.168.1.103 Port=500 MaxRecieveSize=4096. Restart the simulator and the server after editing either file.

FSUIPC bridge / Aircraft LVar service: set FsuipcBridge:Url (…:5555) and AAO:BaseUrl (…:43380) in appsettings.json, and allow those ports inbound on the machine that hosts them.

The WPF companion "bridge" (streams airport taxiway geometry to the map) joins the same server as an extra real-time client — no firewall rule beyond option B.

1.6 Step-by-step: cold desktop to flying in 12 steps

# Do this You should see
1 Start the simulator and load a flight on the ramp. Aircraft visible, controls responsive.
2 Double-click the SimFlyMinimums desktop icon. Browser opens on Setup within a few seconds.
3 Setup → Simulator: pick MSFS2020 / MSFS2024 / MSFS / xplane / P3D. The variable catalogue reloads for that simulator.
4 Setup → Computer location: Local (or Remote if this browser is on another device). Remote hides joystick-driven live recording.
5 Setup → Departure / Arrival ICAO, aircraft, optional runway-length filter. Runway combos fill; the datarefs grid becomes searchable.
6 Setup → Map Provider: leave MapTiler (recommended). The map key comes with the application. Only Azure Maps needs a key of your own (§4.5, F-1).
7 Variables page → tick what you want on the map (up to 18) → optionally Save profile. The chosen names appear as numbered slots on the Moving Map.
8 Moving Map → press Start in the top panel. SnackBar "Connecting to simulator…", then values move and the aircraft appears.
9 Sanity-check the data: Altitude, IAS (kts), Heading, Gr.Speed, VS(fpm). If they do not move, stop and go to §4.3.
10 Left panel → minimum runway length, TAWS, chart type. Terrain profile graph is drawn.
11 Bottom panel → Checklist combo → run BEFORE TAKEOFF, confirming items. Phase chip advances and the next phase's checklist is offered.
12 Fly. Double-click a variable to build an alert rule; press F12 → Console if anything looks wrong. Rules colour fields, pop snackbars, or speak.

Press Ctrl+F5 (hard refresh) after any update or rebuild. The browser caches the app aggressively, and a half-updated page is the single most common cause of "the developer says it is fixed but I still see the old behaviour" (§4.2, L-6).

1.7 Trial, licence and tiers in 30 seconds

Open Upgrade: start the 14-day free trial (no card), or enter a

license key you bought. Your tier shows as a chip on the Setup page (Free / Trial / Premium) and decides what is unlocked. Premium is €8/month or €88/year.

Free deliberately shows most controls dimmed with a lock icon instead of hiding them — click one and a snackbar offers Upgrade. The one whole-page lock is the Rules Engine, which shows a Premium wall.

Trial unlocks everything but caps the heavy features (e.g. 5 chat questions, 3 flights of reports, 5 SimBrief loads). Premium removes the caps. Chapter 3 marks each feature Free / Trial / Premium. The licence is cached on your machine and verified against a signed token, so a short internet outage does not lock you out mid-flight; hardware changes need a re-bind through support.


2. Dashboard & UI Overview

2.1 The tab workspace

SimFlyMinimums is a single browser page. A tab bar across the top switches tools without losing the map underneath — close a tab and the Moving Map state (markers, drawn procedures, phase, monitored values) is still there. This is deliberate: it reproduces a desktop cockpit, not a website.

Tab / address Name What lives there
/ or /setup Setup Flight & simulator configuration, datarefs catalogue, licence, AI provider. Default page.
/introduction Introduction First-run tour and connection guidance.
/moving-map (/movingmap) Moving Map Operational centre: live aircraft, four panels, charts, alerts, autopilot, ATC, replay.
/flight-plans Flight Plans Airport finder, route generation, SID/STAR/IAP drafting, SimBrief and traffic-track import.
/variables Variables Full simulator-variable catalogue and the ≤18 monitored-slot picker.
/faa-charts FAA Charts FAA procedure charts with PDF viewer and georeferencing.
/pro-charts Pro Charts 2D/3D chart views — terrain profiles, elevation analysis.
/checklist Checklists Normal / non-normal lists per aircraft, panel-image crops, PDF attachments.
/rules-engine Rules Engine Custom alert rules (Premium page).
/flight-reports Flight Reports Recorded flights, telemetry charts, cockpit transcript, CSV export (Free and Trial: last three flights; Premium: full history).
/chat Chat AI assistant with live flight context (capped on Free/Trial).
/aao AAO LVars / Aircraft Scripts Explorer Browse and read Aircraft-style L: variables from the sim PC.
/mobiflight MobiFlight MobiFlight environment variables and the Input Events explorer.
/tools Tools Utilities: caches, weather/aircraft lookups, OpenSky and other helpers.
/workspace Workspace The multi-tab host that arranges the pages above.
/upgrade Upgrade Trial, licence-key activation, tier status.
/help Help The in-app feature guide (this manual's shorter sibling).
/controls Controls Reserved — currently a placeholder page.

Anything reachable from a tab is also reachable from the left navigation panel or the Moving Map panels, and both share the same state.

2.2 Setup page anatomy

Block Field What it does behind the scenes
Flight configuration Departure / Arrival ICAO Drives airport resolution, distance-to-destination, charts and recorder context. Free typed ICAO is accepted.
Aircraft (category / model) Selects the checklist set, panel images, and the aircraft profile the AI copilot reasons about.
Cruise speed · flight mode · aircraft category Feed route generation, descent planning and TAWS maths.
Runway length + Greater/Less, Dep/Arr runway The same minimum is reused by Moving Map's Rect Airports; values accept RW10 or10.
Simulator Radio: MSFS2020 / MSFS2024 / MSFS / xplane / P3D Chooses the data backend (SimConnect vs X-Plane UDP) and the variable catalogue. P3D is handled as SimConnect.
Computer location Local / Remote Local = this browser sits on the joystick/sim PC. Remote hides it — a browser can only see a joystick plugged into its own machine.
Charts Country (eAIP) + WithCharts Picks world AIP providers. Countries in bold teal have given authorization; the rest open the official site with step-by-step instructions.
Map provider MapTiler (recommended, included) or Azure Maps + its key field Which engine draws the moving map; the key is kept server-side.
AI provider Provider · Env var · setx … snippet Where Chat / First Officer / chart OCR get their key.
Subscriptions & licences Tier chip · License Key Activate, view expiry, start trial.
Variables DataRefs grid + Selected variables Browse the catalogue (filtered by simulator), tick up to 19, save a named profile.

The datarefs catalogue holds ~4 600 rows for X-Plane and is virtualised on purpose. If it feels slow the first time, that is one long fetch, not a hang — use the filter box instead of scrolling.

2.3 Moving Map anatomy

Area Main contents
Top panel Flight values, connection controls, charts and flight controls.
Centre map Aircraft position, airports, route, procedures and chart overlays.
Left panel Flight configuration and auxiliary calculations.
Right panel Flight and navigation information.
Bottom panel Variable monitoring, flight phases and checklist controls.

The d-pad (lower right) opens/closes the four panels: top = charts & flight controls, bottom = variable monitoring and phases, left = flight configuration, right = flight data.

Zoom: + / −, plus Set / Get to store a zoom level for the current airport and snap back to it.

Dep / Arr buttons (take-off / landing icons) recentre on the departure or arrival active runway at zoom 13.

Airports turns red when the airport layer is hidden; Route Airports turns blue when shown.

Map provider switches the rendering engine (MapTiler or Azure Maps); your choice is remembered locally.

Click a drawn procedure to isolate it and print its altitude restrictions. Click an airport, then its red pin, pick a runway: a runway rectangle and a 6 NM marker appear (plus a floating Cancel). Clicking the 6 NM marker re-runs the approach-hazard calculation for the autopilot.

SkyVector opens the real-world sectional for the current view (with the optional browser extension pointing back at this server). Values you see in the panels are read-only: they are what the simulator says, not what you can type.

2.4 Flight data fields — what each one means

These are the numbers in the top panel (and the right panel). Tooltips on each box show the unit; the source column names the value the server publishes, useful when you ask about a field or write a rule.

Field on screen Meaning Source Read it as
Latitude / Longitude Aircraft position, decimal degrees (negative = S / W) Latitude, Longitude The map icon is the same number drawn on the map.
Altitude Altitude in feet Altitude Barometric/indicated altitude as the simulator reports it — not terrain clearance.
Heading Aircraft heading in degrees Heading Magnetic heading unless the sim gives true; used by tracking and CTL features.
Gr.Speed Ground speed, knots GroundSpeed Wind moves this up or down while IAS stays constant.
IAS (kts) Indicated airspeed, knots IndicatedAirspeed The airspeed the pilot flies. Rotation, stall and overspeed alerts use it.
VS(fpm) Vertical speed, feet per minute (negative = descending) VerticalSpeed / AbsVSfpm Rules compare the signed value; AbsVSfpm is the magnitude only.
Nxt WP The simulator's own next GPS waypoint ident NextWaypoint Empty means the sim has no active flight plan leg — check your FMS, not the app.
True Airspeed True airspeed TrueAirspeed Provided in the data stream for cruise analysis.
Bank Bank angle, degrees BankDegrees Drives turncoordination alerts and the automation's roll commands.
Wind Speed / Direction Simulated wind aloft WindSpeed, WindDirection Explains GS−IAS differences.
Fuel (L/R/Ctr), Fuel flow Tank quantities and flow FuelLeftWing, FuelRightWing, FuelCenter, FuelFlow1/2 Consumed by reports and the copilot's fuel callouts.
N1 (avg / min / max), RPM Engine percentages N1_Percent, n1Avg, n1Min, n1Max, Rpm N1_min/N1_max expose engine asymmetry.
On ground / Parking brake / Gear / Flaps / Spoilers System states (0 or 1, or index) Onground, BrakeParking, GearCheckDn, FlapsHandleIdx, SpoilersArmed Shown as words where a lookup table exists, otherwise as numbers (§4.4, D-5).
AP Master / Director mode Autopilot and flight-director state AutopilotMaster, DirectorMode CTL/heading features refuse to run unless AP is engaged.
Localizer / Glideslope deviation NAV1 needle offsets (dots) AbsNav1HdefDot, AbsNav1VdefDot, GlideSlope Also feed the ILS simulation and approach alerts.
Dist to Airport Great-circle distance to the arrival ICAO, NM DisToAirport (mirrored as DistancetoDestinationNM) This — not the raw FMS DTC — is what the descent rules compare against.
Slots 1…18 (GetDynLabel) Your own monitored variables DynamicVariables[...] + DynamicVariableTexts[...] Named exactly as you picked on the Variables page.
Timestamp When this sample was produced Timestamp If it stops advancing, the data link is stale (§4.3).

2.5 Connection status indicators

The Start / Stop / Restart button (Moving Map top panel)

This single button is the simulator-connection indicator:

Button label Colour Meaning Pressing it does
Start Purple/primary Not connected to the simulator Opens the SimConnect or X-Plane session for the sim chosen in Setup, re-sends your monitored variables, then re-centres the map.
Stop Purple/primary Connected and data is flowing Disconnects cleanly.
Restart Red Connected but stale — no data for ~8 s (20 s while takeoff automation is running) Drops and re-opens the session; snackbar "Restarting connection…".

The button turns red the moment the watchdog decides data stopped arriving, even though the app still thinks it is connected. That red Restart is the honest indicator — trust it over the map.

What you see, in order, when things go well

Connecting to simulator… (blue snackbar) — request accepted. Aircraft title fetched and shown in status; map recentres on you. Fields start updating at 2 samples per second (the server polls the simulator every 500 ms). If a link drops: Connection lost — restarting SimConnect… (amber) followed by SimConnect reconnected (green), or Auto-restart failed — will retry in 15s (red).

Automatic recovery you should know about

  • Simulator link watchdog: checked every 2 s; stale after 8 s without data; auto-restart attempted with a 15-second cooldown so it cannot thrash. Auto-restart is deliberately deferred while a takeoff automation is running, so it never yanks the controls mid-roll.

  • Browser ↔ server link: reconnects automatically after 0, 2, 5 and 10 seconds; keep-alive every 15 s with a 60 s timeout, tuned so switching browser tabs does not kill the session.

Simulator sessions survive a page reload: dropping the browser tab does not tear down SimConnect, because browsers legitimately reconnect with a new id. Press Stop (or restart the server) if you want a clean stop.

Frames with impossible values are discarded rather than displayed — a blank/last-value field while the sim is loading is normal, not a bug (§4.4, D-2).

Diagnostics if the indicators disagree

Symptom Likely layer First check
Page never loads / spins forever Server not running http://localhost:5266/health, then launcher log (§4.2).
Page loads, fields frozen, button red → Restart Server ↔ simulator Is the sim loaded in a flight? Press Restart. (§4.3, C- 1/C-2.)
Fields frozen, button says Stop, no red Browser ↔ server F12 console: hub not connected. Reload the tab.
Fields move but the aircraft icon does not Map rendering Hard refresh Ctrl+F5; check the map key/provider (§4.5, F-1).
One field is stuck, others move That variable only Re-check it on the Variables page; a bad unit string or wrong dataref returns nothing (§4.4, D-4).

2.6 Colour coding, chips and pop-ups

Cue Where Meaning
Field background colour (e.g. amber #ffe5b4 → green #c8f5c8) Top/right panel value boxes A rule is evaluating that variable and its action is "change colour".
Snackbar (bottom-of-screen pop-up) Anywhere Rule alert, connection event, quota message, upgrade nudge.
Spoken text Your browser voice A rule action set to speech, a First Officer callout, or a missed-approach readback.
Phase chip Bottom panel Current flight phase (e.g. BEFORE TAKEOFF, DESCENT PREPARATION, FINAL APP). Checklists and copilot logic follow it.
Purple buttons Moving Map Automation is armed/active (radar, live record, Aircraft TO, First Officer).
Red buttons Moving Map Automation is running hot (live recording on, airports hidden, stale connection).
Lock icon + dimmed control Everywhere Premium feature you do not currently have. Clicking it offers Upgrade.
Bold teal country name Setup → eAIP Charts of countries with authorization awarded; ordinary text = manual site instructions only.

2.7 What the tier changes in the interface

Free — controls stay visible but locked (PremiumGate); the /rules-engine page shows a Premium wall with an Upgrade button.

Trial — everything opens, with per-feature daily caps; when a cap is reached you get a snackbar telling you so, and the feature behaves as Free until reset.

Premium — no locks, no caps. The developer-only tier switcher used for testing is compiled out of the released build, so you cannot unlock paid features by editing browser storage; the licence tier comes from a signed licence token.


3. Core Features Guide

Each section explains where to find a feature, how to use it, and any applicable limits.

3.1 Setup, variable monitoring and the data catalogue

Where: /setup · /variables · Moving Map bottom panel

Your Setup selections remain available when you switch tabs. After changing the airports, aircraft or monitored variables, press Start or Restart to apply the changes to the simulator connection.

The DataRefs browser lists every variable your chosen simulator can expose: MSFS/P3D show SimConnect names, X-Plane shows sim/… datarefs. Each row carries source, type, unit and description. Tick up to 19 variables to monitor; they are registered with the simulator as a subscription and arrive in every telemetry frame. Save/Load profiles to switch sets between aircraft or phases.

Pause / Resume in the bottom panel freezes the displayed values so you can read a fast-changing number.

Sanity check: a value that never appears is almost always one of three things — the wrong simulator chosen in Setup, a variable that the sim rejects because its unit does not match, or Start pressed before the variables were selected (press Restart to re-send them).

3.2 The simulator data bridge (SimConnect / X-Plane UDP / FSUIPC)

Where: Moving Map Start / Stop / Restart · Setup simulator radio Live flight data is shared with every connected browser. Multiple browsers (tablet + cockpit PC) see the identical stream, because the simulator session is owned by the server, not the browser.

Reading is universal; writing is simulator-specific. Position, altitude, speeds, engines, systems and autopilot state work on all three sims. Control-writing features (heading, takeoff assistance, replay) use SimConnect events and RPN commands, so they are MSFS/P3D unless the aircraft has its own path (Aircraft, via MobiFlight/FCU logic).

X-Plane specifics: values arrive as numbers, and text-like simvars (gear, modes) are translated with a per-simulator lookup table. If a status field shows a bare number instead of a word, the table has no entry for that code — the numeric value is still correct (§4.4, D-5).

  • FSUIPC / legacy bridge: selected cockpit values (for example the Aircraft heading) can be taken from an external FSUIPC bridge over HTTP instead of SimConnect (FsuipcBridge:Url). If the bridge is offline the rest of the app keeps running; only the features that depend on it go quiet.

3.3 Moving map, aircraft tracking and approach calculations

Where: /moving-map

Live tracking: the aircraft icon moves and rotates with each telemetry frame, auto-centring the first time data arrives and after any reconnect.

Airport layers: airports are drawn from the local navdata . Filtering by minimum runway length uses the same rule you set in Setup.

Runway approach flow — the classic "click, pick, calculate" sequence: Click the airport icon → a red pin is dropped (nothing else happens yet; no calculations run on click). Click the red pin → the runway dialog opens and accepts RW10 or 10.

OK → the app draws the runway rectangle, places a 6 NM marker on the approach side, hides the airport icon, starts centreline tracking, and shows a floating

Cancel. Click the 6 NM marker later → recalculates the suggested heading straight away (no dialog) — handy for dialling the approach heading into the autopilot.

Cancel restores the airport icon and clears every marker and rectangle.

Weather radar: RainViewer precipitation overlay with an opacity slider and the frame's local timestamp, so you can tell how old the picture is.

Terrain awareness (TAWS) and Pro Charts plot the elevation profile along your route with the obstacle heights that matter; Pro Charts adds 2D/3D rendering .

  • Emergency glide circle: set a glide angle and the app draws the range you can make from your current position, with the airports inside it — an engine-out planning aid.

  • Taxiway geometry at big airports can be streamed from the companion WPF bridge on the sim PC instead of being looked up locally.

3.4 Flight planning, routes and procedures

Where: /flight-plans

Airport finder — a virtualised table of 1000+ airports: ICAO, name, elevation, coordinates, runway count and lengths in feet and metres.

Route generation

IFR (A*) (Premium) — automatic lowest-cost pathfinding between your airports; editable before you send it to the sim.

VFR (Free) — manual VFR plan construction.

Image overflow (Free) — trace a plan from an uploaded image of a printed flight plan.

Recommended IFR sequence — a dialog listing, in order, the calls you should actually make (ALL in Dep runways → Approach) for the plan you built.

Procedures (SID / STAR / IAP) are drawn as coloured polylines with labels:

SID pink, STAR yellow, IAP green halos before you click; after isolating one, its altitude restrictions appear (STAR navy on light blue, approach black on orange). Choosing a runway redraws only the procedures valid for that runway; choosing ALL clears and redraws everything. Transitions, waypoint badges and "via" navaids follow the same filter. STARs that legitimately stop short of the runway ("expect vectors") are drawn dashed, never silently extended. On first load with remembered airports, the runway lists and procedure combos fill in without drawing lines — the polylines appear when you actually change the runway. That is intentional, not a freeze.

Navaid management — add a navaid or fix by name, reorder the list, then activate the plan to send the route into your simulator's FMS.

Limits: selecting navaids inside a rectangle is capped — above

800 fixes the app refuses and asks for a smaller box rather than quietly showing part of the list.

3.5 SimBrief integration (Premium)

Where: Flight Plans → SimBrief Generate / Load

Put your SimBrief API key and user ID in the server's appsettings.json (create a key on your SimBrief account), then restart the server.

Generate builds an OFP at SimBrief from your Setup airports, chosen runways and aircraft/cruise profile and brings the plan back — route, waypoints, fuel and payloads.

Load imports an existing saved SimBrief flight by OFP number, so you can fly a plan built on the website. The imported route feeds the map, the procedure pickers, the recorder and the copilot's context.

If the buttons spin and nothing appears, a missing API key is the usual cause; the callback page also lives on the vendor's site, so a blocked internet connection shows up here first.

3.6 Flying someone else's real flight: FR24 and OpenSky replay

Where: Flight Plans → ASDB (choose FR24 or OpenSky) · Moving Map panel: FR24 API, FR24 REPLAY, OPEN CSV, SAVE CSV OpenSky requires OPENSKY_CLIENT_ID and OPENSKY_CLIENT_SECRET to be configured.

Search. FR24 keeps a route + date search. OpenSky mirrors the classic arrival search: departure and destination come straight from Setup (both required, shown readonly); you pick a UTC window — at most two days wide, inside the last 30 days — and the app lists matching arrivals with callsign and first/last observation times.

Import one track (Load Track). The preview reports quality counts; gaps longer than 120 s are flagged instead of invented, points without altitude are dropped, and impossible outliers are filtered. Nothing is downloaded in bulk.

Save / open CSV, so a track becomes a file you keep — with UTC timestamps and source metadata.

Replay with ASDB REPLAY : the aircraft is flown along the recorded path with speed/altitude guidance and turns - Playground

Honest limits. OpenSky altitude is barometric (feet, not terrain clearance); its speed is average ground speed derived from position over time, not IAS; and true track is not a magnetic heading. Sparse coverage can miss turns and approach points, and the API has quotas. Treat a replay as a training scenario, not a reconstruction. Trial usage is capped and, for FR24 Replicate, restricted to certain aircraft.

3.7 Charts: FAA, eAIP, georeferencing, and spoken missed approaches

Where: /faa-charts · /pro-charts · Moving Map top panel + righthand chart viewer · Setup → country (eAIP)

FAA charts: pick airport → runway → procedure type; the chart opens in the browser's native PDF viewer.

World (eAIP) charts: for the countries the app has display authorization, the PDF is fetched and shown inside the app. Remaining providers open the official site with step-by-step human instructions, and the banner above the viewer always tells you which source you are looking at. Treat anything the app cannot render as a reference, not as an official document.

FAA Chart georeferencing (Premium): an approach chart is stretched onto real-world coordinates so your aircraft flies on the chart. Spoken missed approach / Go Around (Premium): press Go Around (or actually fly one) and the app extracts the missed-approach text from the chart with AI OCR, reads it out and shows the steps. Selecting a chart quietly pre-warms the cache, so the first go-around on a chart you already opened replies almost instantly.

Restrictions helpers: the procedure restrictions dialog summarises speed/altitude constraints, and a chart restrictions panel warns you when a chart cannot be automated.

3.8 Checklists and flight phases

Where: /checklist · Moving Map bottom panel (checklist combo, phase chip, Suppress Phase Callouts)

Checklists are grouped per aircraft and by group / description (e.g. BEFORE TAKEOFF, AFTER TAKEOFF, DESCENT PREPARATION, APPROACH, LANDING, GO AROUND). Confirming items advances you; the phase chip shows where you are.

Phase-aware behaviour — what to expect, so a non-bug is not mistaken for one: Start mid-flight inside a phase (parked on the runway with BEFORE TAKEOFF already true) and the app catches up, offering the matching checklist. Confirming a checklist advances the phase, after which the app stays quiet. The next checklist opens only when that phase's own conditions become true. It never cascades several checklists at once and never jumps ahead.

Rules without a phase are alerts only. They may colour a field, pop a snackbar or speak, but they never open a checklist — that difference is one column in the rule (§3.9).

  • Panel images: items can carry cockpit pictures. Crop a region, tag it, page through with Prev/Next, or open a full-screen overlay; PDF-linked items open in the inline viewer.

  • Checklist image search (Premium, aircraft-dependent) finds the panel picture matching a tag and shows the AI's description of it.

Hardware input: a physical button or encoder can confirm items — available only when Setup says Local, because a browser can only see a controller plugged into its own machine.

Silence when you need it: Suppress Phase Callouts mutes automatic announcements during critical phases.

3.9 Rules engine — your own cockpit alerts (Premium page)

Where: /rules-engine · Moving Map: double-click any value field to pre-fill a rule for it · RuleEditorDialog A rule is up to three comparisons, joined with AND/OR, plus actions:

Part Your options Notes
Conditions > < = >= <= != against a number or another variable Variable names are exactly what the panels show (ALTITUDE, IAS, VS, GROUNDSPEED, DISTOAIRPORT, …) plus your own monitored variables.
Logic AND / OR Combines up to three conditions.
Actions Field background colour · snackbar pop-up · spoken text Pick one or more.
Phase (empty) = plain alert · a phase name = phase rule that opens that phase's checklist Empty-phase rules must never open a checklist.
ConfirmSeconds Debounce, in seconds The condition must hold that long, so a single-sample blip cannot wake you.

Pre-installed rule sets ship for common aircraft (the A320 phase rules among them); you can add your own — three custom rules on trial, unlimited on Premium. If a rule fires at the wrong moment, first compare the variable it uses with the variable actually displayed in the panel: that mismatch is the classic cause (§4.4, D-3). Double-clicking a field, rather than typing a rule from memory, guarantees the names line up.

3.10 Autopilot control, CTL and takeoff assistance

Where: Moving Map top panel (CTL, ILS, Go Around), left panel (autopilot mode), bottom panel (AIRCRAFT TO, FR24 replay, Input Events, MobiFlight)

  • **CTL heading — "fly a initial approach to a selected runway it sets the autopilot heading for you. On a Aircraft A320 it takes the proper route: convert true → magnetic with the simulator's own variation, read the FCU heading, turn the encoder the short way round, wait for the display to settle, then pull — and it refuses to claim success while the managed/dashed heading flags are still lit. Timing: 100 ms control ticks, a dead encoder gives up after ~4 s, up to four extra pull attempts, a 90 s cap on the whole target. Anything that should abort — autopilot off, touchdown, disconnect, stale telemetry — cancels the pending command; CTL Stop calls the cancellation endpoint, and a new target keeps an outstanding encoder acknowledgement rather than double-turning. Requirements: connected MobiFlight runtime with valid FCU outputs, live telemetry, aircraft airborne, and AP1 or AP2 engaged. The response distinguishes requested from confirmed — an accepted request is not proof the aircraft turned; look for [CTL:HDG] FCU CONFIRMED (or FAILED to confirm) in the server log.

ILS simulation (Premium) generates localizer/glideslope guidance even where no real ILS exists, so you can practice a precision approach anywhere; needles and callouts behave as on a real one.

Go Around (Premium) — the OCR'd, spoken missed-approach procedure (§3.7).

AIRCRAFT TO — experimental automatic takeoff (Fun / FR24 section of the left panel). Arms only on the ground at ≤ 20 kt; holds the centreline with rudder below rotation, forces rudder to zero as you rotate, then ramps elevator; neutralises everything while parking brake is set at ≤ 15 kt.

This is a hobby experiment, not an autopilot. Its console line is version-tagged (e.g. [AircraftTO v10 arm-ground-line-align]) and the liftoff line reports IAS / GS / RWY / HDG / ERR / XT — if you do not see the current marker, the browser is running an old build (§4.2, L-6).

MobiFlight & Input Events: the MobiFlight page reads environment variables from a running MobiFlight profile; the Input Events Explorer (bottom panel) finds and fires MSFS input events by name or hash (enumerating and reading are Free; firing, saving and deleting are Premium) — the tool for custom-coded aircraft. Events are enumerated automatically on connect, which matters on MSFS 2024 where an event the session never enumerated can be accepted and silently ignored.

AAO / Aircraft LVar explorer (/aao) browses and reads L: variables straight from the Aircraft scripts web service on the sim PC (AAO:BaseUrl, default port 43380).

3.11 The AI crew: First Officer, Chat, and ATC recognition

Where: Moving Map (First Officer toggle, ATC callsign box + capture,

Go Around), /chat

AI First Officer (Premium) listens to the live telemetry stream and speaks what a real copilot would: phase transitions, checklist reminders, and abnormal conditions. It is

phase-aware (the client tells the server the current phase, so "-2 000 fpm" is normal in descent and a warning on final) and aircraft-aware (it looks up your aircraft's numbers — MTOW, runway lengths, flap speeds, climb capability — from the aircraft table you fill in Setup, instead of guessing from the livery name). Hard safety checks stay deterministic: overspeed and stall thresholds, and a sink-rate guard scaled to your aircraft's climb capability near the ground. Mute it any time with the toggle or Suppress Phase Callouts.

Chat Assistant (Premium) answers with your live flight in context — ask "why are we high on this approach?" and it sees altitude, VS, position and phase. Organise prompts by category and mode (Auto / General / Data), click a prompt to send it, and add your own.

ATC speech recognition (Premium, Windows only): type your callsign, press capture, and the server listens to your system audio loopback, transcribes ATC, and highlights lines that contain your callsign. Transcripts are stored for the Flight Report's cockpit transcript. The feature needs an Azure Speech key (AzureSpeech:Key + Region) on the server; without it, the toggle simply reports failure (§4.5, F-6).

ATC readback turns what you heard into a suggested readback, and the missed-approach voice shares the same browser speech channel (voices and test hook: see §4.5, F-8).

3.12 Flight recording and reports

Where: /flight-reports (Free) · Moving Map Live Record · Setup demo-recorder controls

1 Hz telemetry recording: one row per second — position, altitude, IAS, ground speed, vertical speed, bank, heading, your monitored variables, and the flight phase the app believed it was in at that instant (so a report tells you why something happened, not only what).

  • Per-flight reports render altitude / IAS / VS / bank charts, the aircraft profile line, the cockpit transcript with speaker labels (Captain / FO / TTS / ATC), and export to CSV for your own analysis.

Live Record (purple → red while rolling) captures the current segment with synchronised data; trial caps the number of recordings.

Free and Trial retention: the last three flights. Premium: unlimited history. The recorder runs on every tier. Live Record is Premium.

3.13 Weather, terrain and other tools

Feature Where What you get
Weather card Moving Map METAR information at your airports: wind, visibility, temperature and QNH.
Weather radar (Premium) Top panel toggle and opacity slider Precipitation overlay with the frame's local time.
TAWS / terrain profile Left panel: TAWS; Pro Charts Elevation along the route, minimum altitudes and obstacles.
Terrain projection (Premium) Moving Map Terrain along a selected segment.
Emergency glide circle Top panel A visual estimate of range and nearby airports based on the selected glide angle.
POI Moving Map Show or hide points of interest and add named VFR landmarks.
Airport info / runways Airport selection and right panel Runway ends, lengths, bearings, frequencies and taxiway geometry.
Help Help page A quick guide to the application's features.

4. Troubleshooting Guide

4.1 Sixty-second triage

Answer three questions in order. Every item number below belongs to one of them.

Question Where to look If NO → go to
1. Is the server running? Open http://localhost:5266/health — expect {"status":"ok", …} §4.2 (L-items)
2. Is the simulator connected? Moving Map button: Stop = connected, Start = not connected, red Restart = connected but stale §4.3 (C-items)
3. Is the data right? Compare the top-panel fields with your cockpit instruments §4.4 (D-items)

Feature-specific problems (map, charts, AI, replay, licence) are §4.5 (F-items); slowness is §4.6.

Where the evidence lives

Log / tool Location What it shows
Browser console F12 → Console on the app page The single best diagnostic: [Toggle], [AutoRestart], [FirstOfficer], [AircraftTO …], [LoadAirports], hub errors.
Launcher log %LocalAppData%\SimFlyMinimums\logs\launcherYYYYMMDD.log Whether the server started, health-check results, browser launch.
Server stdout / stderr same folder, server-stdout-*.log / server-stderr-*.log Crash reasons, Failed to connect to SimConnect (is MSFS running?), [CTL:HDG] ….
Snackbars in the app Bottom of the screen Connection events, rule alerts, upgrade prompts, quota notices.
Health endpoint GET /health (version, start time, uptime) Confirms which build is actually running.

4.2 Launcher and start-up failures

L-1 · "The SimFlyMinimums server did not become ready within 60 seconds." Read the dialog's log path, then the last lines of launcherYYYYMMDD.log. Common causes, in order of frequency: the server exe is missing from the install folder (incomplete install / antivirus quarantined it), the app folder is not writable, ?:\SFMPublished\SFMFiles is missing or blocked, or the process died instantly because a native dependency (SimConnect.dll, GDAL) could not load. Check the matching server-stderr-*.log — it almost always contains the real exception.

If the log shows the health check failing while the server process is clearly running, that is the port mismatch in L-4, not a crash — browse to http://localhost:5266 and continue. Reinstalling as administrator fixes most remaining cases.

L-2 · "Cannot find SimFlyMinimumsBlazorServer.exe in …" The install was interrupted or the folder was moved. Reinstall to the default path; do not copy files out of the install folder — the launcher looks for the server next to itself.

L-3 · Another program already uses the port / server starts then dies Only one server may own a simulator session. Close any second copy (dev instance from Visual Studio, an old publish folder, a service). The launcher already clears its own stale server processes before starting — but it will not touch a differently-installed copy. Then start one instance.

L-4 · The launcher's dialog says it never became ready, or it opens a URL that refuses to connect (localhost:7168) This is an address mismatch inside the product, not a failure of yours: the launcher probes and opens port

7168, while the server actually listens on

http://localhost:5266 (the Kestrel endpoint in appsettings.json, which takes precedence over the URL set in the server configuration). Confirm the server is healthy at http://localhost:5266/health, then simply browse to http://localhost:5266 — everything works from there. Closing the launcher's dialog is safe; the server keeps running. Please still report it (with the launcher log), because the shortcut should land on the right page by itself.

L-5 · Browser shows a blank page, a spinner, or _framework/*.wasm 404s The client bundle is served by the server: reload with Ctrl+F5; if it persists the install is incomplete (Free vs Premium builds differ in which pages are compiled in) — reinstall the package that matches your tier.

L-6 · "The fix you sent is not working" / an old version is clearly running A half-cached page is the top cause of phantom bugs in this app. Do a

hard refresh (Ctrl+F5), and where a feature prints a version marker, verify it: [CTL Build] … at startup, GET api/FlightControls/CtlVersion, [AircraftTO v10 arm-ground-line-align], and /health's version field. If the marker is missing, the browser is still running the previous build and nothing you test counts.

L-7 · Setup, chart or variable screens are empty everywhere Usually the navdata pack: CIFP-2038.db must sit in ?:\SFMPublished\SFMFiles\. The app *runs* without it, but airport/runway/procedure queries return nothing. (Same for eaip.dat and the eAIP key in §4.5, F-2.)

L-8 · A setting, key or feature is missing after you edited a file Environment variables (setx …) and appsettings.json changes are read

at server start. Close the browser, end the server (or log out/in after a machine-level setx), and relaunch from the icon. A terminal that was already open does not inherit newly set variables — restart it too.

C-1 · Pressing Start gives "Failed to connect to simulator." Work down this list — it covers nearly every case: Is the simulator loaded into an active flight (not in menus, not loading scenery)? SimConnect refuses a sim that has not finished starting. Did you pick the right simulator in Setup? Choosing xplane while flying MSFS sends the request to the UDP path (and vice-versa), so the attempt fails even though the sim is fine. Is the app's server running on the same PC as the simulator? For MSFS/P3D the default SimConnect transport is local; see §1.5 option C for the networked setup. Does the server log show Failed to connect to SimConnect (is MSFS running?)? Then the native SimConnect.dll did not load — reinstall, and let your antivirus exclude the install folder. MSFS in paused state or with a modal dialog open can accept the connection but send nothing. Unpause first.

C-2 · Data froze mid-flight and the button went red (Restart) That is the watchdog doing its job: no data for ~8 s (20 s during takeoff automation). Press Restart; expect "Restarting connection…" then "Connecting to simulator…". If the app was already trying to recover automatically you will have seen "Connection lost — restarting SimConnect…". Restarting is safe in flight: your monitored variables are re-sent automatically and the map re-centres on the first fresh sample.

C-3 · It reconnects, then goes stale again repeatedly The auto-restart has a 15-second cooldown on purpose; a repeating cycle means the simulator itself stopped streaming. Look for: a scenery/aircraft reload, the sim being paused, an in-sim installer or add-on updating, or a MSFS update that replaced the SimConnect layer. Restart the simulator (not just the app) as the next step.

C-4 · Auto-restart never fires during my automated takeoff Intentional: while takeoff automation is active, recovery is deferred so the app cannot re-init the link while it is moving the controls. It resumes immediately after the automation disengages. Note that on liftoff the automation disengages and the general watchdog may then reconnect once — that is known behaviour, not a fault.

C-5 · X-Plane shows nothing at all X-Plane's network data output is not enabled (§1.4) — nothing else can be wrong.

Wrong host. The default target is 192.168.1.103:49000; if your X-Plane PC has a different address, use POST /api/XPlane/connect with your ip/port (§1.4).

Wrong port in X-Plane's own settings — match it, standard 49000.

Firewall blocking UDP 49000 inbound on the X-Plane PC (§1.5). 5. Setup still says MSFS, so the SimConnect path was opened instead. Set xplane, press Stop then Start. 6. Some X-Plane values arrive as enumeration codes. A bare number where you expect a word is a missing label entry, not missing data (§4.4, D-5).

C-6 · Everything stops when I minimise the game/window or switch tabs Browsers throttle background tabs aggressively. The real-time link is already tuned for it (keep-alive 15 s, 60 s timeout, reconnect at 0/2/5/10 s) and the simulator session survives a dropped browser on purpose — but a heavily throttled tab can still lag. Fix: keep the app in its own window (browser menu → Move tab to new window), don't minimise it, and disable aggressive tab-freezing extensions. On a second device, keep the screen awake.

C-7 · My tablet / second PC cannot reach the app at all Use http://<server-ip>:5266 — the plain HTTP endpoint the server actually binds (not 7168, §1.3). http://<server-ip>:5266/health from that device: no answer = firewall or wrong IP, not an app problem. Confirm the firewall rule was created for the Private profile and that your network is actually classified as Private (a network silently reclassified as Public is a classic Windows surprise). Some routers block inter-device traffic ("AP isolation") — test with both devices on the same Wi-Fi band/SSID.

C-8 · The page loads but nothing moves, and the button still says Stop That is the other connection: browser ↔ server. Open F12 → Console and look for hub errors; reload the page. If several tabs of the app are open, close the extras — one tab is enough and multiple tabs multiply reconnect noise.

C-9 · After changing aircraft / reloading a flight, features misbehave (wrong aircraft name, CTL refuses, checklists for the wrong type) The simulator session and aircraft identity are captured at connect time. Press Stop, then Start. On MSFS 2024 this also re-enumerates the aircraft's input events, which is why an automation feature can silently do nothing after an aircraft swap.

C-10 · FSUIPC / Aircraft-bridge features are silent while the rest works The HTTP bridge is a separate process on a separate port. Check the URL in appsettings.json (FsuipcBridge:Url, default …:5555; AAO:BaseUrl, default …:43380), that the bridge is actually running on that machine, and that its port is allowed through that machine's firewall. These features degrade quietly by design — the telemetry link does not depend on them.

4.4 Data mismatch and wrong values

D-1 · Fields blank for a few seconds right after connecting / loading a flight Normal. Frames containing impossible values (0, NaN, empty) are

discarded rather than shown, so a field keeps its last honest value until a valid sample arrives.

D-2 · A monitored field never fills in at all Not a stale link (other fields move), so it is the subscription: the variable's unit does not match what the simulator expects, or the variable does not exist on this sim. Re-pick it on the Variables page for the currently selected simulator, then press Restart so the list is re-sent.

D-3 · A rule / phase checklist fires too early or too late This has happened for real before, and the cause was always the same: the rule compared a different variable than the one you see in the panel. The displayed Distance to airport is DisToAirport, and the rule aliases were aligned to it (DISTOAIRPORT, DISTTODESTNM). Check in order: Which variable name does the rule actually use? Double-click the field in the panel and compare. Does the rule have a Phase set? An empty phase must only alert; if a rule with no phase opens checklists, or a phase rule refuses to, that is a genuine bug worth reporting. 3. Is the value even reachable — right simulator, right unit, and no debounce (ConfirmSeconds) hiding it? 4. Custom rules live in the local database (FlightRule table); historical rows can carry an old variable name, which is exactly why aliases exist. Editing and re-saving the rule refreshes it.

D-4 · Two fields disagree with each other (e.g. a panel value vs the reports page) Same underlying value, different rounding or timing — samples are 500 ms apart and a display may be one frame behind. Compare values captured in the same second; the recorder row timestamp is the reliable reference.

D-5 · A status field shows a number instead of a word (gear, autopilot modes, switch positions) The simulator returns an enumeration code; the app translates it with a per-simulator lookup table (EnumsDataRefs). A missing row means you see the raw code — the data is correct, only the label is absent. Report the variable name and the code and it can be added.

D-6 · Dist to Airport does not match my FMS DTC Expected. It is the great-circle distance to the arrival airport reference point, computed by the server: a straight line, not the remaining routed distance and not distance-tothreshold. Use it for "how far is the field", never for "how much track is left".

D-7 · The runway rectangle / approach markers are in the wrong place or facing the wrong way Runway geometry comes from more than one table (RW10-style rows feed the picker; plain 10/28 rows with lengths feed the drawing), and international airports are only complete in the second. The dialog accepts RW10, 10 or RXRX10. If the rectangle points the wrong way, confirm you chose the same runway end you are lined up on: the app derives the approach side as the reciprocal of the chosen runway and places the 6 NM marker 180° from the take-off direction.

D-8 · CTL asked for a heading and the FCU shows something else The Aircraft path confirms success only when the FCU reads within one degree of the requested magnetic heading with both the dashed and managed flags off. True-vs-magnetic confusion is the usual user-side cause: the app converts the geometry's true bearing using the simulator's own variation, so comparing against a chart's magnetic track leaves exactly the variation difference you see — not an error. Search the server log for [CTL:HDG]: it prints Requested TRUE=… MAG=…; FCU=…, then FCU CONFIRMED or FAILED to confirm.

D-9 · The aircraft icon lags behind the instruments Both come from the same 2 Hz stream, so lag is usually map rendering on a busy machine. Zoom in one step, hide the airport layer, or switch map provider in Setup. Lag on the numbers means a genuinely stale link — check the button colour (§2.5).

D-10 · Replay or automation drifts off the centreline / rotates late Takeoff automation is explicitly experimental. Its debug line reports what it saw (liftoff IAS … GS … RWY … HDG … ERR … XT …m): ERR is heading error against the runway, XT the lateral offset. A large XT at liftoff means limited high-speed lateral control in the current version — do not use it on a short runway, and attach those numbers to any behaviour report.

4.5 Feature-specific problems

F-1 · Map is grey / tiles never load The included MapTiler map is not available right now (the app shows a notice with Retry): flight data, checklists and the preventive lights keep working. To use Azure Maps instead, in Setup switch to

Azure Maps and save that key, then restart the server — keys are read at start-up. The provider choice is remembered per browser, so a second device needs its own setting and a reload.

F-2 · European (eAIP) charts empty or "not available" Three separate requirements: eaip.dat installed, the machine-level key EAIP_DB_KEY present, and the server restarted afterwards. For countries marked pending, the app deliberately shows the official site plus navigation instructions instead of a PDF — a licensing limitation, not a failed download.

F-3 · SimBrief Generate/Load does nothing SimBrief:ApiKey and SimBrief:UserId must be set in the server's appsettings.json, then the server restarted. The callback page lives on the vendor's site, so a blocked internet connection fails here too.

F-4 · OpenSky search returns nothing or an error "Configure OPENSKY_CLIENT_ID and OPENSKY_CLIENT_SECRET on the server" → credentials missing (they must never be put in the browser). An arrivals 404 is shown as an empty result, not a crash — widen the UTC window (max two days, within the last 30).

HTTP 429 means quota: the app reports it and deliberately does

not hammer retries. Wait. Both Setup airports are required; changing Setup clears the previous list on purpose so you cannot import a track for the wrong route.

F-5 · FR24 search fails FR24_API_TOKEN must be set as an environment variable on the server machine (restart after setting). Free/Trial cap FR24 features and Replicate is restricted by aircraft type.

F-6 · ATC capture does not start AzureSpeech:Key and Region must be set in appsettings.json. The feature is

Windows-only (it uses system-audio loopback) and must listen on the device that actually plays the simulator sound. With no key, the start call simply returns false.

F-7 · Nothing is spoken anywhere (rules, First Officer, missed approach) Voices come from the browser, not the app. Check the tab is not muted and that Windows has a voice installed for the language. For debugging, run ttsTest() in the F12 console — it lists every available voice and speaks a sample.

F-8 · Missed-approach text missing or slow The text is read from the

chart currently selected in the app; selecting it also pre-warms the cache, so the first go-around on a fresh chart needs an AI call (and an OPENAI_API_KEY / GEMINI_API_KEY), while repeats are served from ChartCache.db in milliseconds.

F-9 · CTL refuses to move the FCU It requires all of: MobiFlight runtime connected, valid FCU outputs, recent telemetry, airborne, AP1 or AP2 engaged. Lost telemetry or a disengaged autopilot cancels any pending command. Read the immediate rejection message first, then [CTL:HDG] in the server log.

F-10 · Flight Reports is empty The recorder runs on every tier, so first check that the simulator was connected during the flight. On Free and Trial only the last three flights are shown.

F-11 · Licence or trial surprises Paid but still locked → reload the page so the client re-reads the signed token. One feature says "limit reached" but others work → normal: trial caps are per feature. Offline too long → reconnect once and relaunch; grace is limited. Changed hardware → a re-bind must be requested through support. Tier switcher missing → it is compiled out of released builds on purpose.

F-12 · "…max 800 — draw a smaller rectangle" Not an error: a navaid selection that large would silently truncate, so the app refuses and asks for a smaller box.

F-13 · A control does nothing in MSFS 2024 but worked in 2020 MSFS 2024 can accept an input event the session never enumerated and silently ignore it. The app enumerates events on connect, but after an aircraft change press

Stop → Start (or use Enumerate Input Events on the MobiFlight page) before calling it broken.

4.6 Performance and stability

Symptom Why What to do
Variables catalogue slow to open ~4 600 rows for X-Plane is one long fetch Use the filter box; the wait happens once per page load.
Map heavy near a big airport Airports + procedures + radar layers at once Hide the airport layer, switch radar off, or raise the minimum runway length.
First chart of an airport is slow The PDF is fetched/automated on demand Select the chart early — selection also pre-warms OCR.
Brief stutter right after Start Startup work: enumerate input events, load rules, load checklists Normal, about a second.
Two machines both show data Working as designed — the server owns the simulator session Keep one browser tab per device to reduce reconnect noise.
Recording seems coarser than the display The recorder samples at 1 Hz; telemetry is 2 Hz Expected — reports are second-resolution.

4.7 Quick FAQ

Do I need internet? Only for map tiles, online charts, SimBrief, FR24/OpenSky, AI and weather. Telemetry, checklists, rules and recording all work offline (map imagery still needs its key and tiles).

Can I run the app on a tablet and fly from the PC? Yes — §1.5 option B. The simulator session stays on the PC; the tablet is only a window onto it.

Must the browser stay open? Keep it open, not necessarily focused. Closing it removes the interface but does not tear down the simulator link — press Stop if you want a real disconnect.

Why does the runway rectangle look enormous? Deliberate: a real runway is ~45 m wide, so it is drawn about

300 m wide to stay visible at normal airport zoom.

Can I add my own panel images? Yes — drop PNGs in ?:\SFMPublished\SFMFiles\Panels\<aircraft>\.

Why does a rule work in MSFS but not in X-Plane? Variable names and units differ per simulator. Recreate the rule by double-clicking the field while connected to that simulator.

Does the app modify my simulator files? No. It reads telemetry and sends only the control commands you trigger (heading, CTL, replay, takeoff assistance).

Is this a legal navigation source? No. It is a training and situational-awareness companion — always fly the current official charts and your simulator's own avionics.

What is "Local" vs "Remote" really about? Where the browser sits, not where the simulator sits. It gates features that need hardware attached to that browser (joystick-based live recording). Choosing Local on a tablet offers controls that cannot see your hardware; choosing Remote on the sim PC hides them.

4.8 Reporting a problem (what makes a fix fast)

What you did, what happened, and whether it ever worked.

Which connection you think failed: does the page load? does the button say Start, Stop, or red Restart? (§4.1)

The browser console around the failure (F12 → copy, or Save as HTML).

The logs: launcher-YYYYMMDD.log plus the newest server-stdout- * / server-stderr-* from %LocalAppData%\SimFlyMinimums\logs\.

Your environment: simulator + exact aircraft/livery name, the version from /health or the Upgrade page, your tier, single-PC or two-PC layout, and any version marker the feature prints ([CTL Build] …, [AircraftTO …]).

For data issues: the variable name, the value shown by the app, the value shown by your instrument, and the timestamp.


Appendix A — ports, paths and endpoints

Item Value
App URL (this build) http://<host>:5266 — HTTP, bound to all interfaces, so also your LAN address
Health check GET /health → status, version, start time, uptime
X-Plane target (default) 192.168.1.103:49000 UDP — change with POST /api/XPlane/connect
FSUIPC bridge (default) http://192.168.1.103:5555 (FsuipcBridge:Url)
Aircraft / AAO service (default) http://192.168.1.103:43380 (AAO:BaseUrl)
Remote SimConnect (PC↔PC) TCP 500 — configured in the sim's SimConnect.xml + the app's SimConnect.cfg
Program folder ?:\Program Files\SimFlyMinimums\
Data folder ?:\SFMPublished\SFMFiles\ — CIFP-2038.db, eaip.dat, eaip_cache.db, ChartCache.db, Panels\
Logs %LocalAppData%\SimFlyMinimums\logs\
Other ports you may see mentioned 5261/7161 (set in the server configuration, superseded by appsettings.json) and 7168 (launcher + SkyVector extension default) — see §4.2 L-4

Appendix B — cheat sheet

Two connections. A live page does not mean a live simulator — trust the Start / Stop / red Restart button.

Simulator first, then Start. Monitored variables are sent at connect time; press Restart after changing them.

Ctrl+F5 before you report anything as "still broken".

Double-click a value to build a rule on exactly that variable — it prevents the most common class of bug.

Empty Phase = alert only. A filled Phase is what opens a checklist.

Local vs Remote describes where the browser is, not where the simulator is. Key and appsettings.json changes need a server restart; so does a new setx variable. http://<host>:5266/health plus the F12 console answers most questions in under a minute.


SimFlyMinimums — Flight Simulation Companion. Not for real-world navigation: always verify against current official publications and your simulator's own avionics.