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, public chip labels capture what the tester felt. The separate response-notes field stays private; it can contain optional typed text and, on Linux, probe-measured X/Y motion.
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
Windows groups the live battery into Constant, Periodic, Condition, and Ramp sections. Linux presents the equivalent evdev effects that each device advertises. Exact counts vary by driver and hardware on both platforms.
Current Linux releases also sample the stick's X/Y sensors while each live effect plays, recording measured displacement alongside the tester's answer so a false 'did nothing' response is easier to spot. That measurement stays in the private response-notes field and is not rendered on public device pages.
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
The AppImage can run in place, or ./FfbProbe-*.AppImage --install can add user-scoped desktop integration under ~/Applications. Use --uninstall to remove that installed copy and its menu entry.
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.
Consent-first updates on Windows and Linux
The GUI reads a small stable-release manifest at startup. It sends no install ID, current-version query, device information, or probe results; offline and malformed responses stay silent.
After explicit consent, FFB-Probe downloads the installer, verifies its exact length and SHA-256, requires a valid Windows signature from Rohsam Inc., runs the per-user installer silently, and restarts the new build.
A running Linux AppImage can download and verify the new AppImage, invoke its user-scoped install handler, refresh the desktop entry and icons, and launch the installed copy.
Development builds, extracted AppDirs, distro packages, and other non-AppImage Linux installs are never overwritten. The prompt links to the download page and these release notes instead, and every user can defer or skip a version.
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 hardware probing is isolated in a worker process on both Windows and Linux. 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 can leave AB6, AB9, and AY210 flight controls idle during standalone hardware tests. Switch 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
Your report files remain local unless you click Share. Sharing POSTs the JSON file to /submit; those are the same bytes embedded at the bottom of the HTML report. Separately, the GUI performs the identifier-free startup manifest check described above, but it never sends report or device data as part of that check.
The public hardware database renders an aggregate view per VID:PID. It never displays responses[].notes, which can contain optional tester text and Linux probe-measured motion. Chip selections, capability flags, supported effects, result codes, failed effects, and run errors can appear on the device page.
Read the full privacy contract → · Open the sample uploaded report →