Sailboat Mode
A sailboat is not a separate firmware but a set of features inside Rover firmware: once SAIL_ENABLE is set to 1 and the controller rebooted, the SAIL_* parameters appear and the controller starts driving the sail actuator from the wind direction. Boats without sails can skip this page.
Wiring and settings
Wire the sail actuator to its output first, as described in Thruster and servo connections, then set the parameters below.

▲ Wind vane: a potentiometer on the rotating part reports wind direction; left is the complete unit, right is the potentiometer wiring
| Parameter | Set to | Notes |
|---|---|---|
SAIL_ENABLE | 1 | Enables sailboat mode; reboot after changing |
WNDVN_TYPE | Per sensor | 1 assumes the bow heading at arming, 2 adds a radio offset, 3 is an analogue wind vane, 4 is an NMEA anemometer |
SAIL_ANGLE_MIN / SAIL_ANGLE_MAX | Per boat | Boom angle to the centreline at each end of travel |
SAIL_ANGLE_IDEAL | 25 | Angle between sail and wind; raise it if the sail is too loose |
SAIL_NO_GO_ANGLE | Per boat | No-go zone upwind, 0~90°; the boat tacks when the target heading falls inside it |
SAIL_XTRACK_MAX | Per boat | Tack once cross-track error exceeds this value, which forms a corridor twice as wide |
SAIL_HEEL_MAX | Per boat | Above this heel angle the heel PID starts sheeting out |
SAIL_WNDSPD_MIN | Per boat | Below this wind speed the motor takes over; only applies if a motor is fitted |
Sail travel calibration
- Arm in manual mode and pull the throttle stick to the bottom; the sail should sheet in towards the centreline. If it sheets out instead, set
SERVOx_REVERSEDto 1 on that output. - Limit travel with
SERVOx_MIN/SERVOx_MAXto the real mechanical range: the sheet should not come up tight at the centreline, and the boom should not reach the shrouds when let out. - Measure the boom angle to the centreline at both extremes and enter them as
SAIL_ANGLE_MINandSAIL_ANGLE_MAX; the controller interpolates everything between. - Run a few headings in ACRO mode on the water and watch the boom. If the sail is too loose, raise
SAIL_ANGLE_IDEAL.
Wing sails ignore the sail angle
A wing sail elevator (128) or direct mast drive (137) does not use SAIL_ANGLE_MIN / SAIL_ANGLE_MAX: set SERVOx_TRIM for zero angle of attack, then SERVOx_MIN / SERVOx_MAX for maximum lift on either tack.
Upwind and tacking test
In Auto mode, when the target heading falls inside the no-go zone the controller tacks at SAIL_NO_GO_ANGLE and keeps the cross-track error inside SAIL_XTRACK_MAX. Test in this order:
- Run straight in ACRO mode first and confirm the sail trims itself as the wind shifts.
- Switch to Auto and run a two-point route at 90° to the wind; check how well the straight legs track.
- Then run an upwind route and watch the tacks: if speed drops sharply through a tack, reduce
PIVOT_TURN_RATE; if the tack is sluggish, raise it.
Heel comes before speed
Sheeting out only starts once heel exceeds SAIL_HEEL_MAX. Set too high, the boat has to lean that far before it sheds power, which puts a hull down in strong wind.
Common symptoms
| Symptom | Cause | Fix |
|---|---|---|
| Sail actuator does not move | SAIL_ENABLE still 0, or no reboot after the change | Set to 1 and reboot the controller |
| Sail direction is inverted throughout | SERVOx_REVERSED not set on the sail output | Set to 1 and recalibrate travel |
| Boat spins in place in Auto | Wind vane mounted backwards, or WNDVN_DIR_OFS not calibrated | Check vane orientation and offset |
| Boat cannot make way upwind | SAIL_NO_GO_ANGLE set too small | Raise it to the measured sailing angle |
| Tacks too often | SAIL_XTRACK_MAX set too small | Raise it; the corridor widens accordingly |

