Upstream fixes to Betaflight, PX4, and OpenFront
Bug fixes accepted into Betaflight, the open-source firmware that flies FPV drones, and into the OpenFront browser game.
My partSole author of each fix
In short
Bug fixes contributed to three upstream open-source projects: a Redpine CC2500 debug-mode fix and a W25M flash read fix in Betaflight, an EKF2 range-height reset fix in PX4, and two HUD fixes in OpenFront.
- What it is
- A set of small upstream pull requests to Betaflight, PX4, and OpenFront, each fixing a specific reported fault.
- Why it matters
- Flight-controller firmware and estimators fail in narrow, hardware-dependent ways: a debug channel that two drivers write with different meanings, a flash read that silently returns short, a height fusion path that never refreshes its timeout. The same discipline applies to a browser game HUD that a mobile browser can zoom into a stuck state.
- My part
- I wrote each pull request. Betaflight #15706, OpenFront #4868, and OpenFront #4985 were merged by the maintainers; Betaflight #15705 is open; PX4 #28286 was closed without merge.
Step by step
- 1
Betaflight #15706 — Redpine CC2500 debug mode
The FrSky and Redpine CC2500 drivers both wrote the same debug channel with different meanings for indices 0–3, and a blackbox log records only the numeric debug mode, so the two layouts could not be told apart afterwards. The fix gives the Redpine driver its own debug mode. Merged 2026-09-16; 3 files, +24/−11.
- 2
Betaflight #15705 — short die reads in W25M flash
The W25M wrapper split reads at die boundaries but assumed the die driver returned the full requested length. The W25N01G die driver clamps each transfer to a NAND page, so multi-page reads left the tail of the buffer unfilled while reporting success. The fix honours the returned count. Open at the time of writing; 1 file, +16/−15.
- 3
PX4 #28286 — recurring EKF2 range height resets
When a range finder was the only active height source, successful range fusion did not refresh the estimator’s global height-fusion timestamp, so altitude reset every five seconds. The proposed fix refreshes the timestamp on successful range height fusion and adds regression coverage; the new test failed before the change and passed after it (187 of 187 tests). Closed by the maintainers without merge; 5 files, +40/−5.
- 4
OpenFront #4868 and #4985 — HUD fixes
#4868 adds a progressive end-of-game timer warning (center alert at 1:00, alternating timer at 0:30, alternating control bar at 0:10) with reduced-motion handling and focused tests; merged 2026-08-07. #4985 stops iOS double-tap zoom from leaving the HUD stuck off-screen, using touch-action: manipulation plus a narrow touchend guard; merged 2026-08-13.
Results
- 5
- Pull requests
- three merged, one open, one closed
- merged
- Betaflight #15706
- 2026-09-16
- merged
- OpenFront #4868
- 2026-08-07
- merged
- OpenFront #4985
- 2026-08-13
- closed
- PX4 #28286
- not merged; test-backed
For engineersHow it is built, its limits, and its keywords.
How it works
I read the code path until the mechanism is explicit, reproduce or reason through the fault, change the smallest surface that removes it, add a regression test where the project has a test harness, and write the pull request so a maintainer can check the reasoning without re-deriving it.
Limits
- These are small fixes, not features or architecture work; the value is in the diagnosis and the tests, not the line count.
- The PX4 change was not merged. I still list it, because the diagnosis and the test are the useful part, but I don’t count it as an accepted contribution.
Keywords
- Betaflight
- PX4
- EKF2
- open-source contribution
- firmware debugging
- C