This script is designed to help you manage and optimize Falcon BMS on Linux.
Zenity menus are used for a GUI experience with a fallback to terminal-based menus where Zenity is unavailable.
Command line arguments are available for quickly launching functions from the terminal.
Configuration is saved in $XDG_CONFIG_HOME/bms-helper/
Preflight Check
- Runs a series of system optimization checks and offers to fix any issues
- Checks that vm.max_map_count is set to at least 16777216
- This sets the maxmimum number of "memory map areas" a process can have. While most applications need less than a thousand maps, Falcon BMS requires access to more
- Checks that the hard open file descriptors limit is set to at least 524288
- This limits the maximum number of open files on your system. On some Linux distributions, the default is set too low for Falcon BMS
- Checks that vm.max_map_count is set to at least 16777216
Install Falcon BMS
- Installs Falcon BMS and Falcon 4.0 (GoG installer)
Maintenance and Troubleshooting
-
Target a different Falcon BMS installation- Select a different wine prefix for the Helper to target in its operations
-
Open Wine prefix configuration- Runs winecfg in the game's Wine prefix
-
Open Wine controller configuration- Opens Wine's game controller configuration in the Wine prefix
-
Open Protontricks package manager- Opens the package manager GUI for the currently targeted Falcon BMS prefix
-
Install PowerShell into Wine prefix- Uses protontricks for the install workflow
-
Install OpenTrack for Windows- Downloads the latest
*-win32-setup.exefrom the OpenTrack GitHub releases page and runs it silently with/silentinside the currently targeted Wine prefix
- Downloads the latest
-
Display Helper and Falcon BMS directories- Show all the directories currently in use by both the Helper and Falcon BMS
-
Reset Helper configs- Delete the configs saved by the helper in $XDG_CONFIG_HOME/bms-helper/
From Source:
- Download it! https://github.com/benchmarksims/bms-helper/releases
- Extract it!
- Place
Falcon BMS_4.38.1_Full_Setup.exe,Falcon BMS_4.38.1_Full_Setup.nsisbinandsetup_falcon_4_2.0.0.1.exe(from GoG) in the bms-helper extracted folder - Run the
bms-helper.sh!
Dependencies: bash, coreutils, curl, polkit, wine, protontricks Archive Dependencies: cabextract, unzip Optional Dependencies: zenity (GUI), winetricks (custom-prefix launcher font/runtime fixes), python3 + python-evdev (MFD helper), gamemode, mangohud
These notes summarize the current launcher behavior reflected in the latest script changes.
- The generated per-prefix launcher now applies launcher UI compatibility fixes by default for .NET/WPF-based launchers running under Proton.
- One-time launcher runtime fixes can install
corefonts,tahoma, andgdiplusautomatically throughprotontrickswhen an app ID is known, or throughwinetricksfor custom prefixes. - Launches can now be wrapped with
gamemoderunandmangohudwithout modifying the generated script manually. PROTON_LOGis no longer forced on for every launch; it is now controlled through an environment toggle.- Proton fsync and esync can be disabled explicitly for troubleshooting without editing the launcher.
- The launcher can auto-start the bundled
tools/mfd-joystick.pyhelper when present and stop it again when Falcon BMS exits. - The launcher can also auto-start
opentrack.exewhen it is installed inside the Falcon BMS prefix underdrive_c/Program Files (x86), and it now does that only after Falcon's launcher or game process is already running. - The MFD helper can also be overridden with
BMS_MFD_JOYSTICK_SCRIPTif you keep the script in a different path. - When the launcher is regenerated or repaired, the helper also refreshes an existing
mfd-joystick.pycopy already placed besidebms-launcher.sh. - Proton management now includes a dedicated menu entry for Proton installs detected from Steam and common OS locations.
- Steam/OS-provided Proton installs can be selected for launch, but only helper-downloaded runners under the prefix are removable from the helper UI.
Launcher toggles
The generated launcher exports a set of environment variables you can override before starting Falcon BMS:
BMS_LAUNCHER_UI_FIXES=1|0: enable or disable the default WPF/launcher registry fixes.BMS_LAUNCHER_INSTALL_FONTS=1|0: allow the one-timecorefonts/tahoma/gdiplusinstall pass.BMS_LAUNCHER_FORCE_WINED3D=1|0: setPROTON_USE_WINED3Dfor the launcher path.BMS_USE_GAMEMODE=1|0: wrap the game/launcher process withgamemoderunwhen available.BMS_USE_MANGOHUD=1|0: wrap the game/launcher process withmangohudwhen available.BMS_PROTON_LOG=1|0: enable Proton logging only when you actually need it.BMS_USE_FSYNC=1|0: disable fsync by exportingPROTON_NO_FSYNC=1andWINEFSYNC=0when set to0.BMS_USE_ESYNC=1|0: disable esync by exportingPROTON_NO_ESYNC=1andWINEESYNC=0when set to0.BMS_AUTO_LAUNCH_OPENTRACK=1|0: auto-start OpenTrack from the Windows install inside the prefix when found underProgram Files (x86).BMS_OPENTRACK_DELAY=<seconds>: wait this many seconds after Falcon's launcher or game process is detected before starting OpenTrack. Defaults to3.BMS_MFD_JOYSTICK_SCRIPT=/path/to/mfd-joystick.py: point the launcher at a custom MFD helper script.BMS_MFD_GRAB_PHYSICAL=1|0: when the MFD helper runs, exclusively grab the physical MFD evdev devices so only the virtual replacements are visible to the game.BMS_PROTONTRICKS_APPID=<steam app id>: let the launcher useprotontricksfor one-time font/runtime setup on Steam-backed installs.
The launcher still supports --proton, --wine, and --auto to select the runner mode at launch time.
MFD helper
tools/mfd-joystick.py creates virtual joystick-style devices for supported Thrustmaster F-16 MFD panels so Falcon BMS can see a more compatible input layout.
- It is started automatically if the file exists either next to the launcher or in
tools/. - It requires
python3and the Pythonevdevpackage. - It exposes an internal
MFD_JOYSTICK_VERSIONvalue and prints that version on startup for tracking deployed copies. - Place the script in the falcon-bms master folder (the one created by wine / proton) along side
bms-launcher.sh - On most systems you will also need permissions for
uinputand access to the source input devices. - By default it exclusively grabs the physical MFD evdev nodes while it is running, which hides the source devices from Wine/Proton and leaves the virtual devices as the ones the game sees. Set
BMS_MFD_GRAB_PHYSICAL=0to disable that behavior. - When
mfd-joystick.pyis present besidebms-launcher.sh, the launcher now asks that Python file to set the WineSoftware\\Wine\\DirectInput\\Joysticksdisable entries for the original MFDs throughwine reg addbefore any Wine or Proton command is run.