Current release. FFB-Bridge v1.2.0 is live. These docs track the current app described by the release manifest. If a section reads stale, flag it via the feedback form.

Changelog

What changed in each public build. The current build is v1.2.0 — entries are most-recent first. Every release is also announced by email to subscribers. Older beta and RC labels below are preserved as historical release notes.

v1.2.0

A big release. Flight Check is a new guided way to confirm every force your stick makes is correct, and a long force-direction and trim-sign correctness arc is now closed. Direction, centering, and trim behave consistently across hardware and both simulators, and there is now a one-click way to prove it.

Flight Check (new)

  • Every force is its own test. Flight Check gives each effect, from centering and airspeed load to trim, the buffets, the ground effects, and the one-shots, its own Test button that drives only that effect as a steady held state, with an instruction telling you what you should feel and a Works or Doesn't vote. It runs on the bench with no simulator required.
  • Direction checks catch reversed axes. The pitch and roll checks push the stick a named direction so you can confirm it physically moves the right way. If it is backwards, Flight Check tells you exactly which toggle in Settings, Hardware to flip.
  • A results panel that tells you what to do next. Results are summarized with concrete recommendations and one-click jumps to the right setting, and a Fly the flight finale plays every effect in sequence with an animated aircraft and timeline so you can feel them all come together.

Force direction and trim

  • Live-MSFS trim direction fixed. Nose-up trim now settles the stick aft, where it was previously reversed in live MSFS. Confirmed on a MOZA AB9 in both MSFS and X-Plane.
  • One-shot axis-polarity reset. The direction and trim fixes made previous manual axis inversions redundant, so on first launch 1.2.0 backs up your hardware settings and clears stale inversions. If your hardware is genuinely wired in reverse, re-toggle once and it sticks. A real pitch/roll axis swap is preserved.
  • Per-axis polarity controls. Settings, Hardware now exposes all four polarity signs independently, invert pitch and roll force and invert pitch and roll centering, for hardware whose directed-force handedness differs from its spring-center handedness, or whose pitch is inverted on its own.

Hardware

  • MOZA AY210 FFB yoke is recognized (preliminary). The MOZA AY210 yoke base is now a recognized device on Windows and Linux. Windows drives it through DirectInput/PID, the backend the reporting user already had working. This is a preliminary addition: on Linux the bridge can open the base, but force actuation is not yet confirmed, so treat AY210 support as experimental for now.
  • MOZA setup reminder. The first time a MOZA base connects, a one-time dialog walks you through the MOZA Cockpit settings, Force-Feedback Mode set to DirectInput, Spring set to 0, and Hardware Trim off, so the base's own centre spring does not fight the bridge.

Thanks

This release was driven by users who dug in with us.

  • raffarb, who pinned the Logitech G940 trim inversion on Linux and tested the fixes.
  • MasterLooser, who reported reversed MOZA AB6 forces in X-Plane and confirmed the root cause with an in-code direction-swap test. That thread is the direct reason the per-axis polarity controls and the Flight Check guided diagnostic exist. Read the thread.
  • SimInvent, who reproduced the reversed-force behaviour on a DIY yoke and tested the diagnostic builds. The SimInvent FFB Yoke is a low-cost, build-it-yourself force-feedback yoke and a genuinely cool free project, take a look. See the community thread.
  • sa'ar, for the MOZA AY210 that prompted the preliminary support added this release.

v1.1.3

A hardware-correctness update for force direction, Linux G940 trim, pause/sim-exit cleanup, and MOZA AB9 validation on macOS. Thank you to Kristian for the polarity field report that led to the DirectInput standardization, and to Raphael for the G940 Linux reports and follow-up testing.

Polarity and hardware direction

  • DirectInput polarity is now the product standard. FFB-Bridge now treats DirectInput force direction as the canonical convention on Windows, Linux, macOS, raw HID/PID, and the internal test paths. This removes hidden device-specific direction flips and makes standards-compliant hardware behave consistently across backends.
  • Force polarity and spring-center polarity are separate. Directed forces such as aerodynamic load, software-blended offsets, one-shots, and periodics now stay in the directed-force domain, while trim and spring centers stay in their own axis-space domain. Existing hardware polarity controls remain the correction path when a local device still needs an install-level flip.

Logitech G940 on Linux

  • Static-spring trim now works on the Linux G940 path. The G940 Linux compatibility mode now renders frozen spring-center movement as a steady force, avoids cancellation with trim-relief force, and keeps the firmware spring centered at neutral. This preserves trim feel without repeatedly re-uploading spring conditions to driver stacks that step the motors on every update.

Pause and sim-exit cleanup

  • Stale dynamic effects are scrubbed harder. Pause, zero-force, and simulator-exit transitions now treat the quiet frame as a firmware boundary: dynamic slots are stopped, stale command state is cleared, and springs are replayed cleanly so engine, buffet, or other periodic effects do not restart after the sim has gone quiet.

MOZA AB9 and macOS

  • MOZA AB9 is validated on macOS. The macOS raw IOHID/PID backend now opens the AB9's PID-capable HID interface, uses the MOZA report layout, and has been bench-validated with the AB9 + MH16. Public AB9 support now covers the validated Windows, Linux, and macOS paths.
  • MOZA raw HID/PID work is safer and better scoped. Windows still defaults MOZA to DirectInput/PID, while the advanced raw HID/PID path now uses the AB9 report map discovered during validation. The claim remains scoped to the AB9 family, not arbitrary MOZA wheels, gamepads, or future bases.

v1.1.2

Release polish from the MOZA validation cycle: first-class MOZA AB9 + MH16 support, safer Logitech G940 handling on Windows and Linux, smoother steady-force output, aircraft profile auto-select fixes, richer support bundles, and shared direct-stick tests.

Hardware

  • MOZA AB9 + MH16 support. The MOZA AB9 FFB Base with MH16 flight stick is now in the supported-device registry for Windows and Linux. Both observed product IDs, 346E:1000 and 346E:1002, are treated as the AB9 family.
  • Linux G940 spring-safe mode. The Logitech G940 Linux path now avoids repeated spring-condition uploads after the initial centering spring is armed, preventing driver stacks that tickle the motors on every spring update from stepping during steady flight.
  • Windows G940 virtual PID detection. The Logitech G940 is also recognized when the Windows driver stack exposes it under the C2A8 virtualized product ID, keeping it on the supported-device path instead of the unlisted-device flow.

Feel and runtime

  • Optional steady-force smoothing. Settings → Hardware now includes Smooth steady forces, which interpolates steady pitch and roll loading between slower simulator telemetry ticks. It reduces stepping on strong sticks without changing rumble, buffets, one-shots, or profile values.

Profiles and support

  • Aircraft profile auto-select fixes. Auto-select now honors saved and default aircraft profiles more reliably, including legacy saved-profile files and stale binding keys, and stops carrying the previous aircraft's profile into an unknown aircraft when no match exists.
  • Hardware settings in support bundles. Support bundles now include hardware-settings.json with the active backend, smoothing, polarity, pitch/roll swap, and compatibility settings, so troubleshooting reports include the exact force-output context.

Interface and testing

  • Shared direct-stick test. Mock Sim and Settings now use the same direct constant-force test pad, so dragging the puck proves the real hardware output path instead of only moving mock sim inputs.
  • Settings and Mock Sim layout cleanup. The Hardware settings page and Mock Sim page were tightened so the direct stick test, backend choice, and hardware compatibility text fit without awkward scrolling in the validated desktop window size.

v1.1.1

Maintenance release on top of 1.1: a Linux SimConnect fix for MSFS under Proton, plus the build re-cut that ships the 1.1 feature set as a signed, three-platform release.

Fixed

  • Linux SimConnect privileged-port trap. MSFS under Proton ships its stock SimConnect entry on port 500, but Linux won't let a Proton process bind a privileged (<1024) port — so the health check could read “TCP on :500 enabled” and pass while no connection was ever possible. First-launch detection no longer adopts an unbindable port, the Support page's SimConnect config row now warns and steers you to install the parallel unprivileged entry, and the Fix dialog pre-fills the unprivileged default instead of re-installing the dead :500. Windows is unaffected — it binds :500 fine.

v1.1.0

The first feature release since 1.0. FFB-Bridge now runs on three operating systems and connects to three simulators, can drive force-feedback joysticks beyond the four validated sticks, models the way different control systems feel, ships several new effects, gains an app-wide high-contrast mode, and connects to a free community Profile Library you can publish to from inside the app. It is still free, and still local-first — no account, no telemetry.

Platforms and simulators

  • macOS (Apple Silicon). A signed and notarized DMG now ships for Apple Silicon (M1 and newer). The macOS build is scoped to X-Plane 12 with the Microsoft SideWinder Force Feedback 2; Windows and Linux remain the broad-coverage platforms.
  • MSFS 2020 alongside MSFS 2024. Both Microsoft Flight Simulator versions connect over SimConnect TCP. X-Plane 11 and 12 connect over UDP as before. The active sim is auto-detected at startup.

Hardware

  • Drive other force-feedback joysticks (experimental). The four validated sticks — SideWinder Force Feedback 2 (045E:001B), Logitech Flight System G940 (046D:C287), Force 3D Pro (046D:C286), and WingMan Force 3D (046D:C283) — are still plug-and-play. Beyond those, Settings → Hardware → Allow unlisted devices opts an eligible joystick-class device in with safe defaults, a live invert and axis-swap calibration, and crash-recovery as the safety net. Wheels, gamepads, and single-axis devices stay routed to the FFB Probe at ffb-probe.com.
  • Multi-device picker. With more than one supported stick attached, a picker lets you choose which one the bridge drives, and the choice is remembered.

Feel and effects

  • Control-system feel selector. A per-aircraft Manual / Hydraulic-boosted / Fly-by-wire choice at the top of the Tuning page's Stick feel group. Manual leaves the feel exactly as before; Hydraulic-boosted gentles the aerodynamic loading the way an artificial-feel system does; Fly-by-wire suppresses aerodynamic loading and the G-load stiffening, matching a spring-centred sidestick.
  • Stall stick-shaker. A sharp buzz gated on the sim's own stall warning, separate from the synthesised stall buffet. Enable it and set its amplitude on the Tuning page.
  • Nosewheel shimmy. A rapid side-to-side ground-roll vibration, tunable per aircraft.
  • Ground-acceleration pitch cue. A pitch-axis cue tied to acceleration during the ground roll.
  • Undercarriage-type rumble scaling. A per-aircraft Wheels / Skis / Floats choice that scales the continuous ground-roll rumbles.

Trim

  • Trim is now one switch. A single Enable trim toggle replaces the old pair of overlapping trim mechanics. With it on, trimming eases the held airspeed force and shifts where the stick settles; with it off, trim does nothing to the stick. The elevator is the headline control, with aileron strength under an Advanced disclosure. The legacy centre-only trim mode has been retired — “Enable trim” off now genuinely turns trim off.

Accessibility

  • Visual contrast. Settings → General → Visual contrast adds a High contrast mode that raises contrast app-wide — surfaces, text, borders, buttons, status lamps, and effect-group colours — tuned against WCAG 2 guidance. It changes appearance only; it does not change any force output.

Community and profile sharing

  • The Profile Library has shipped. Browse and download community profiles at ffb-bridge.com/profiles — no account needed to look or download.
  • Share to library, from the app. The Profiles page gains a globe Share action that hands a profile you made to the library with the form pre-filled; you sign in only at the moment you publish. Nothing is uploaded silently. Built-in starters can't be shared.
  • Community forum. A forum lives at ffb-bridge.com/community.
  • Portable profile format. Shared profiles carry identity and descriptive metadata in a forward-compatible envelope and migrate cleanly when imported into a newer app. Plain hand-copied profile files keep working.

Session automation

  • Optional auto-arm and auto-disarm. Settings → Session can arm when a supported device and a live sim are both ready, and disarm when the sim exits. Both are opt-in and default off.

v1.0.0

Stable 1.0 release: the RC branding is gone, the default aircraft profiles have been retuned, Mock Sim is rebuilt as a clear force-engine demo, and the raw HID/PID recovery paths are now proven through the MSFS-quit and rearm cases that drove the final validation work.

Release status

  • FFB-Bridge is now 1.0. The app, website, download emails, docs, and release manifest now point at v1.0.0 rather than an RC or beta track.
  • Signed Windows installer and Linux AppImage. The current artifacts are ffb-bridge-setup-1.0.0-x64.exe and FfbBridge-1.0.0-x86_64.AppImage.

Feel and tuning

  • Master gain now scales everything. The top-level Master gain is the true master FFB volume: spring coefficient, airspeed loading, rumbles, buffets, sustained drag forces, and one-shots all follow it. 0% sends no force output; 100% is the designed level.
  • Low-speed spring floor is exposed and retuned. The hidden RC2 default of 0.20 is migrated to the stronger 0.50 default for starter-style profiles, so users who installed RC2 inherit the corrected floor instead of keeping an accidental weak taxi / idle spring.
  • Bundled aircraft profiles were retuned. The Cessna 172 profile was recalibrated from the POH and field testing, then the TBM 930, King Air 350i, A320neo, and 747-8 starter profiles were brought into line with the same 1.0 force model. Engine cues are stronger, spring floors are less limp, and profile defaults better match each aircraft class.
  • Slider help now teaches tuning. Tuning rows now explain what the control does and what a pilot should change when the stick feels too light, too heavy, too noisy, too loose around centre, or too aggressive in a cue.

Effects and hardware

  • Deep effects audit completed. Sign conventions, units, gain staging, spring scaling, trim relief, buffet paths, and effect-group mutes were rechecked against the force engine and live Dashboard traces.
  • Engine force is more legible. Engine rumble strength is raised in the running-engine demos and profiles so piston and turbine cues are easier to identify without overwhelming the aircraft profile.
  • Spoiler buffet demo is fixed. Mock Sim now drives spoiler state strongly enough to prove the spoiler buffet path instead of looking active while producing no useful force.
  • Raw HID/PID stale-state guard before arm. After MSFS quits, arming Mock Sim or returning to Live resets the effect table before allocating the compact topology. This fixes the “works after restart only” limp-stick case.
  • Quiesce no longer kills the spring. Dynamic effects are stopped per slot while springs are left playing, so pause / Active Pause / frozen-telemetry paths stop rumble and buffet without dropping centring feel.

Mock Sim

  • Mock Sim is now an explicit demo mode. A prominent Enable Mock Sim row turns the page on, the top strip and Dashboard identify it as a demo source, and disabling it disarms cleanly without showing a fault.
  • Disabling Mock Sim resets the scenario. Turning it off stops forces immediately, clears demo inputs back to defaults, and returns the bridge to Live rather than leaving stale mock values in the background.
  • Force demos are intentionally exaggerated. Mock Sim now focuses on strong, obvious examples: takeoff roll, brake shudder, turbulence, flap buffet, spoiler buffet, stall buffet, overspeed buffet, rate damping, plus a direct stick test for spring-centre tracking.
  • Old clutter removed. Idle source selection, air-data tapes, fine-control extras, live-force-output readouts, and profile-through-mock controls were removed because they made the page harder to understand without improving user testing.

v1.0.0-rc2

Consequential release candidate after real cockpit feedback: safer default force output, a fixed armed spring, a much safer autopilot-follow model, corrected MSFS trim telemetry, and a cleaner light / dark interface.

Safer force output

  • HID/PID is now the default SideWinder FFB2 path on Windows. RC2 drives the FFB2 through raw HID/PID by default and keeps DirectInput as a compatibility fallback. This avoids relying on the fragile Windows pid.dll path for the normal case while preserving the fallback for systems that need it.
  • Arming no longer leaves the stick limp. The spring is primed when force output arms, and pause / quiesce / resume paths reassert the spring instead of coming back empty.
  • The spring-strength slider now actually controls the armed spring. The previous live path could ignore the slider after arming because another stiffness term won the update. RC2 makes the slider the real baseline again.

Autopilot is safer by default

  • AP follow is off for bundled profiles. Stock MSFS still sees physical stick motion as pilot input, so a force-feedback stick that moves under autopilot can disturb or disconnect the AP.
  • Authority is now intentionally small. The AP Authority slider now lives in the useful low range: 0%–8%, with a 5% default when you enable it. The old scale made it far too easy to dial in values no normal aircraft should use.
  • Strength defaults lower. AP-follow spring strength now defaults to 25%. Use AP follow as a subtle stick cue on stock MSFS, not as a full AP servo, unless your setup owns the input axis with a virtual-device / HID-filter path.

Trim and feel fixes

  • MSFS trim telemetry is corrected. Elevator and aileron trim now read the correct MSFS trim SimVars, so trim-dependent feel no longer silently follows the wrong source.
  • Trim relief is now worth testing again. With Trim relief enabled, a trimmed steady-state can relax to zero force at the trimmed position, instead of still fighting total surface deflection. Existing saved profiles stay yours; retest the option on RC2 before deciding whether it belongs in your aircraft profile.

Interface cleanup

  • Dashboard force colours are easier to read. Axis load and spring load no longer share the same colour in the stick-activity display.
  • Long aircraft names now ellipsize cleanly. The top strip no longer overflows when the sim reports a long title or livery name.
  • Light and dark button contrast is cleaned up. Primary blue buttons, amber disarm buttons, and engaged pills now keep readable text in both themes.
  • The Settings page joins the public tour and docs. The website screenshots now show the current Settings page instead of the old hardware-check tile.

v1.0.0-rc1

First release candidate. The app is broadly redesigned — new look, more effects you can feel, smarter defaults, and the engine-rumble slider finally does what it says on turboprops and jets.

New look

  • Light and dark themes. The app follows your operating-system preference by default. Pick one explicitly in Settings → General if you want to override it. Every page, dialog, and chart has been hand-tuned for both.
  • Dashboard redesign. A new Flight state panel shows airspeed, G-load, vertical speed, autopilot status, and stall / overspeed advisories at a glance. Effect-group quick-mute checkboxes live in their own card underneath. The window opens at one tuned size so the layout is right the first time.
  • Live Stick Activity panel with 29 effect chips. Every force channel the bridge can send has its own chip, colour-coded by family (stick feel and aero drag in cool blues, engine + ground + airframe in warm oranges, mechanical one-shots in held warm). Chips fade after firing so you can glance over and see what just happened.
  • Fresh icon set throughout. Cleaner, consistent sidebar and button glyphs.

New things you can feel

  • Flap and gear buffet. Sustained airframe vibration when flaps are extended at speed, and drumming when the gear is down in the air. Per-effect sliders on the Tuning page let you scale or silence either.
  • Sustained aero-drag pitch forces. Flaps, spoilers, gear-down drag, and propwash now push the stick the way they push the real airframe — extending flaps trims out forward, retracting trims back, the elevator loads up as the prop blasts air over it. Four new tunable sliders.
  • "Stick alive" effects. Rotation kicks (the plane being shaken sideways pushes the stick), surface back-drive (severe gusts and stall flutter come through the column), and sideslip cross-coupling so a yawed aircraft pushes its ailerons through the airflow.

Smarter defaults

  • Auto-pick a profile for the aircraft you load. Loading the C172, TBM 930, King Air, A320, or 747 in MSFS or X-Plane now picks the matching bundled profile on first encounter — no manual binding needed. Save your own profile and bind it once if you want a different default; that wins from then on.
  • Per-slider help text on every Tuning row. Every slider carries a short explanation of what it does. All values shown as percentages — no more raw decimals.
  • Friendlier UI copy. Help and status text rewritten to describe what you see and what to choose, not how the code works behind it.
  • Engine rumble defaults softened. The bundled profiles ship with a more conservative baseline. Your own saved profiles are unchanged.

Fixed

  • Engine rumble slider now actually works on turboprops and jets. The TBM 930 was the loudest case: the slider previously had no effect on felt rumble. The only way to silence it was the whole- effect-group mute. Slider is now authoritative across every aircraft and every sim.
  • Autopilot follow on X-Plane. AP-follow no longer fights you on MSFS or oscillates on X-Plane. The bridge takes over the axis cleanly while AP is engaged and hands it back when AP disengages.
  • Logitech spring centre clamp. Hotfix from beta.14 was wrong on one edge case; now correct.
  • Several silent telemetry subscriptions corrected after a full audit against MSFS and X-Plane SDK docs.

v1.0.0-beta.14

New

  • Initial selected Logitech support. FFB-Bridge now recognises and opens Logitech Flight System G940 (046D:C287), Logitech Force 3D Pro (046D:C286), and Logitech WingMan Force 3D (046D:C283) beside the Microsoft SideWinder FFB2 (045E:001B).
  • Supported-device registry. Device names, USB IDs, DirectInput direction quirks, and Linux permission-rule coverage now live in one registry instead of being scattered as FFB2 assumptions throughout the app.

Changed

  • Doctor, Diagnostics, support bundles, and setup copy now report the actual supported device. The app no longer describes every successful hardware open as a SideWinder FFB2.
  • The SideWinder FFB2 direction correction is now scoped to the SideWinder entry. Logitech sticks use the standard direction path unless real hardware reports show they need their own quirk.
  • Linux udev rule generation covers every supported USB joystick. The installer/Doctor rule now includes the SideWinder FFB2 plus the three selected Logitech IDs.

Notes

  • Logitech support is intentionally labeled initial. The SideWinder FFB2 path has the most bench time; if you own a G940, Force 3D Pro, or WingMan Force 3D, run Doctor and send a support bundle if polarity, spring, periodic effects, or software blending need adjustment.

v1.0.0-beta.13

Changed

  • Diagnostics is now a support triage page. The page opens with Device, Data source, Force output, and Log health cards, then shows live runtime signals and a searchable event log. You can select visible rows, copy only the filtered view, copy or export the full on-disk session log, and create a support bundle from the same surface.
  • Doctor is split into Health checks and Advanced hardware. Everyday checks now start on the Health checks tab with clearer PASS / WARN / FAIL / INFO / READY states. Polarity, the live drag-pad test, software-blended periodics, and the hardware-effects probe moved to the Advanced hardware tab.
  • Help is now a tabbed action hub. Start, Troubleshooting, Support, and Resources tabs collect the get-flying checklist, setup state, support-bundle path, feedback link, online docs, privacy link, and bundled/manual fallback in one place.
  • Dashboard and window chrome were polished for release. Dashboard metrics, spring/axis cards, force chips, and effect rows are roomier at the app's 1280×886 capture size. Native OS window controls handle minimize, maximize, close, and resizing again.
  • Publisher, licence, and notice copy were refreshed. Help/About/docs now consistently use the Rohsam Inc. publisher identity, beta licence wording, privacy link, and third-party notice locations.

Internal

  • The signed tagged-release pipeline is now the canonical beta build path, with documentation for the operator flow from tag to downloadable Windows installer, Linux AppImage, and latest.json manifest.

v1.0.0-beta.12

Changed

  • The Windows installer is now code-signed. Signed with Azure Trusted Signing under publisher RohsamInc. Right-click the installer → PropertiesDigital Signatures to verify before running. SmartScreen will show RohsamInc as the publisher rather than Unknown if a warning appears while file reputation accrues. Smart App Control and enterprise policy can still be stricter on brand-new builds. No other changes from beta.11.

v1.0.0-beta.11

Fixed

  • MSFS pause and Active Pause now quiesce immediately. The bridge listens for MSFS pause system events and suppresses dynamic forces as soon as pause is reported, rather than waiting several seconds for telemetry to look stale.
  • The stick holds a neutral spring while paused. Dynamic effects go quiet, but the centring spring no longer goes limp. Pause and frozen-telemetry recovery use a neutral default spring until live data resumes.
  • Roll and pitch springs recover after stutters. After a quiesce / stop-all path, the DirectInput dispatcher reuploads centring-spring condition parameters before replaying effects, preventing an axis from silently dropping out after a long pause or frame stutter.
  • Doctor and runtime now agree on hardware mode. Hardware remains the fresh-install default. Software-blended periodics are used only when the user chooses them, the hardware check requires it, or a classified hardware-effect crash recovery path enables it.

Changed

  • Bridge output gain is now 95%. The app drives the FFB2 much closer to full device authority while leaving 5% headroom for the driver and firmware.
  • Dashboard force visibility was rebuilt. The Dashboard now separates the always-on baseline spring from dynamic channels, shows active force contributors as readable chips, and keeps effect-group controls stable while live telemetry updates at 50 Hz.
  • Profiles now scale to more aircraft. Starter profiles and user profiles share one searchable list, the active profile is highlighted, and profiles can be applied directly from the list.

New

  • Starter profiles for more MSFS aircraft. Built-in read-only starters now include Cessna 172 Skyhawk (G1000), Daher TBM 930, Beechcraft King Air 350i, Airbus A320neo, and Boeing 747-8 Intercontinental.
  • Help page refresh. The in-app Help page now gives a practical get-flying flow, setup status, tuning order, support-bundle guidance, and common troubleshooting paths.

Internal

  • The Windows E2E runner can now create admin test runs, run fresh user installs, exercise mock/profile/fake-sim automation, generate an HTML manual guide, and upload deterministic results when the ingest token is configured.

v1.0.0-beta.10

Fixed

  • Windows hardware-mode crash during active flight. Some Sidewinder FFB2 users could run the bridge in hardware mode for a while, then crash inside Windows' pid.dll / DirectInput stack as dynamic effects were allocated or replayed. This was not an MSFS problem and not evidence of bad Sidewinder firmware. Root cause was our architecture: the bridge treated every logical simulator cue as its own retained DirectInput effect, creating a large physical effect table on an old HID/PID stack. Beta.10 replaces that with a compact hardware topology validated in live MSFS flight.
  • Hardware probe no longer needs an active flight. Doctor's Test hardware effects button now launches an out-of-process probe for the same compact topology the bridge uses in production. A native DirectInput crash takes down only the probe worker, not the bridge UI.

Changed

  • Compact DirectInput hardware mode. Windows hardware mode now allocates one vector constant, one two-axis spring, and a lazy three-slot periodic pool (Sine, Triangle, Triangle). The full logical effect set is still present — runway, gear, brake, engine, buffets, and one-shots are scheduled through the reusable pool instead of retained one-for-one.
  • Software-blended periodics remain the safety fallback. If a particular Windows driver stack still crashes, the next launch can quarantine that install to software blending. In normal beta.10 use, leave hardware mode on; it is the tested, crisper path.

Notes

  • This release is about stability first. The new hardware path may feel slightly different from earlier builds because effects are scheduled through fewer physical slots. Use profile tuning for feel adjustments before reaching for software blending.

v1.0.0-beta.9

Fixed

  • Quit-time crash on Windows. A small number of testers were seeing the bridge die with a Windows Error Reporting popup citing 0x80131506 — the .NET runtime's "fatal internal error" code — when they clicked Quit or closed the window. Root cause: the UI thread and the runtime's control loop were both calling into DirectInput at the same moment on shutdown, and the COM marshaller eventually noticed and tore the process down. All DirectInput access now serialises through a single lock at the device boundary, so the two threads can never race the marshaller. The signature of the bug is now extinct on the dev's stick.
  • Stick goes silent the moment you click Quit. Some testers were reporting that quit-time effects (rumble, buffet) still played out for ~32 seconds after the bridge closed. Beta.8 had attacked the same symptom with a driver-level halt-all command, but the per-effect cleanup that ran afterwards was, on this driver stack, blocking each call for the effect's full firmware playback duration — so the halt fired, then the process hung silently in cleanup while the firmware finished its tail. The shutdown path now skips per-effect work entirely and uses two device-level commands (halt-all + reset firmware effect table) that return immediately. Stick goes quiet and holds centre cleanly.

Changed

  • Hardware-mode FFB is the default again. Beta.8 had set software-blended periodics as the defensive default; with the rationale resolved, hardware mode goes back to being the fresh-install default — lower latency, firmware-generated waveforms, no CPU-side synthesis. Existing users who were on blending only because beta.8 put them there are migrated to hardware mode once on first launch of this build. If you prefer software blending — you simply like the feel — Doctor → Hardware compatibility still has the toggle and your choice will stick. The auto-migration only runs once per build.

v1.0.0-beta.8

New

  • TrimRelief — alternate trim mode. A new model for how trim and stick force interact. With TrimRelief on, airspeed loading is computed against (elevator − trim) instead of total surface deflection, and the spring centre tracks trim with the same authority. At a trimmed steady state with neutral stick: zero felt force, stick holds at the trimmed position on release. This matches how a real cable-rigged stick behaves and how XPforce / FSforce model the same idea. Default off — existing profiles and the legacy centre-relocation TrimFeel mechanic stay exactly as they were. Toggle on the Tuning page under Stick feel; six new unit tests + six pipeline integration tests pin the behaviour. Patrik (FB-0002) flagged this as the missing capability vs other FFB tools — thanks Patrik.
  • Software-blended periodics — defensive default in beta.8, reverted in beta.9. An alternative dispatch mode that allocates only four mandatory hardware effects (pitch + roll constant and spring) and synthesises every periodic, one-shot, and buffet in C# at 200 Hz, folding the result into the pitch and roll constant-force outputs. Plays every effect concurrently regardless of how many slots the firmware exposes. Beta.8 made it the fresh-install default; beta.9 flipped back to hardware mode. Software blending is still available — Doctor → Hardware compatibility, restart-required.

Fixed

  • Effects no longer play out their full duration on quit. A few testers reported that quitting the bridge mid-flight left rumble / buffet effects audible on the stick for ~32 seconds — the natural play length of the firmware's effect timer. The shutdown path now sends a driver-level DISFFC_STOPALL before releasing the device, halting every effect immediately. Distinct from the older per-effect Stop, which on some stacks doesn't halt periodics already playing.
  • Native crashes no longer abandon effects. The Vectored Exception Handler that catches access violations now sends DISFFC_STOPALL + DISFFC_RESET + Unacquire synchronously before the process dies. So if the bridge AVs deep in the driver, the firmware effect table is cleaned up and the next acquirer (the bridge itself, on relaunch) starts from a known-good state instead of inheriting whatever forces were live at the moment of the crash.
  • Stick stays firmly centred in every non-driving state. Disarm, paused sim, sim main menu, sim loading, FAULTED — all paths that previously could leave the stick limp now hold it firm at centre. The pipeline's spring fades cleanly to a non-zero baseline whenever telemetry is unavailable, instead of dropping to zero alongside the dynamic forces.
  • Crash dialog offers one-click recovery. The crash-report dialog can offer a Switch to software-blended periodics button when relevant. One click flips the preference and the next launch boots in the alternate dispatch mode without you having to touch Doctor.

Removed

  • The user-facing effect-count fallback (and its FFB_BRIDGE_MAX_EFFECTS environment variable, briefly shipped in beta.7) — software blending dominates it. The fallback allocated five hardware effects, picked the loudest one in any given tick, and dropped the rest. Software blending allocates four and plays every effect concurrently. Existing MaxEffectCount values in hardware.json auto-migrate to UseSoftwareBlending = true on first launch; the legacy field is dropped on next save.

Internal

  • Control-loop tick rate auto-bumps from 50 Hz to 200 Hz when software blending is on — the synthesised periodics would alias hard at 50 Hz against 33 Hz waveforms. Hardware mode stays at 50 Hz.
  • Soft compressor on the device-output edge replaces a hard clamp. Identity within ±0.9, tanh asymptotic to ±1 beyond — preserves direction and relative magnitude when multiple effects sum past saturation, instead of letting the strongest effect crush the rest.
  • Live force-output card on the Mock SimConnect page so you can watch TrimRelief and the spring centre track trim in real time without flying.

v1.0.0-beta.7

Fixed

  • The “works once, then crashes when I click Arm” bug. A handful of beta testers reported the bridge running cleanly on the first launch, then crashing on every subsequent Arm — until they unplugged the stick or rebooted. Root cause: the FFB2's Windows driver retains state across processes. When a previous run exited uncleanly (a crash, a forced kill, a power loss), the next run inherited the polluted state and crashed when it tried to allocate fresh effects. The bridge now resets the driver's effect state on every connect and disconnect, so a previous run cannot poison the next one. Verified on the workbench: forcing a kill mid-session and re-launching no longer reproduces the crash. If you'd been working around this with FFB_BRIDGE_MAX_EFFECTS=5, you can remove the environment variable on beta.7.

Internal

  • Internal diagnostic tooling for investigating force-feedback joysticks the bridge does not yet support. Built as part of ongoing hardware research; not user-facing yet, but the same tooling isolated the FFB2 driver-state bug fixed above.

v1.0.0-beta.6

New

  • Stick drop physics. A new effect models the gravity bias that pulls the yoke forward in a non-power-assisted aircraft when there's no air over the elevator — the constant forward pull you feel parked or taxiing in a Cessna. Fades to zero by a tunable Fade airspeed (default 30 kts). Find it on the Tuning page under Stick feel → Stick drop. Defaults are GA-friendly; drop Force toward 0 to silence on jet / fly-by-wire profiles.
  • Live polarity test on Doctor. A Hardware-compatibility card at the top of the Doctor page hosts an X-Y drag-pad that drives the stick in real time. Click Start, drag the puck, click Stop, then answer “Did the stick follow the puck?” — Yes makes no change, No auto-flips the install-level polarity invert. Replaces the old “imagine your stick mirrored” flow.

Changed

  • The Invert axis polarity toggle now flips pitch and roll together, matching how FFB2 firmware quirks actually present. Existing per-pitch settings are migrated forward on first launch.
  • Per-slider and per-section reset arrows on the Tuning page, plus a Discard button on the Profile card — easier to back out of an experiment than reload the profile.
  • Mouse wheel on a slider now requires focus. Hovering and scrolling no longer captures the wheel, so you can scroll the Tuning page past hovered sliders without nudging them.
  • Stick-drop force range extended 0–0.5 → 0–1.0 for hardware that needs more pull.

Fixed

  • Doctor's Fix-config dialog no longer claims MSFS ships without a TCP SimConnect endpoint — the wording predated the Proton-side listen-on-:500 reality.
  • Refresh build (2026-04-27). Welcome dialog step 2 reworded to drop the stale “Arm forces with SPACE” copy left over from before beta.5 dropped the global hotkeys; reads as “Arm the stick” with cockpit-gauge top-strip prose now. Profile dropdown's trigger button and popup widths now match flush instead of misaligning by 8–10 px when the dirty-dot column collapsed; small vertical gap between the trigger and the popup so they read as separate surfaces. Same beta.6 version; if you installed before this date, re-download from /download for the polish.

v1.0.0-beta.5

New

  • Slider interactions overhauled: click anywhere on the track jumps the thumb to that point; drag works as before; mouse wheel and arrow keys nudge the focused slider. Per-slider dirty dots, focus rings, and unified slider chrome across every page.

Removed

  • Space=Arm and D1–D8=Navigate global keybindings dropped. They hijacked the spacebar and digit keys when a TextBox owned focus (saving a profile name, for example), and only fired when the bridge window was foreground anyway — rare in practice because the sim is foreground while you fly. The tray menu still exposes Arm / Disarm / Quit. Esc to cancel the arm-confirmation dialog stays.

v1.0.0-beta.4

Fixed

  • Hotfix: defensive DIPERIODIC structure init plus a native SEH crash filter on Windows. A beta-tester report flagged an access violation deep in DirectInput's CreateEffect on certain Win11 builds we couldn't reproduce locally. Belt-and-braces fix — zero-init the struct ourselves before the API call (the spec says we have to anyway), plus a structured-exception filter that catches the AV at the boundary and surfaces it as a recoverable Faulted state instead of taking the process down.

v1.0.0-beta.3

New

  • Cockpit-gauge top status strip. The arm toggle, sim / device / mode lamps, profile picker, and Tune / Save button moved out of the Dashboard and sidebar into a single full-width strip at the top of every page. The strip is the operational cockpit; the Dashboard is now purely a telemetry surface.
  • FAULTED state. When a prerequisite drops while armed (stick unplugged, sim crashed), the gauge flips to FAULTED, forces stop, and the matching lamp turns red. Click the gauge to acknowledge and reset — the prerequisite has to be back before re-arm is allowed.
  • Profile UX clarity round. Per-slider dirty dots on the Tuning page; an inline Save / Save as… pair on the Profile card; profile picker dirty dot summarises “this profile has unsaved changes”.

v1.0.0-beta.2

Fixed

  • Same-day hotfix: Windows SimConnect defaults. MSFS 2024 ships SimConnect.xml with an enabled IPv4 entry on port 500 on every install — Steam, Microsoft Store, Proton — but Linux treats <1024 as privileged so MSFS-in-Proton can't actually bind it. The bridge now defaults to 127.0.0.1:500 on Windows (where it works) and 127.0.0.1:5111 on Linux (where Proton can bind). Doctor learned to detect the Microsoft Store install at %LOCALAPPDATA%\Packages\Microsoft.Limitless_8wekyb3d8bbwe\.

v1.0.0-beta.1

Initial public beta

First tagged release. The desktop app drives a Sidewinder Force Feedback 2 from MSFS 2024 (SimConnect TCP) and X-Plane 11 / 12 (UDP RREF, no plugin) on Windows 10+ and modern Linux. Thirteen force effects with per-effect gain sliders + master gain; arm / disarm safety model with first-launch acknowledgement; tray-resident with hide-to-tray on close; Diagnostics + Doctor pages for triage; built-in Cessna 172 starter profile. Public site live at ffb-bridge.com with downloads gated behind an emailed token.

Every release is also announced by email to subscribers. If you signed up for downloads, you're already on the update list and can unsubscribe from any email.