VOXL2 + VOXL ESC FPV 4-in-1, voxl-suite 1.6.3 — battery_status never published
-
voxl2-test-fixture (TF-M0054):/usr/share/modalai/voxl-esc-tools$ ./voxl-esc-spin.py --id 2 --power 0
Detected Python version : 3.6.9 (default, May 22 2025, 20:54:22)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.9
VOXL Platform: M0054
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000
ID : 0
Board : version 42: ModalAi 4-in-1 ESC (M0138-1)
UID : 0x203837304848570400480052
Firmware : version 39, hash a58f5f6f
Bootloader : version 187, hash aad89d63ID : 1 Board : version 42: ModalAi 4-in-1 ESC (M0138-1) UID : 0x203837304848570400490045 Firmware : version 39, hash a58f5f6f Bootloader : version 187, hash aad89d63 ID : 2 Board : version 42: ModalAi 4-in-1 ESC (M0138-1) UID : 0x20383730484857040029004D Firmware : version 39, hash a58f5f6f Bootloader : version 187, hash aad89d63 ID : 3 Board : version 42: ModalAi 4-in-1 ESC (M0138-1) UID : 0x20383730484857040029004E Firmware : version 39, hash a58f5f6f Bootloader : version 187, hash aad89d63
WARNING:
This test requires motors to spin at high speeds with
propellers attached. Please ensure that appropriate
protective equipment is being worn at all times and
that the motor and propeller are adequately isolated
from all persons.For best results, please perform this test at the
nominal voltage for the battery used.Type "Yes" to continue: yes
[0.017] (2) RPM: 0, PWR: 0, VOLTAGE: 23.842V, TEMPERATURE: 37.47C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.842V, BOARD_CURRENT: -0.096A
[0.035] (2) RPM: 0, PWR: 0, VOLTAGE: 23.839V, TEMPERATURE: 37.47C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.839V, BOARD_CURRENT: -0.072A
[0.054] (2) RPM: 0, PWR: 0, VOLTAGE: 23.843V, TEMPERATURE: 37.48C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.843V, BOARD_CURRENT: -0.080A
[0.076] (2) RPM: 0, PWR: 0, VOLTAGE: 23.839V, TEMPERATURE: 37.49C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.839V, BOARD_CURRENT: -0.040A
[0.092] (2) RPM: 0, PWR: 0, VOLTAGE: 23.844V, TEMPERATURE: 37.47C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.844V, BOARD_CURRENT: -0.096A
[0.121] (2) RPM: 0, PWR: 0, VOLTAGE: 23.843V, TEMPERATURE: 37.46C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.843V, BOARD_CURRENT: -0.064A
[0.133] (2) RPM: 0, PWR: 0, VOLTAGE: 23.843V, TEMPERATURE: 37.44C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.843V, BOARD_CURRENT: -0.008A
[0.153] (2) RPM: 0, PWR: 0, VOLTAGE: 23.840V, TEMPERATURE: 37.46C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.840V, BOARD_CURRENT: -0.048A
[0.178] (2) RPM: 0, PWR: 0, VOLTAGE: 23.841V, TEMPERATURE: 37.45C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.841V, BOARD_CURRENT: -0.064A -
Result: --id 255 isn't supported by my voxl-esc-tools (bin version 1.9) — it scans, finds IDs 0–3, then exits with ERROR: Specified ESC ID not found. Running ./voxl-esc-spin.py --id 2 --power 0 works and I do see BOARD_VOLTAGE and BOARD_CURRENT printed. So the ESC is emitting the battery telemetry message correctly.
But PX4 still never publishes battery_status:
VOXL2 M0054, voxl-suite 1.6.3, 4× M0138-1 ESCs on firmware 39, tools 1.9
BAT1_SOURCE = ESCs, VOXL_ESC_PUB_BST enabled in QGC
POWER_MANAGER=none in /etc/modalai/voxl-px4.conf (was voxlpm; changed per the comment "use none for modalai mini-esc since the esc driver handles PM" — I have no voxlpm module, the ESC is my only sensing)
px4-listener battery_status 5 → "never published", after systemctl restart voxl-px4 and a full reboot
esc_status is healthy: 4 ESCs online, esc_voltage 24.055 (6S)Questions:
-
How do I verify VOXL_ESC_PUB_BST on the flight side? px4-qshell param show VOXL_ESC_PUB_BST doesn't return anything readable in my terminal, so I can't confirm the QGC write reached the DSP.
-
Does the voxl-esc driver poll ESC channel 2 for telemetry in my configuration? If its telemetry rotation depends on the motor mapping, could it be missing the one channel that sends the battery message?
-
Is POWER_MANAGER=none correct for the FPV 4-in-1 (M0138), or is that comment specific to the mini ESC (M0129)?
-
-
Can you provide a PX4 log file? If you cannot arm and fly the drone you can issue
px4-logger onto start a log file. Then, after a few seconds, issue `px4-logger off' to close the log file. -
Logging start time: 0:05:12, duration: 0:19:25
Dropouts: count: 2, total duration: 0.0 s, max: 2 ms, mean: 1 ms
Info Messages:
metadata_events_sha256: 1fc3f385e1b9dac83a6f070abbb44917a26ac8128817b0a74e5155aa3da40ed0
sys_name: PX4
sys_os_name: Linux
sys_os_ver_release: 68386303
sys_toolchain: GNU GCC
sys_toolchain_ver: 7.5.0
time_ref_utc: 0
ver_data_format: 1
ver_hw: MODALAI_VOXL2
ver_sw: 3e7db37f06278a7756531d926d8bac8a71c6555f
ver_sw_release: 17694720
ver_vendor_sw_release: 33588480
Info Multiple Messages: [excluded_optional_topics: 39], [metadata_events: 1], [perf_counter_postflight: 1], [perf_counter_preflight: 1]Name (multi id, message size in bytes) number of data points, total bytes
action_request (0, 11) 3 33
actuator_armed (0, 15) 34958 524370
actuator_controls_status_0 (0, 20) 2328 46560
actuator_motors (0, 66) 11652 769032
actuator_outputs (0, 76) 11653 885628
actuator_outputs_debug (0, 76) 328227 24945252
control_allocator_status (0, 52) 5827 303004
cpuload (0, 25) 2331 58275
cpuload (1, 25) 2331 58275
esc_status (0, 336) 232935 78266160
estimator_aid_src_baro_hgt (0, 52) 9183 477516
estimator_baro_bias (0, 40) 2326 93040
estimator_event_flags (0, 53) 1157 61321
estimator_gps_status (0, 39) 1165 45435
estimator_innovation_test_ratios (0, 152) 113035 17181320
estimator_innovation_variances (0, 152) 113042 17182384
estimator_innovations (0, 152) 113031 17180712
estimator_sensor_bias (0, 118) 2981 351758
estimator_states (0, 209) 1165 243485
estimator_status (0, 114) 5827 664278
estimator_status_flags (0, 91) 1158 105378
event (0, 40) 856 34240
failsafe_flags (0, 85) 2302 195670
failure_detector_status (0, 22) 11653 256366
home_position (0, 48) 89 4272
hover_thrust_estimate (0, 41) 11 451
input_rc (0, 71) 2330 165430
manual_control_setpoint (0, 63) 5827 367101
manual_control_switches (0, 31) 1163 36053
offboard_control_mode (0, 14) 11653 163142
parameter_update (0, 34) 3 102
rate_ctrl_status (0, 24) 5827 139848
rtl_time_estimate (0, 17) 1144 19448
sensor_accel (0, 44) 1165 51260
sensor_baro (0, 32) 1165 37280
sensor_combined (0, 48) 193109 9269232
sensor_gps (0, 124) 1165 144460
sensor_gyro (0, 44) 1165 51260
sensors_status_imu (0, 96) 5827 559392
takeoff_status (0, 13) 4 52
telemetry_status (0, 86) 1165 100190
telemetry_status (1, 86) 1165 100190
trajectory_setpoint (0, 64) 11 704
vehicle_acceleration (0, 28) 23304 652512
vehicle_air_data (0, 37) 5827 215599
vehicle_angular_velocity (0, 40) 58257 2330280
vehicle_attitude (0, 49) 23304 1141896
vehicle_attitude_setpoint (0, 54) 23304 1258416
vehicle_command_ack (0, 21) 2 42
vehicle_constraints (0, 17) 3 51
vehicle_control_mode (0, 21) 34958 734118
vehicle_gps_position (0, 124) 2330 288920
vehicle_imu (0, 56) 2330 130480
vehicle_imu_status (0, 132) 1165 153780
vehicle_land_detected (0, 20) 1165 23300
vehicle_local_position (0, 167) 11653 1946051
vehicle_local_position_setpoint (0, 64) 20 1280
vehicle_rates_setpoint (0, 33) 58258 1922514
vehicle_status (0, 66) 34958 2307228
vehicle_thrust_setpoint (0, 28) 58258 1631224
vehicle_torque_setpoint (0, 28) 58257 1631196
yaw_estimator_status (0, 105) 1165 122325 -
Log taken with PX4 running, flight battery connected, ESCs energised, aircraft disarmed on the bench. battery_status was still unpublished during this window
-
Can you share the log file?
-
@eric-katzfey The log is in #7. I am getting a privilege error when I try to attach the file in Quick reply.
-
Also share the output.txt file after running this:
journalctl -u voxl-px4 -b --no-pager > output.txt -
Can you upload the log file to https://review.px4.io/ and then send the link?
-
px4 log: https://review.px4.io/plot_app?log=31e428fe-d363-43c6-9cc3-236af2212533
Will post output.txt file shortly
-
Is there I way that I can share the output.txt file with you? https://review.px4.io/ doesn't take my output.txt file
-
The forum won't let you attach it in your reply?
-
Error
You do not have enough privileges for this action.
Also, the text is too long so I can't copy and paste the entire log here
-
Okay, shoot, let me see if we can get that fixed.
-
I sent an email to the address you have linked to this account.
-
output.txt sent
-
File:
output.txt -
This is what Codex says:
The root cause is a PX4 source-enum bug, not the ESC, baud rate, or VOXL_ESC_PUB_BST. - The supplied parameters select BAT1_SOURCE=2, meaning “ESCs”: /home/modalai/development/log_debug/no-batt-status/ vehicle.params:5. - But voxl_esc constructs its battery object as BATTERY_SOURCE_POWER_MODULE (0): src/drivers/actuators/voxl_esc/ voxl_esc.cpp:51. - The battery library publishes only when the driver’s source equals BAT1_SOURCE: src/lib/battery/battery.cpp:172. - Therefore 0 != 2, and every battery report is silently suppressed. This matches all the evidence: - VOXL_ESC_PUB_BST=1. - All four M0138 channels, including current-sensing ID 2, communicate at 2 Mbaud: /home/modalai/development/log_debug/no- batt-status/output.txt:279. - The flight log contains 232,935 healthy esc_status samples but no battery_status. - The forum test showed ID 2 reporting BOARD_VOLTAGE and BOARD_CURRENT, proving the ESC produces the special telemetry packet. This is the expected M0138 behavior documented in the ModalAI ESC FAQ (https://docs.modalai.com/voxl-escs/faq/). The proper code fix is one line: _battery(1, nullptr, _battery_report_interval, battery_status_s::BATTERY_SOURCE_ESCS) As an immediate workaround with the existing binary, set BAT1_SOURCE to Power Module (0), leave POWER_MANAGER=none, restart voxl-px4, and check: px4-listener battery_status 5 That should publish, although the resulting topic will incorrectly identify its source as a power module. The one-line source change is the permanent fix.Can you try setting that parameter and see if it works?
-
I think you need to keep BAT1_SOURCE set to 0.
-
BAT1_SOURCE set to POWER MODULE in QGC fixed the problem.
TOPIC: battery_status
battery_status
timestamp: 332496007 (0.011529 seconds ago)
voltage_v: 23.70500
voltage_filtered_v: 23.70641
current_a: -0.08000
current_filtered_a: -0.07003
current_average_a: 15.00000
discharged_mah: 0.00138
remaining: 0.70196
scale: 1.04008
time_remaining_s: 673.87732
temperature: nan
voltage_cell_v: [0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000]
max_cell_voltage_delta: 0.00000
custom_faults: 0
average_power: 0.00000
available_energy: 0.00000
full_charge_capacity_wh: 0.00000
remaining_capacity_wh: 0.00000
design_capacity: 0.00000
nominal_voltage: 0.00000
capacity: 4000
cycle_count: 0
average_time_to_empty: 0
serial_number: 0
manufacture_date: 0
state_of_health: 0
max_error: 0
interface_error: 0
faults: 0
average_time_to_full: 0
over_discharge_count: 0
connected: True
cell_count: 6
source: 0
priority: 0
id: 1
is_powering_off: False
is_required: False
warning: 0
mode: 0
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login