SDK 1.8 / PX4 1.18: VOXL ESC telemetry is valid in PX4 but MAVLink reports all motors offline
-
Hardware: Custom drone, VOXL 2 M0054
SKU: TF-M0054-4-V1-C11Software version:
system-image: 1.8.09-M0054-14.1a-perf-20261009 hw platform: M0054 voxl-suite: 1.8.0 Relevant packages: voxl-px4 1.18.0-1.0.9 voxl-mavlink-server 1.4.21-202610161525 voxl-px4-params 0.9.35 voxl-esc 1.6.5Configuration / services:
ESC=VOXL_ESC voxl-px4 Enabled, Running voxl-mavlink-server Enabled, RunningWhat I am trying to do:
View normal ESC health and telemetry in QGroundControl's ESC Status Overview.
What actually happens:
QGC shows
ERRand all four motors as offline. The vehicle can still arm, motors can be spun from the Actuators page, and flight-control outputs work.PX4 itself receives valid ESC telemetry.
px4-listener esc_statusshows all four ESCs online and fresh:esc_online_flags: 15 (0b1111) esc_armed_flags: 15 (0b1111) esc_count: 4 esc_connectiontype: 1 ESC 0-3: fresh timestamps, 12.497-12.513 V, 32-39 C, esc_errorcount: 0, failures: 0However, each of the four reports has:
actuator_function: 0I captured the MAVLink packets leaving the VOXL for the GCS.
ESC_INFOandESC_STATUSare transmitted, so this is not a voxl-mavlink-server forwarding issue. But they contain:ESC_INFO: count=4, info=0 (all ESCs offline) ESC_STATUS: RPM/voltage/current all zeroI traced this to the PX4 MAVLink ESC stream: it now remaps and exports telemetry only for reports with
actuator_functionset toMotor1..MotorN. Thevoxl_escdriver publishes validesc_statustelemetry and online flags, but does not populateesc_status.esc[i].actuator_function, so all reports are filtered out before MAVLink serialization.This appears to be a regression caused by the PX4 MAVLink ESC stream change in commit
efbc9e64(mavlink: esc: fix ESC_STATUS and ESC_INFO message emission, November 2025). That commit is included in the installedv1.18.0-1.0.9source tag. Before that change, the MAVLink stream forwarded theesc_statusarrays andesc_online_flagsdirectly, so it did not depend onactuator_function.Steps to reproduce:
-
Boot a VOXL 2 using the versions above with
ESC=VOXL_ESC. -
Connect QGroundControl to
voxl-mavlink-serveron UDP port 14550. -
Open the ESC Status Overview. All four motors show offline /
ERR. -
On the VOXL, run:
px4-listener esc_status -
Observe that ESC telemetry and online flags are valid, while
actuator_functionis0for ESC 0-3.
Logs / pictures:

I can provide the full
voxl-version,voxl-inspect-services,px4-listener esc_statusoutput, and the MAVLink packet capture.Could you confirm whether
voxl_escshould populate eachesc_status.esc[i].actuator_functionfrom the configuredVOXL_ESC_FUNC1..4motor mapping, and provide or point me to a fix for the SDK 1.8 / PX4 1.18 package? -
-
Thanks for reporting this! A fix is has been pushed. You can find an updated voxl-px4 package here: http://voxl-packages.modalai.com/dists/qrb5165/dev/binary-arm64/voxl-px4_1.18.0-1.0.13-202610190909_arm64.deb
Reading along? Create a free ModalAI Forum account to join in.
With an account you can reply, ask your own question, get an email when a ModalAI engineer answers, and mark the reply that solved it. Your place in each thread is saved between visits.
Questions about VOXL, Flight Core, ESCs and ModalAI drones are answered here by the engineers who build them.
Register Login