Troubleshooting¶
Common issues with the X-Plane plugin. Work through the relevant
section in order; X-Plane's Log.txt (in the sim root) is the
canonical source of truth — search it for FlyOnSpeed:.
Plugin doesn't appear in Plugin Admin¶
X-Plane records plugin load failures in Log.txt. Open it and
search for AOA-Tone-FlyOnSpeed. Common causes:
- Wrong directory layout. The
.xplmust sit inside a per-arch subdirectory (mac_x64,lin_x64,win_x64), not directly inAOA-Tone-FlyOnSpeed/. See Install for the layout. - Architecture mismatch. A
mac_x64.xplwon't load on Linux. Pull the matching per-platform asset from the release page. - X-Plane version too old. The plugin compiles against
XPLM400(X-Plane 12.0+). X-Plane 11 fails to resolve the plugin's imported symbols.
No sound¶
In rough order of likelihood:
- IAS below the mute threshold. The plugin mutes audio under
iMuteAudioUnderIASknots (default 25). Sitting on the runway produces silence. Take off, or set the threshold to0to disable the gate. audioEnabledis off. Open Plugins → Fly On Speed → Show and check the Sound: On / Sound: Off button at the top of the window. Click to toggle.- AOA below LDmax. The plugin is silent below
fLDMAXAOAby design. Slow down past LDmax or, on the ground, lower the threshold temporarily to test. - Master volume at zero. Check
iMasterVolumePctin the audio control window. - X-Plane sound output muted. Check X-Plane → Settings → Sound to confirm master sound is unmuted and routed where you expect.
- OpenAL init failed.
Log.txtrecords OpenAL device-open failures withFlyOnSpeed: Failed to open deviceand context failures withFlyOnSpeed: Failed to create context. On Linux, installlibopenal1:sudo apt-get install libopenal1. On macOS the system framework is always present. - Sim is paused or aircraft has crashed. The plugin gates audio
on
sim/time/pausedandsim/flightmodel2/misc/has_crashed— both produce silence intentionally.
Indexer is gray / blank¶
The indexer renders X-Plane datarefs through the M5 firmware. A gray window usually means no fresh data:
- AOA dataref unbound.
Log.txtreportsFlyOnSpeed: Failed to find AOA DataRefifsim/flightmodel/position/alphaisn't resolvable. This shouldn't happen on stock X-Plane 12 — if it does, an aircraft model is overriding core datarefs in a way that breaks them. - Sim paused. The indexer doesn't refresh while paused; that's intentional, matching the firmware's "no fresh frames" behavior.
- Indexer init failed.
Log.txtreportsFlyOnSpeed: M5 indexer InstallPanelAndRunSetup failedorFlyOnSpeed: M5 indexer CreateXPlaneWindow failed. Most common cause: SDL2 not found at runtime on a build that wasn't statically linked.
M5 not detected¶
See the Tethering page for the full rundown. Quick checks:
- Click Plugins → Fly On Speed → Serial output → Refresh ports after plugging in the M5.
- Confirm the M5 is enumerating at the OS level (
ls /dev/cu.*on macOS,dmesg | tailon Linux, Device Manager on Windows). - Confirm the M5 is running
OnSpeed-M5-Displayfirmware, not stock M5 demo software.
Indexer in the wrong place after monitor change¶
The plugin saves the indexer's last position per-aircraft and restores it during X-Plane's "Preparing world" boot phase. If a monitor that was attached when you saved isn't there at the next launch — or if the .prf was hand-edited with bad coordinates — the window can end up off-screen.
Two recoveries:
- Soft fix (in-sim). Open the audio control window (Plugins → Fly On Speed → Show) and click Indexer: Show/Hide twice. The first click hides; the second triggers a fresh Show which goes through the geometry-clamp pass and forces the window back on-screen if the saved coords are crazy. The plugin checks the live X-Plane desktop bounds and clamps so at least 80 boxels of the window stay visible.
- Hard fix (edit the .prf). Quit X-Plane. Open the per-aircraft
.prf(path documented in Per-Aircraft Settings). SetindexerFloatLeft/indexerFloatTopto something sensible for your screen (e.g. 100 / 600), setindexerPoppedOut = 0to force back into the X-Plane main window. Relaunch.
The plugin also rejects obviously-bad coords on save — anything beyond ±50000 px/boxels is treated as a transient SDK glitch and not written — so this should be an edge case. If you see it happen reliably, please file an issue with the .prf attached.
Settings not persisting¶
The plugin writes the per-aircraft .prf on every successful Save
and on XPluginStop. If your edits don't survive a sim restart:
- Save was rejected. Check the audio control window's status
line for a validation error. Any field marked
!!failed validation; nothing was applied or written. - No aircraft loaded yet.
XPLMGetNthAircraftModelreturns an empty string until X-Plane brings the user aircraft up. The plugin defersOnAircraftLoadedto the first flight-loop tick, but if the sim crashes before that tick fires, no.prfwrite happens. Restart X-Plane and let it reach the runway before closing. Output/preferences/not writable. Confirm the directory exists and isn't read-only.Log.txtrecordsFlyOnSpeed: SaveSettings: could not open <path> for writing.
You can edit the .prf file directly with any text editor while
X-Plane is closed. The next launch picks up the new values for
that aircraft.
Tones sound wrong for my aircraft¶
The compiled-in defaults are RV-class generic. Edit the four AOA setpoints in the audio control window to match your airframe.
If you have calibrated setpoints from a real OnSpeed installation, remember the convention difference: the firmware stores body angle, the plugin reads X-Plane's wing AOA. Apply the wing-incidence offset before pasting numbers across. See How OnSpeed Measures AOA for the relationship.
Auto-derivation from X-Plane's per-aircraft datarefs is tracked in #392.