FlightGear flight simulator for Sailfish OS. This is a full port of FlightGear 2020.3.19 — not a remote viewer, not a streaming client. The simulator runs on the device. ### Why this was hard Sailfish OS has no desktop OpenGL. The GPU only speaks OpenGL ES through libhybris and the proprietary vendor blob. FlightGear and OpenSceneGraph need desktop GL including the fixed-function pipeline — glBegin, matrix stack, display lists. The way around it is Mesa Zink, which translates OpenGL to Vulkan, and Vulkan is reachable through libhybris. On the Jolla Phone (2026) this yields: GL_VERSION: 3.2 (Compatibility Profile) Mesa 24.2.8 GL_RENDERER: zink Vulkan 1.3(Mali-G610 MC2 (ARM_PROPRIETARY)) That is enough for FlightGear's classic render pipeline. ### Two packages fgfs-sailfish (about 23 MB) contains the simulator, OpenSceneGraph, SimGear, PLIB and the Mesa/Zink graphics stack under /opt. Nothing in /usr is touched — the Mesa libraries are never placed ahead of hybris' EGL, so the rest of the system is unaffected. harbour-fgview is the interface: it displays the rendered frames and provides the controls. Install both. The base data (FGData, about 1.7 GB) is downloaded on first start with aria2 using eight parallel connections; the download can be interrupted and resumed. It lands in your home directory, not in /opt. Total disk space needed: roughly 5 GB during installation, 3 GB afterwards. ### Controls - Tilt steering for ailerons and elevator, with a calibration button that takes the current position as neutral — so you can fly lying down as well - Throttle lever on the left, self-centering rudder at the bottom - Buttons for gear, flaps and brake - USB OTG joysticks and Bluetooth gamepads work through FlightGear's own event input layer ### What to expect Frame rate is currently around 5 fps at 1024x768. The bottleneck is the synchronous readback from the framebuffer, which forces a pipeline flush on a tile-based GPU. This is the next thing being worked on — PBO ping-pong and a smaller render resolution should improve it considerably. The first start takes a minute or two while scenery and flight model are loaded. Tested on Jolla Phone (2026), jp2601, Mali-G610 MC2, SFOS 5.2. Reports from other devices are welcome — please include device model and SFOS version. Adreno devices have working Vulkan but the stack is untested there. ### Known limitations The Mali-G610 does not support shaderClipDistance. Without gl_ClipDistance, Mesa caps the compatibility profile at GL 3.2 even though the hardware can do more — tessellation, compute shaders and DSA are available as extensions, just not through the version number. ALS and the new compositor are therefore unavailable; you would not want them on a tiler anyway. No wireframe mode (fillModeNonSolid missing). This is alpha software. ### Sources Application: https://github.com/smatkovi/harbour-fgview Graphics stack patches — Mesa/Zink, libglvnd, an EGL backend for OpenSceneGraph, GLX-to-EGL conversions in SimGear and PLIB, plus the build script for the runtime package: https://github.com/smatkovi/fgfs-sailfish The README there documents every change and why it was necessary. The Mesa patch in particular is an upstream candidate: the dmabuf check before Zink initialisation is wrong on any device without dmabuf, not just this one. FlightGear itself: https://www.flightgear.org (GPLv2+) This is an unofficial port, not affiliated with the FlightGear project. ### Support this work This port was built in the author's free time. If you find it useful: https://www.paypal.me/smatkovi https://liberapay.com/smatkovi
| Attachment | Size | Date |
|---|---|---|
| 22.39 MB | 24/08/2026 - 18:40 | |
| 73.49 KB | 24/08/2026 - 18:40 | |
| 75.92 KB | 24/08/2026 - 19:51 | |
| 78.75 KB | 24/08/2026 - 20:30 | |
| 82.23 KB | 24/08/2026 - 21:27 | |
| 22.39 MB | 24/08/2026 - 21:27 |
- Erste Fassung: FlightGear, OSG, SimGear, PLIB, Mesa-Zink, glvnd
Recent comments