Chapter 1About this manual
This manual covers FFB-Bridge, a userspace bridge that drives the Microsoft Sidewinder Force Feedback 2 joystick from Microsoft Flight Simulator 2024 and X-Plane 11 / 12 on Windows 10+ and modern Linux. It is the single-file edition of the per-page manual at ffb-bridge.com/docs — same content, laid out for reading end to end and for printing to PDF.
The OS chips Windows,
Linux, and
Both mark paragraphs that
apply to only one platform. Menus and buttons are in
bold; filenames and shortcuts are in
code.
Chapter 2Install
2.1 Windows installer
After signing up on the home page, click the Windows link in
the emailed download. Save FfbBridge-Setup-x64.exe
and double-click it. On first launch SmartScreen warns
“Unrecognised app” — click More info,
then Run anyway. The installer is unsigned
until 1.0.
The Inno Setup wizard installs into
%LOCALAPPDATA%\Programs\FfbBridge by default.
No administrator permission required — this is a per-user
install. A Start Menu shortcut lands in the FFB-Bridge group.
To uninstall, open Apps & features,
find FFB-Bridge, and choose Uninstall. Your
profiles under %APPDATA%\ffb-bridge are kept
for a later reinstall; remove that folder for a clean slate.
2.2 Linux AppImage
Save the AppImage from the emailed link, make it executable, and register menu entries:
chmod +x FfbBridge-x86_64.AppImage
mkdir -p ~/Applications
mv FfbBridge-x86_64.AppImage ~/Applications/
~/Applications/FfbBridge-x86_64.AppImage --install
The --install flag writes the .desktop
file and icons into XDG directories so FFB-Bridge shows up
in your application menu. Uninstall with
--uninstall.
2.3 udev rule (Linux)
So the bridge can open the stick without a polkit prompt on
every launch, install the following udev rule. The
Doctor page has a one-click installer that
uses pkexec to write it; you can also install
by hand:
# /etc/udev/rules.d/99-ffb-bridge.rules
SUBSYSTEM=="input", ATTRS{idVendor}=="045e", ATTRS{idProduct}=="001b", TAG+="uaccess"
On NixOS, add it to configuration.nix under
services.udev.extraRules, then
sudo nixos-rebuild switch and replug the stick.
Chapter 3First launch
First-launch flow is three modals back-to-back: a physical-hazard Safety acknowledgement, then the Welcome tour, then the Dashboard. The safety modal blocks dismissal until you tick the “I understand” checkbox; Welcome can be skipped and replayed later from the Help page.
The Dashboard opens with the device detected and the arm toggle off. Forces do not reach the stick until you explicitly arm. The 32-pixel telemetry strip along the top of the content area shows IAS, G, Mach, pitch/roll force output, data age, and tick rate; the master arm state lives as a coloured pill in the bottom-left of the sidebar.
Click the arm toggle (top-right) or press Space
to arm. The toggle has three states: disarmed (grey),
Ready to engage (soft blue pulse), armed (solid blue with a
lightning glyph).
Safety. The first arm snaps the stick to the trimmed centre position. Make sure nothing — hands, cables, the dog — is resting on or against the stick when you arm.
Closing the window (X button) hides to the tray; the bridge keeps running. Use the tray menu to arm / disarm / show / quit. On GNOME Wayland there is no tray — the window hides silently and you'll need to use Alt+Tab or the desktop menu to get it back.
Chapter 4Connecting MSFS 2024
MSFS talks to FFB-Bridge over SimConnect TCP. On Windows this works out of the box; on Linux under Proton the default port (500) can't be bound and a one-click Doctor fix adds a parallel unprivileged port.
4.1 Where SimConnect.xml lives
The file's location depends on the MSFS install source:
- Windows Steam
%APPDATA%\Microsoft Flight Simulator 2024\SimConnect.xml - Windows Store / Xbox
%LOCALAPPDATA%\Packages\Microsoft.Limitless_8wekyb3d8bbwe\LocalCache\SimConnect.xml - Linux Steam + Proton
~/.steam/steam/steamapps/compatdata/2537590/pfx/drive_c/users/steamuser/AppData/Roaming/Microsoft Flight Simulator 2024/SimConnect.xml
FFB-Bridge detects the correct path automatically. Override
with FFB_BRIDGE_MSFS_CONFIG or
FFB_BRIDGE_MSFS_PREFIX if you run MSFS from a
non-standard location.
4.2 Doctor's one-click fix
Open Doctor. The SimConnect config row shows the detected XML path and the port the bridge is targeting. Three outcomes:
- Green — matching entry found, nothing to do.
- Amber Use port :X — entry at a different port; the button adopts it.
- Red Fix… — no usable entry; the dialog shows exactly what it will add.
All fix operations are additive — existing entries are never overwritten. If the XML is unparseable, a timestamped backup is taken first.
Chapter 5Connecting X-Plane 11 / 12
Zero-config. X-Plane accepts UDP RREF subscribes on
127.0.0.1:49000 by default; FFB-Bridge
subscribes on launch and data flows. If X-Plane is running
when you start the bridge, the Sim chip goes green within
milliseconds.
A 3-second staleness watchdog covers the UDP no-disconnect problem: if no datarefs arrive for three seconds, the Sim chip turns red. Loading a new flight re-establishes automatically.
Firewalls rarely interfere on loopback, but if Doctor's X-Plane probe is red and X-Plane is genuinely running, check for a firewall blocking UDP 49000. See chapter 14 for the recovery flow.
Chapter 6Dashboard
Left panel: live telemetry. Radial gauges for airspeed, altitude and G-load; BiBars for elevator and aileron deflection; numeric readouts for pitch, bank and AoA. The UI refreshes at ~20 Hz — a decimated view of the 50 Hz control loop.
Centre: force-output meters. Pitch and roll forces as fractions of full authority, trim markers showing the shifted centre. Small badges below the bars light up when individual effects are contributing.
Right: arm toggle, connection chips (Device, Sim, Profile), and a strip of the last few log lines. The arm toggle refuses to arm if no sim is connected and no device is open.
Chapter 7Tuning
Every slider change applies on the next 50 Hz tick; you can fly with the Tuning page pinned on a second monitor and adjust effects while they're happening.
7.1 Master gain
A single multiplier applied after all effects, displayed as a percentage from 0% to 100%. 100% is the designed level (and the default); lower values attenuate every dynamic output at once. There's no “boost” above 100% — that ceiling is the one the per-effect gain sliders work up to. Mostly you leave this at 100% and tune the per-effect sliders; it exists for quick “quieter overall” trims without touching the profile values underneath.
7.2 Slider groups
Top to bottom: Centring spring (base, G-gain, min/max clamps, deadband) · Aerodynamic loading (pitch gain, roll gain) · Stick feel (rate damping, control-edge bonus) · Ground effects (runway rumble, touchdown thump, gear bumps, brake shudder) · Aero buffets (stall, overspeed, Mach, spoiler, turbulence) · Powerplant (engine rumble, reverse rumble) · One-shots (gear deploy, flap step) · Autopilot (back-drive gain, rate limit). See chapter 12 for the full reference.
7.3 Dirty indicators
Amber dots next to each slider value appear when the slider differs from the loaded profile. A matching amber dot on the profile picker summarises “this profile has unsaved changes”.
7.4 Saving
Save (Ctrl+S) overwrites the active profile. Save as… (Ctrl+Shift+S) opens a dialog to save under a new name. Starter presets are read-only and only Save-as is enabled for them.
Chapter 8Profiles
Profiles are YAML files under %APPDATA%\ffb-bridge\profiles\
(Windows) or ~/.config/ffb-bridge/profiles/
(Linux, honouring $XDG_CONFIG_HOME). Each file
is one profile. Copy them between machines or share them
with others by emailing the file.
Actions: Load, Duplicate, Rename, Delete. Starter presets are read-only; use Duplicate to get an editable copy.
Switching profiles applies on the next 50 Hz tick without disarming. The profile picker on Tuning shows an amber dot for unsaved changes — save before loading another profile or you'll discard the changes.
Chapter 9Diagnostics
Four metric cards at the top: Control-loop rate (target 50 Hz), Pipeline latency (µs), Effects active (count), Reassertions (counter). Each has a 60 s sparkline.
Event log fills the lower half of the page. Level colours: INF / DBG neutral, WRN amber, ERR / FTL red. About 2,000 lines of rolling scroll-back; filter by substring with the bar at the top of the log.
The Export support bundle button produces a single ZIP for feedback reports. See chapter 15 for the complete contents list.
Chapter 10Doctor
Checks: Device, udev rule (Linux), SimConnect config, SimConnect reachability, X-Plane reachability, Runtime health, Crash log. Row status dots are green / amber / red / grey (not applicable).
Where a fix is obvious, the row offers an inline action — Install udev rule, Use port :X, Fix…. The Fix dialog shows exactly what will change before it's applied, and never overwrites existing entries.
Linux actions that write system paths route through
pkexec. Exit codes: 0 = success, 126 = user
dismissed the prompt, 127 = auth failure / no polkit agent.
Chapter 11Mock SimConnect
The bridge has three input sources: Live (real sim), Mock (UI-driven sliders), Idle (no data). Mock is a first-class peer — arm, dispatch, reassertion, and stale-watchdog all run identically.
Use Mock to feel individual effects in isolation, tune profiles without flying, or demo the bridge without a sim installed. Four one-click scenario presets snap every slider to plausible values for Taxi / Takeoff roll / Cruise / Landing flare.
Live and Mock are mutually exclusive. A detected real sim locks Mock out with an explanatory banner.
Chapter 12Force effects reference
The thirteen effects shipped with v1.0.0-beta.2:
- Centring spring — stiffens with G-load, deadband scales with airspeed, centre shifts with trim.
- Airspeed-loaded pitch force — constant pitch-axis force scaled by airspeed² × elevator offset.
- Airspeed-loaded roll force — same model on the roll axis, independently tuned.
- Rate damping — opposing force proportional to body-axis rotation rates (p, q); viscous damping.
- Autopilot back-drive — spring centre tracks AP commanded deflection, rate-limited.
- Runway rumble — continuous periodic force scaled by ground speed and surface type (grass 1.5–1.9×, ice 0.3–0.5×).
- Touchdown thump — single impulse on on-ground transition, amplitude scaled by vertical speed.
- Brake shudder — low-frequency rumble proportional to brake deflection, gated on-ground.
- Gear bumps — discrete impulses during taxi under ~40 kt.
- Aero buffets — five sub-effects (stall, overspeed, Mach, spoiler, turbulence) sharing a buffet generator.
- Engine rumble — continuous periodic force scaled by per-engine RPM × combustion flag.
- Reverse-thrust rumble — rollout rumble when reverse is engaged, scaled by ground speed.
- Mechanical one-shots — gear-deploy and flap-step shudders on any transition, both directions.
All thirteen sum into two outputs (pitch + roll force plus spring parameters). Master gain is applied last. The Dashboard's effect-active badges below the force bars show which effects are contributing at any instant.
Chapter 13Tuning guide
Work through the stages in order, one at a time, saving the profile after each stage so you can fall back.
- Master gain. Start at 100%. Fly cruise, look for motor saturation; if the stick feels harsh at full deflection, drop to 80% and repeat. There's no boost above 100% — that's the designed ceiling.
- Centring spring. Release the stick at cruise: snappy vs sluggish. Then pull a 2 G turn: does it firm up?
- Aerodynamic loading. Push the stick without trimming; should feel like air pushing back. Verify across the speed envelope.
- Ground effects. Taxi on paved vs grass. Brake. Plant a firm arrival.
- Buffets. Power-off stall for the stall buffet; deploy spoilers for the spoiler buffet.
- Mechanical one-shots. Retract / extend gear and flaps.
- Powerplant. Idle vs takeoff power — should feel distinctly different.
- Rate damping. If the stick rings back to centre, raise it. Too much and the stick feels dead.
Aircraft-type patterns: light singles want firm centring and moderate loading; aerobatic wants soft centring and low damping; heavy jets want heavy damping and strong AP back-drive; bush / STOL wants low centring base but high G-gain.
Chapter 14Troubleshooting
14.1 Stick doesn't move
Confirm in order: (1) arm toggle is ON; (2) Device chip is green; (3) Sim chip is green. Any red chip points to the corresponding Doctor row.
14.2 MSFS connects but forces feel wrong
Load the Cessna 172 starter as a known-good baseline. Most “wrong” feels come from a profile that was tuned for a different aircraft. Third-party aircraft occasionally skip implementing standard SimVars — the bridge tolerates that (missing vars default to zero), but effects that depend on them will go quiet.
14.3 Tray icon doesn't appear (Linux)
Some desktops don't ship a tray host out of the box — GNOME Wayland is the big one. The bridge detects this and shows a banner explaining that close will quit the app directly instead of hiding. Install AppIndicator Support on GNOME to get a tray back; KDE, Xfce, Cinnamon, MATE, Budgie work out of the box.
14.4 Crash on launch
Next launch shows a crash-report dialog with the stack trace
and an Open feedback form button that
pre-attaches the crash log. If the app crashes before the
dialog appears, pull the log by hand from
%LOCALAPPDATA%\ffb-bridge\crashes\ (Windows) or
~/.local/share/ffb-bridge/crashes/ (Linux).
Chapter 15Support bundles
A support bundle is a single ZIP produced by Diagnostics → Export support bundle. The ZIP contains, and only contains:
sysinfo.txt— OS, kernel, distro, CPU, RAM, .NET version, locale.session.log— full event log for the current session.last-crash.log— crash log if one exists.doctor.json— last Doctor scan in machine-readable form.tunables.yaml— the active profile at export time.simconnect-config.xml— MSFS's config, passwords stripped (MSFS sessions only).
Limits: 60 MB compressed total, 5 MB per entry, 30 entries max, 20 MB uncompressed total, UTF-8 text only (plus the XML). A typical bundle is under a megabyte.
The bundle never leaves your machine automatically — you choose when to attach it to a feedback report, and whether to send it.
Chapter 16Licence and disclaimer
FFB-Bridge is free software offered as-is with no warranty. Use at your own risk — the bridge drives physical hardware and bugs can produce unexpected forces. Treat every arm as a “hands clear” moment.
This is a solo project, independent of Microsoft and Laminar Research. “Microsoft Flight Simulator”, “SimConnect”, “Sidewinder”, and “X-Plane” are trademarks of their respective owners; they appear here for the sole purpose of identifying compatible products. Nothing on this page implies endorsement by either company.
The full FAQ, privacy policy, and terms live at ffb-bridge.com/#faq and ffb-bridge.com/privacy.
End of manual. Feedback on any section — text, figures, or tuning advice that didn't help you — ffb-bridge.com/feedback.