How FFB Probe works
A tester-focused guide to the wizard, the live force-feedback sections, the two local report files, known issues, and exactly what gets sent when you click Share.
The guided run
FFB Probe is organized around one short tester journey: land on the value-prop screen, detect the stick, confirm the safety checklist, feel each live effect, answer what happened, then keep or share the resulting report. Each screen focuses on the task at hand so testers always know what to do next.
Header
The header keeps the FFB Probe identity visible while the current step owns the main work area. Run controls appear inside the active screen, close to the action they affect.
Progress
The wizard shows progress in context: checklist count before probing, section cards and effect counts while forces are active, and a clear result state when the run ends.
Work area
The body is full-bleed and changes with the phase: live stick preview, checklist, signal diagrams, answer chips, or the final report/share panel.
Land
First-launch landing explains what FFB Probe is, what the test takes, and why the public hardware database matters before the tester does anything.
Detect
The next screen identifies the joystick, VID:PID, and force-feedback capability — and shows a live readout of the stick — before any force is played.
Prepare
The checklist makes the tester close simulators, clear desk space, keep a hand on the stick, and handle FFB2 grip-sensor quirks.
Feel
The running view shows the live section, expected signal, countdown, and the current effect without hiding the Stop control.
Answer
After each effect, two surfaces capture the tester's response: a chip grid (multi-select, public — these labels appear on the device's hardware-DB page) and an optional free-text notes box (private — kept server-side, never on the public page).
Keep or share
The result page keeps reports local by default. Sharing sends the redacted hardware payload, and an optional email field lets you ask for a heads-up if FFB-Bridge starts supporting your stick.
What the probe asks the hardware to do
The standard Windows battery presents four GUI-visible live sections: Constant, Periodic, Condition, and Ramp. Counts can vary because the probe respects what each driver actually enumerates.
Polarity sweep
A steady pull for about five seconds. Report the physical direction the stick moved.
Useful chips: Left, Right, Forward, Backward, Did nothing
Two-axis diagonal
A diagonal pull using both X and Y motors at the same time. It should not leave the device weak afterward.
Useful chips: Diagonal, one axis only, weak, Did nothing
Sine
A smooth repeated vibration or rocking motion for about five seconds.
Useful chips: Slow oscillation, Fast oscillation, Buzzing
Square
A sharper on/off vibration or repeated tapping for about five seconds.
Useful chips: Fast oscillation, Buzzing, one jerk
Triangle
A repeated back-and-forth motion, usually smoother than square but more mechanical than sine.
Useful chips: Slow oscillation, Fast oscillation
Sawtooth
A repeated ramping or buzzing motion. It may feel asymmetric.
Useful chips: Ramping, Buzzing, weak
Spring
Gently move the stick: it should push back toward center.
Useful chips: Centered, Damped, Did nothing
Damper
Gently move the stick: it should resist motion, like moving through syrup.
Useful chips: Damped, Friction, Did nothing
Inertia
Gently start and stop moving the stick: it may resist changes in motion.
Useful chips: Inertia, heavy, Did nothing
Friction
Gently move the stick: it may feel heavier or sticky.
Useful chips: Friction, Damped, Did nothing
Ramp sweep
A force that builds from zero to the configured magnitude on each tested actuator.
Useful chips: Ramping, Left, Backward, Did nothing
Saturation probe
Multiple co-directional constants characterize how the device clips when effects stack.
Useful chips: Strong, Weak, clipped, Did nothing
The two files each run writes
Reports save to %LOCALAPPDATA%\Programs\ffb-probe\Results\FFB-Probe-<timestamp>\ on Windows and ~/.local/share/ffb-probe/Results/FFB-Probe-<timestamp>/ on Linux. Two files per run; the HTML embeds the JSON in a <pre> block so the local report and the upload payload are guaranteed to be the same bytes — no second hidden artifact.
Self-contained report — opens in a browser, has its own Share button. ~22 KB
The literal SubmissionPayload — same bytes embedded at the bottom of the HTML, same bytes the GUI POSTs to /submit. ~6 KB
Windows install and publisher checks
FFB Probe is published by Rohsam Inc. The installer is a per-user install — no admin password required, no UAC prompt. It places the binary under %LOCALAPPDATA%\Programs\ffb-probe and writes a desktop shortcut and a Start Menu entry. The directory chooser is hidden so you can't accidentally install somewhere weird. Stable Windows releases are signed; confirm Windows shows Rohsam Inc. as the publisher and verify the SHA-256 on the Download page before running.
If Windows does not show Rohsam Inc. as the verified publisher for your installer, or if the hash does not match the published manifest, do not run that file.
Windows SmartScreen reputation warning
Newly signed releases can still take time to build SmartScreen reputation. If Windows shows a warning even though the publisher is Rohsam Inc., verify the SHA-256 hash on the Download page before deciding whether to continue.
Publisher or hash mismatch
Do not run an installer if the publisher is missing, shows a different company, or the SHA-256 hash differs from the value on the Download page. Download a fresh copy from ffb-probe.com and compare again.
The release manifest is the source of truth for filenames, sizes, and hashes. The Windows installer and Linux AppImage are both opt-in downloads; running the probe still keeps reports local until you choose Share.
AppImage plus evdev permissions
The Linux build ships as a self-contained AppImage. Mark it executable, run it, and keep the stick powered with room to move:
chmod +x ./FfbProbe-*.AppImage
./FfbProbe-*.AppImage
Detection can work with read-only access, but live effects need write access to the joystick's /dev/input/event* node. If the wizard reports permission failures, fix the device's event-node permissions once instead of running the whole AppImage with sudo.
1. Find the event node
The report or error text usually names it as something like event=/dev/input/event2. You can also inspect joystick event symlinks:
ls -l /dev/input/by-id/*event-joystick
2. Try a temporary permission
Replace event2 with the node for your stick. This lasts until the device is unplugged or the machine reboots, so it is a safe way to confirm the problem:
sudo setfacl -m "u:$USER:rw" /dev/input/event2
./FfbProbe-*.AppImage
3. Make it persistent with udev
Ask udev for the stick's USB IDs:
udevadm info -q property -n /dev/input/event2 | grep -E 'ID_VENDOR_ID|ID_MODEL_ID|NAME'
Use those lowercase hex IDs in a device-specific rule. This example is for a SideWinder FFB2, VID:PID 045e:001b:
sudo tee /etc/udev/rules.d/70-ffb-probe-045e-001b.rules > /dev/null <<'EOF'
# FFB Probe: allow the active desktop user to open this joystick's event node.
SUBSYSTEM=="input", KERNEL=="event*", ATTRS{idVendor}=="045e", ATTRS{idProduct}=="001b", TAG+="uaccess"
EOF
sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=input
Unplug and replug the stick, then run the AppImage normally. The rule is per-device, so it is safer than adding your user to the broad input group.
The Linux wizard uses evdev force-feedback effects rather than DirectInput. The shared report schema is the same as Windows, so Linux submissions appear in the same public database and OS breakdown.
Known issues and recovery steps
No force-feedback device detected
Close flight simulators, joy.cpl, Logitech Profiler, and any other tool that may already own the device. Unplug and replug the stick, then rescan.
Worker crashed mid-run
The GUI keeps running because the dangerous DirectInput work is isolated in a worker process. Keep the partial report and send it to support.
The stick keeps pulling
Unplug USB and power, wait ten seconds, reconnect power first, then USB. FFB2 firmware can hold the last force after hard faults.
SideWinder FFB2 does nothing
Cover or loosely hold the grip sensor. DirectInput calls can succeed while the actuator is gated by the optical sensor.
MOZA Cockpit Telemetry mode
MOZA Cockpit's Telemetry mode is for MOZA's own sim-fed telemetry path. It is not the normal default mode, and it can leave the base idle during standalone hardware tests. If the AB9 is detected but does nothing, switch MOZA Cockpit back to its normal/default mode and retry.
Linux permission denied
Your user may need read/write access to the stick's /dev/input/event* node. The Linux docs show how to test this with setfacl, then make it persistent with a per-device udev rule.
Windows publisher or SmartScreen warning
Signed releases should show Rohsam Inc. as the publisher. If Windows still shows a reputation warning on a fresh release, verify the SHA-256 on the Download page before continuing.
Publisher or hash mismatch
Do not run an installer if the publisher is not Rohsam Inc. or the SHA-256 hash does not match the value published on the Download page.
The literal bytes are the audit surface
Running the probe locally does not send anything — the two files stay on disk. Clicking Share POSTs the JSON file to /submit on this server. That JSON is the same bytes embedded at the bottom of the HTML report; you can read it before sharing.
The public hardware database renders an aggregate view per VID:PID. The only field never displayed is the per-effect free-text notes — what the tester typed in the optional notes box during the run. Everything else (chip selections, capability flags, supported effects, HRESULT codes, failed effects, run errors) appears on the device page exactly as the probe wrote it.
Read the full privacy contract → · Open the sample uploaded report →