Add MOZA AB6 / AB9 FFB Base support#36
Open
lumir-sliva wants to merge 1 commit into
Open
Conversation
The MOZA AB6 (PID 0x1002) and AB9 (PID 0x1000) flight bases expose a standard DirectInput FFB device with all 11 effect types (ConstantForce, RampForce, Sine, Square, Triangle, SawtoothUp/Down, Spring, Damper, Inertia, Friction). EDForceFeedback talks to them through the existing SharpDX path with no code changes; only the device entries and per-event mappings need to be configured. Empirical setup detail not documented anywhere upstream: the AB6/AB9 firmware silently swallows DirectInput effect writes unless MOZA Cockpit is running concurrently with "Integrated FFB" toggled ON in Cockpit's Basic Settings. With that toggle, Cockpit's filter relays the effects to the motor. README and the new settings files note this requirement. The bundled settingsMozaAB6.json / settingsMozaAB9.json map all 28 status flags from EliteAPI's GameStatus (Docked, Landed, Gear, Shields, Supercruise, FlightAssist, Hardpoints, Winging, Lights, CargoScoop, SilentRunning, Scooping, SrvHandbreak, SrvTurrent, SrvNearShip, SrvDriveAssist, MassLocked, FsdCharging, FsdCooldown, LowFuel, Overheating, HasLatlong, InDanger, InInterdiction, InMothership, InFighter, InSRV, AnalysisMode, NightVision, InNoFireZone, IsRunning, InMainMenu) to the bundled .ffe files. Tested end-to-end on the AB6: Status.MassLocked:False triggers VibrateSide.ffe and the stick reacts. Issue bobhelander#35 establishes the AB9 entry; this expands to AB6, the full status-event set, and the missing Cockpit / Integrated FFB documentation. Github-Issue: bobhelander#35
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the MOZA AB6 (PID 0x1002) and AB9 (PID 0x1000) flight bases to the
known-working device list, ships ready-to-use
settings.jsonvariants foreach, and documents an empirical setup requirement that isn't called out
anywhere upstream.
Background
Issue #35 reports the AB9 working with a hand-rolled
settings.jsonentry, but doesn't extend the default settings or
KnownWorkingDeviceslist, and misses one runtime requirement that was load-bearing in
testing. This PR closes both gaps and adds AB6 support alongside.
What changed
KnownWorkingDevicesin the bundledEDForceFeedback/settings.jsonand
EDForceFeedbackConsole/settings.jsonnow lists bothMOZA AB6 FFB BaseandMOZA AB9 FFB Basewith their DirectInputProduct GUIDs (
1002346e-.../1000346e-...).settingsMozaAB6.jsonandsettingsMozaAB9.jsonin both projectfolders, mapping all 28 status flags from EliteAPI's
GameStatus(Docked, Landed, Gear, Shields, Supercruise, FlightAssist, Hardpoints,
Winging, Lights, CargoScoop, SilentRunning, Scooping, SrvHandbreak,
SrvTurrent, SrvNearShip, SrvDriveAssist, MassLocked, FsdCharging,
FsdCooldown, LowFuel, Overheating, HasLatlong, InDanger,
InInterdiction, InMothership, InFighter, InSRV, AnalysisMode,
NightVision, InNoFireZone, IsRunning, InMainMenu) to the bundled
.ffefiles. The 4.5.0 binary's embedded EliteAPI dispatches Statusevents only, not Journal events, so the bundled settings stick to
Status entries.
README.mdgets a "MOZA AB6 / AB9" section spelling out the Cockpitrequirement below.
No code changes. Both bases expose a standard DirectInput FFB device
with all 11 effect types (ConstantForce, RampForce, Sine, Square,
Triangle, SawtoothUp/Down, Spring, Damper, Inertia, Friction), and the
existing SharpDX path drives them as-is once the device entries and
event mappings are configured.
Setup requirement (the missing piece from #35)
The AB6/AB9 firmware silently swallows DirectInput effect writes
unless MOZA Cockpit is running concurrently with "Integrated FFB"
toggled ON in Basic Settings. With that toggle, Cockpit's filter
relays effect writes to the motor; without it, effects upload and start
without error but the motor stays dead. The README and the new
settings files note this. This wasn't documented in #35 and cost a few
hours of debugging before being identified empirically.
Testing
End-to-end verified on an AB6 with Elite Dangerous running and Cockpit
Status.MassLocked: True → FalseplaysVibrateSide.ffeand the stick reacts; Dock, Gear, Hardpoints,CargoScoop, Lights, Supercruise transitions all fire their mapped
effects.
Default
.ffemagnitudes are MSFF2-era and may feel strong on theAB6's 6Nm motor.
ForceFeedbackGainon the device entry (default10000, range 1–10000) is the global attenuation lever; users wanting
per-effect tuning can edit individual
.ffefiles with the bundledFFUtils\fedit.exe.Refs #35.