Sub Setup and Configuration
ArduSub is not tuned in the same order as a rover or boat: thrusters only produce real force in water, while depth, attitude and leak protection have to be configured before the vehicle goes in. Get the order wrong and a problem in the water could be ballast, wiring or a parameter.
Setup order
| Step | What to do | Page |
|---|---|---|
| 0 | Flash ArduSub firmware and set FRAME_CONFIG for the frame | Flashing Sub firmware |
| 1 | Mount the controller in the housing at the standard orientation | Mounting the controller and accessories |
| 2 | Wire thrusters, gimbal and gripper by frame number | Thruster and ESC connections |
| 3 | Fill in the basics: frame, ESC type, thrust direction | Key parameters below |
| 4 | Calibrate the accelerometer and compass | Calibration below |
| 5 | Configure the leak, internal pressure and depth sensors | Depth and leak detection below |
| 6 | Run the motor test before sealing the housing | Power-on checks below |
Key parameters
| Parameter | Value | Notes |
|---|---|---|
FRAME_CONFIG | 1 | Frame; 1 is the six-thruster Vectored, other values on the thruster page |
SERVO1_FUNCTION ~ SERVO8_FUNCTION | 33 ~ 40 | Motor1 ~ Motor8, mapped to outputs by frame number |
MOT_PWM_TYPE | 0 | 0 normal PWM; OneShot, DShot and PWMRange per the ESC |
MOTx_DIRECTION | 1 | 1 normal, -1 reversed; check each thruster |
MOT_SPIN_ARM / MOT_SPIN_MIN | 0.1 / 0.15 | Spin when armed and thrust start; the first must be lower |
MOT_THST_HOVER | Per vehicle | Hover thrust, 0.125–0.6875; reset after changing ballast |
PILOT_SPEED / PILOT_SPEED_UP | Per vehicle | Maximum horizontal and ascent speed in cm/s; PILOT_SPEED_DN for descent |
MOT_FV_CPLNG_K | 1.2 | Vectored only: heave/surge decoupling, 0 disables |
SURFTRAK_DEPTH | Per vehicle | Minimum depth for surface tracking, in cm |
FS_LEAK_ENABLE | 2 | Leak protection: 2 enters surface mode, 1 warns only, 0 disabled |
Accelerometer and compass calibration
Accelerometer and compass calibration follows the Sensor calibration page.
Inside a submersible the housing is tight and the compass sits close to the ESCs, power leads and thrusters, so fix the high-current cabling in place before calibrating. Once the housing is sealed the compass cannot be moved, and this step has to be right the first time.
Depth and leak detection
Depth hold relies on the depth sensor and safety on the leak and internal pressure sensors; neither replaces the other.
| Parameter | Value | Notes |
|---|---|---|
RNGFND1_TYPE | 23 | 23 is BlueRobotics Ping; other rangefinders by model |
RNGFND1_ORIENT | 25 | Facing down: 25 is Down, 24 is Up |
RNGFND1_MIN / RNGFND1_MAX | Per range | Readings outside the range are discarded; do not fill in the whole water column |
LEAK1_PIN | 50 | Leak detector on AUX1; -1 disables |
LEAK1_LOGIC | 1 | Level when dry; wired the other way it alarms at power-up |
FS_LEAK_ENABLE | 2 | 2 enters surface mode, 1 warns only, 0 disabled |
FS_PRESS_ENABLE | 1 | Warn only when internal pressure is too high; threshold is FS_PRESS_MAX in Pa |
Test the leak protection
After assembly, bridge the leak probe with a wet cloth and confirm the ground station raises an alarm and the vehicle takes the configured action. A parameter that was never tested is only discovered when water is already inside.
Joystick and radio
Submersibles are flown mostly from a ground station joystick, with commands travelling over the umbilical or a telemetry link. Vehicles using a surface buoy relay can also carry a radio link, but radio does not travel underwater — it only works on the surface.
| Parameter | Notes |
|---|---|
JS_GAIN_DEFAULT | Joystick gain at power-up, 0.1–1.0; start low and raise it in the water |
JS_GAIN_MIN / JS_GAIN_MAX | Range the joystick buttons can adjust the gain through |
JS_LIGHTS_STEPS | Number of light brightness steps, matching the actual lamp |
PILOT_ACCEL_Z | Vertical acceleration in cm/s²; too high overshoots in depth hold |
Power-on checks
- Remove the props or keep the thrusters out of water and power up briefly. Outputs only carry a signal once armed — confirm that first.
- Open the motor test in the ground station and step through outputs 1–8, confirming each number matches its physical thruster.
- Command forward on each thruster and check the thrust direction; a bi-directional ESC must stop at centre, and one that keeps turning has uncalibrated travel.
- Move the joystick through surge, sway, heave and yaw and confirm each direction; if reversed, change
MOTx_DIRECTIONfirst. - Bridge the leak probe and confirm the alarm and protection action; then unplug the umbilical and confirm the behaviour when the ground station disappears.
Common symptoms
| Symptom | Cause | Fix |
|---|---|---|
| Thrusters do not turn at all | SERVOx_FUNCTION still 0 | Set it to 33–40 to match the motor number |
| Thrusters keep turning when armed | Bi-directional ESC travel not calibrated | Reset MOT_PWM_MIN / MOT_PWM_MAX per the datasheet |
| Forward moves backwards | Motor direction or phase wires | Change MOTx_DIRECTION first, then swap wires |
| Slow sinking in depth hold | Insufficient ballast or MOT_THST_HOVER too high | Trim first, then reset hover thrust |
| Leak alarm at power-up | LEAK1_LOGIC inverted | Swap 0 and 1 |
| Constant yaw in straight running | Shared-axis thrusters or props fitted the same way | Check props and direction against the frame diagram |
| Floaty joystick response | Gain too high or MOT_FV_CPLNG_K too low | Lower JS_GAIN_DEFAULT, then adjust decoupling |
Parameters only fix parameter problems
A reversed direction can be made to look right either by changing a parameter or by rewiring. Rewiring is the real fix; parameters belong to travel, deadband and PID — the places that genuinely need numbers.

