Hello everyone!
I’m using a Raspberry Pi 5 to send offboard MAVLink commands (via pymavlink/MAVProxy) to a SpeedyBee F405 V4 running ArduCopter. There is no RC transmitter connected—everything should be controlled via MAVLink.
Hardware & setup:
- Flight Controller: SpeedyBee F405 V4 (ArduCopter AC 3.3+) with microSD slot
- Companion Computer: Raspberry Pi 5 → TELEM2 (R2/T2/GND) → UART (
/dev/ttyAMA0
@ 115200) - GCS: MissionPlanner for parameter configuration
The Problem:
Despite sending a sustained 2000 µs throttle override (or using MAV_CMD_DO_MOTOR_TEST
in PWM mode), motor 1 never reaches full RPM. It spins, but remains at a significantly reduced speed. I’ve also tried to send 100% in percentage mode. I have confirmed RC and throttle failsafes are disabled.
What I suspect:
- A hidden failsafe or flight-mode throttle cap is still active
- DShot600 vs PWM configuration on the FC might be remapping 2000 µs to a lower effective throttle
- An internal ESC deadzone or timing issue under MAVLink test commands,
Has anyone successfully driven an ESC to true 100% throttle via offboard MAVLink on ArduCopter? Any pointers or configuration tips would be greatly appreciated!
Python test code snippet:
import time
from pymavlink import mavutil
master = mavutil.mavlink_connection('/dev/ttyAMA0', baud=115200)
master.arducopter_arm()
print('arm')
cmd = mavutil.mavlink.MAV_CMD_DO_MOTOR_TEST
print("before")
master.mav.command_long_send(
1, 0,
mavutil.mavlink.MAV_CMD_DO_MOTOR_TEST, 0,
1, 0, 100, 5, 0, 0, 0
)
print('after')
time.sleep(5)
master.arducopter_disarm()
master.close()