OpenMower — September 2026 Release
OpenMower spans firmware, PCB hardware, and the robot software stack across several repositories, all pulled together here. This release brings a unified firmware binary, new hardware support (Universal-8S, Sabo, updated YardForce boards), a proper charger/BMS implementation, a split of the universal mainboard into standalone modules, and a big batch of software improvements including a Buildroot-based embedded OS, MQTT event streaming, and a Docker-based simulator.
Highlights
- One firmware, every robot.
fw-openmower-v2now ships a single unified binary with runtime robot detection — no more picking the right build for your hardware. - Real charger/BMS support. Proper charging logic with per-robot current limits, safe defaults, and hardened fuse limits, replacing the previous ad-hoc charging code.
- The universal board is now four modules.
hw-openmower-universalis deprecated. Its logic, charger, xESC carrier, and GPS carrier are now separate, independently orderable boards — see below. - New hardware: Universal-8S, Husqvarna 310 MKII, and Sabo v0.6 (production-ready) are now supported. YardForce boards get connector, filtering, and silkscreen fixes.
- Embedded OS.
open_mower_rosgains a Buildroot-based embedded OS build, with a migration path from the stock OS image. - Simulate without hardware. A new Docker Compose simulation stack lets you develop and test without a physical mower.
- Live telemetry. Position and event data can now be published over MQTT.
Firmware — fw-openmower-v2 (v1.0.5 → v1.4.0)
- Unified firmware binary with runtime robot detection (#67)
- Proper Charger/BMS implementation (#47), with max-charge-current handling and safe default fuse limits for the universal board
- New hardware support: Universal-8S, hw-module-logic, Husqvarna 310 MKII, YardForce v1.2.0 (#63, #64, #69, #75)
- Report actual RPM instead of ERPM, add mower safety RPM cutoff (#77)
- Signed mow-motor speed and RPM reporting (v2)
- Recover I2C peripheral from bus-storm hangs (#66)
- Fix NMEA driver stall on garbage input (#74)
- Service health checks for the emergency system
yf_cover_uisupport for v2 hardware (#59)
Firmware — xesc_firmware (→ v6.06-otp)
- xESC-lite feature work merged; minor housekeeping since last release
Hardware — hw-openmower-sabo (→ v0.6)
- Production-ready revision
- New BMS I2C driver
- Motor backflow protection (TVS)
- Hardened HV trace clearances and copper zones
- Connector, plug, and series-variant updates
- Molex Milli-Grid PEG mounting holes added
Hardware — hw-openmower-yardforce (→ v1.2.1)
- Fixed MMCX connector hole size (#13)
- Added filtering to VBATT/VCHARGE rails (#14)
- Consolidated USB-A header, DNP'd unused EEPROM header (#15, #16)
- Improved charger silkscreen (#17)
- DRC exclusion for resistor placed below GPS module
Hardware — universal board split into modules
hw-openmower-universal is now deprecated upstream. Reasons: the board was easy to break, hard to source single replacements for, awkward to iterate on, and too large for most mowers anyway. It's replaced by four smaller boards, now tracked under hardware/universal-hardware/:
hw-module-xesc(v1.0.3) — carrier to use xESC standalonehw-module-charger(v1.0.1) — charger modulehw-module-logic(v1.0.1) — logic board for universal applicationhw-module-gps(v1.0.1) — carrier for Arduino Shield-style GPS units on the xBot modular platform
OS — OpenMowerOS (→ v2.1.1)
- Support for new robot models
- Fixed default
docking_extra_timeparameter
Software — open_mower_ros (v1.2.0 → v1.4.0)
- Added a Buildroot-based embedded OS build under
os/(#335), with a migration path from the stock OS image - New MetaService interface exposing firmware version and robot stage-2 FW info (#341)
- Publish robot position and events over MQTT (#274)
- Switched to
ros_ntrip_clientfor NTRIP corrections (#307) - New Docker Compose simulation stack for hardware-free development and testing (#321)
- Nonlinear angular control (#310)
- Emergency handling and skip-path/area support for Series-I robots (#306)
- Fixes: IPv6-disabled-for-remote (#344), YardForceSA_OEM GPIO configuration (#343), missing v1 board parameter default (#346)