# VOXL2 + VOXL ESC FPV 4-in-1, voxl-suite 1.6.3 — battery_status never published

Source: https://forum.modalai.com/topic/5350/voxl2-voxl-esc-fpv-4-in-1-voxl-suite-1.6.3-battery_status-never-published
Category: General Questions (https://forum.modalai.com/category/2/general-questions)
Posted: 2026-07-28 05:19:03 UTC by nickanick
Replies: 26 · Views: 1036

## nickanick · 2026-07-28 05:19:03 UTC

esc_status is healthy: 4 ESCs online, esc_voltage 24.055 (6S pack). BAT1_SOURCE = ESCs, VOXL_ESC_PUB_BST enabled, POWER_MANAGER=none in /etc/modalai/voxl-px4.conf per its own comment ("use none for modalai mini-esc since the esc driver handles PM"). px4-listener battery_status 5 reports "never published" after a voxl-px4 restart and a full reboot. No esc_battery module in this build. QGC shows no battery, and the preflight reports -100%.

What publishes battery_status from ESC telemetry on 1.6.3? Is the ESC path supported on the FPV 4-in-1 (M0138), or only the mini ESC?

## Reply by Alex Kushleyev (ModalAI staff) · 2026-07-28 14:19:22 UTC

@nickanick ,

Here is some background..

The Mini ESC (M0129) and the FPV ESC (M0138) do not have individual channel current sensing (unlike M0134 ESC), so the individual ESC channel current is reported as 0, while each ESC channel still reports the measured voltage in the standard telemetry packet sent to the FC. For these two ESCs (M0129 and M0138), one of the ESC channels measures the total board current that flows through the ESC and sends out a second telemetry message with just voltage and total current. For M0129, the ESC channel 3 does this, and for M0138, channel 2 (0-indexed). 

The telemetry messages are sent from the ESC to the FC (VOXL2) via UART and is parsed in the PX4 in `voxl-esc` driver. In the `voxl-esc` driver, if the battery status telemetry message is received from the ESC and `VOXL_ESC_PUB_BST` is enabled, then the driver will publish the `battery_status` topic with the battery voltage and current from the ESC telemetry message.

In order to do a quick test to make sure the ESC is sending out the battery status, you can do the following:
- stop px4 : `systemctl stop voxl-px4`
- test the ESC using `voxl-esc` tools (note that these tools are not part of px4): 
```
cd /usr/share/modalai/voxl-esc-tools
./voxl-esc-spin.py --id 255 --power 0
```
Note that you will be running a spin test command (take off props for safety!), but the command is 0, so the motors will not spin, but you will see the telemetry from the ESC being printed in the terminal on voxl2. You will see***BOARD_VOLTAGE***  and ***BOARD_CURRENT*** being reported and that is coming from the extra telemetry message from the ESC. If you see this current printed, then the ESC is sending the correct information. 

The argument `--id 255` will tell the test script to communicate with all 4 ESC channels and the commands will be sent and telemetry requested from all 4 ESC channels (including the channel that sends back the battery status telemetry message).

Can you please check this?

```
voxl2:/usr/share/modalai/voxl-esc-tools$ ./voxl-esc-spin.py --id 255 --power 0
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00) 
[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 40: ModalAi 4-in-1 ESC (M0129-3)
	UID        : 0x2039333557555313000F0036
	Firmware   : version   39, hash 9c6233d6
	Bootloader : version  184, hash 10bf24c8

	ID         : 1
	Board      : version 40: ModalAi 4-in-1 ESC (M0129-3)
	UID        : 0x2039333557555313000F0032
	Firmware   : version   39, hash 9c6233d6
	Bootloader : version  184, hash 10bf24c8

	ID         : 2
	Board      : version 40: ModalAi 4-in-1 ESC (M0129-3)
	UID        : 0x2039333557555313000F0034
	Firmware   : version   39, hash 9c6233d6
	Bootloader : version  184, hash 10bf24c8

	ID         : 3
	Board      : version 40: ModalAi 4-in-1 ESC (M0129-3)
	UID        : 0x2039333557555313000F0038
	Firmware   : version   39, hash 9c6233d6
	Bootloader : version  184, hash 10bf24c8

---------------------

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.015] (0) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
[0.015] (1) RPM: 0, PWR: 0, VOLTAGE: 16.049V, TEMPERATURE: 38.24C, CURRENT: 0.000A
[0.015] (2) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
[0.015] (3) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
[0.036] (0) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
[0.036] (1) RPM: 0, PWR: 0, VOLTAGE: 16.049V, TEMPERATURE: 38.24C, CURRENT: 0.000A
[0.036] (2) RPM: 0, PWR: 0, VOLTAGE: 16.059V, TEMPERATURE: 38.85C, CURRENT: 0.000A
[0.036] (3) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
[0.059] (0) RPM: 0, PWR: 0, VOLTAGE: 16.039V, TEMPERATURE: 38.22C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.047V, BOARD_CURRENT: 0.240A
[0.059] (1) RPM: 0, PWR: 0, VOLTAGE: 16.049V, TEMPERATURE: 38.24C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.047V, BOARD_CURRENT: 0.240A
[0.059] (2) RPM: 0, PWR: 0, VOLTAGE: 16.059V, TEMPERATURE: 38.85C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.047V, BOARD_CURRENT: 0.240A
[0.059] (3) RPM: 0, PWR: 0, VOLTAGE: 16.047V, TEMPERATURE: 38.86C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.047V, BOARD_CURRENT: 0.240A
[0.075] (0) RPM: 0, PWR: 0, VOLTAGE: 16.039V, TEMPERATURE: 38.22C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.047V, BOARD_CURRENT: 0.240A
[0.075] (1) RPM: 0, PWR: 0, VOLTAGE: 16.049V, TEMPERATURE: 38.23C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.047V, BOARD_CURRENT: 0.240A
[0.075] (2) RPM: 0, PWR: 0, VOLTAGE: 16.065V, TEMPERATURE: 38.89C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.047V, BOARD_CURRENT: 0.240A
[0.075] (3) RPM: 0, PWR: 0, VOLTAGE: 16.047V, TEMPERATURE: 38.86C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.047V, BOARD_CURRENT: 0.240A
[0.101] (0) RPM: 0, PWR: 0, VOLTAGE: 16.044V, TEMPERATURE: 38.19C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.041V, BOARD_CURRENT: 0.232A
[0.101] (1) RPM: 0, PWR: 0, VOLTAGE: 16.049V, TEMPERATURE: 38.23C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.041V, BOARD_CURRENT: 0.232A
[0.101] (2) RPM: 0, PWR: 0, VOLTAGE: 16.065V, TEMPERATURE: 38.89C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.041V, BOARD_CURRENT: 0.232A
[0.101] (3) RPM: 0, PWR: 0, VOLTAGE: 16.041V, TEMPERATURE: 38.91C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.041V, BOARD_CURRENT: 0.232A
[0.119] (0) RPM: 0, PWR: 0, VOLTAGE: 16.044V, TEMPERATURE: 38.19C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.041V, BOARD_CURRENT: 0.232A
[0.119] (1) RPM: 0, PWR: 0, VOLTAGE: 16.054V, TEMPERATURE: 38.23C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.041V, BOARD_CURRENT: 0.232A
[0.119] (2) RPM: 0, PWR: 0, VOLTAGE: 16.060V, TEMPERATURE: 38.88C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.041V, BOARD_CURRENT: 0.232A
[0.119] (3) RPM: 0, PWR: 0, VOLTAGE: 16.041V, TEMPERATURE: 38.91C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.041V, BOARD_CURRENT: 0.232A
[0.137] (0) RPM: 0, PWR: 0, VOLTAGE: 16.044V, TEMPERATURE: 38.25C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.043V, BOARD_CURRENT: 0.248A
[0.137] (1) RPM: 0, PWR: 0, VOLTAGE: 16.049V, TEMPERATURE: 38.22C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.043V, BOARD_CURRENT: 0.248A
[0.137] (2) RPM: 0, PWR: 0, VOLTAGE: 16.060V, TEMPERATURE: 38.88C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.043V, BOARD_CURRENT: 0.248A
[0.137] (3) RPM: 0, PWR: 0, VOLTAGE: 16.043V, TEMPERATURE: 38.90C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.043V, BOARD_CURRENT: 0.248A
[0.156] (0) RPM: 0, PWR: 0, VOLTAGE: 16.044V, TEMPERATURE: 38.25C, CURRENT: 0.000A, BOARD_VOLTAGE: 16.043V, BOARD_CURRENT: 0.248A
```

## Reply by nickanick · 2026-07-28 18:32:01 UTC

Attached is the output for './voxl-esc-spin.py --id 255 --power 0'
![Screenshot 2026-07-28 113131.png](https://forum.modalai.com/assets/uploads/files/1785263512646-screenshot-2026-07-28-113131.png)

## Reply by nickanick · 2026-07-28 19:02:43 UTC

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 aad89d63

	ID         : 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

## Reply by nickanick · 2026-07-28 19:08:36 UTC

@alex-kushleyev  

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)?

## Reply by Eric Katzfey (ModalAI staff) · 2026-07-29 00:44:50 UTC

Can you provide a PX4 log file? If you cannot arm and fly the drone you can issue `px4-logger on` to start a log file. Then, after a few seconds, issue `px4-logger off' to close the log file.

## Reply by nickanick · 2026-07-29 04:38:56 UTC

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

## Reply by nickanick · 2026-07-29 04:40:11 UTC

Log taken with PX4 running, flight battery connected, ESCs energised, aircraft disarmed on the bench. battery_status was still unpublished during this window

## Reply by Eric Katzfey (ModalAI staff) · 2026-07-29 15:15:06 UTC

Can you share the log file?

## Reply by nickanick · 2026-07-29 15:20:24 UTC

@eric-katzfey The log is in #7. I am getting a privilege error when I try to attach the file in Quick reply.

## Reply by Eric Katzfey (ModalAI staff) · 2026-07-29 15:20:28 UTC

Also share the output.txt file after running this: `journalctl -u voxl-px4 -b --no-pager > output.txt`

## Reply by Eric Katzfey (ModalAI staff) · 2026-07-29 15:21:20 UTC

Can you upload the log file to https://review.px4.io/ and then send the link?

## Reply by nickanick · 2026-07-29 15:23:57 UTC

px4 log: https://review.px4.io/plot_app?log=31e428fe-d363-43c6-9cc3-236af2212533

Will post output.txt file shortly

## Reply by nickanick · 2026-07-29 15:30:17 UTC

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

## Reply by Eric Katzfey (ModalAI staff) · 2026-07-29 15:32:47 UTC

The forum won't let you attach it in your reply?

## Reply by nickanick · 2026-07-29 15:36:39 UTC

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

## Reply by Eric Katzfey (ModalAI staff) · 2026-07-29 15:39:05 UTC

Okay, shoot, let me see if we can get that fixed.

## Reply by Eric Katzfey (ModalAI staff) · 2026-07-29 15:42:54 UTC

I sent an email to the address you have linked to this account.

## Reply by nickanick · 2026-07-29 15:47:18 UTC

output.txt sent

## Reply by Eric Katzfey (ModalAI staff) · 2026-07-29 15:53:17 UTC

File: 
[output.txt](https://forum.modalai.com/assets/uploads/files/1785340394462-output.txt)

## Reply by Eric Katzfey (ModalAI staff) · 2026-07-29 16:23:04 UTC

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?

## Reply by Eric Katzfey (ModalAI staff) · 2026-07-29 16:28:21 UTC

I think you need to keep BAT1_SOURCE set to 0.

## Reply by nickanick · 2026-07-29 16:40:02 UTC

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

## Reply by nickanick · 2026-07-29 16:40:15 UTC

Thanks for your help

## Reply by Alex Kushleyev (ModalAI staff) · 2026-07-29 16:44:07 UTC

@nickanick , 

Now that the main issue is resolved.. i am confused why the following test command did not work for you : 
```
./voxl-esc-spin.py --id 255 --power 0
```

The screenshot you posted had the command cut off -- are you sure you used the correct command? 255 is a special value that should spin all 4 ESCs: https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-esc/-/blob/dev/voxl-esc-tools/voxl-esc-spin.py?ref_type=heads#L190

Can you check if the `voxl-esc-spin.py` script on your VOXL2 is the same as this file?

Thanks! 

Alex

## Reply by nickanick · 2026-07-29 18:47:12 UTC

That's weird. It's working now:

voxl2-test-fixture (TF-M0054):/usr/share/modalai/voxl-esc-tools$ ./voxl-esc-spin.py --id 255 --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 aad89d63

	ID         : 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] (0) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
[0.017] (1) RPM: 0, PWR: 0, VOLTAGE: 23.647V, TEMPERATURE: 37.39C, CURRENT: 0.000A
[0.017] (2) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
[0.017] (3) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
[0.035] (0) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.654V, BOARD_CURRENT: 0.016A
[0.035] (1) RPM: 0, PWR: 0, VOLTAGE: 23.647V, TEMPERATURE: 37.39C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.654V, BOARD_CURRENT: 0.016A
[0.035] (2) RPM: 0, PWR: 0, VOLTAGE: 23.654V, TEMPERATURE: 37.97C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.654V, BOARD_CURRENT: 0.016A
[0.035] (3) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.654V, BOARD_CURRENT: 0.016A
[0.058] (0) RPM: 0, PWR: 0, VOLTAGE: 23.652V, TEMPERATURE: 31.38C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.654V, BOARD_CURRENT: 0.016A
[0.058] (1) RPM: 0, PWR: 0, VOLTAGE: 23.647V, TEMPERATURE: 37.39C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.654V, BOARD_CURRENT: 0.016A
[0.058] (2) RPM: 0, PWR: 0, VOLTAGE: 23.654V, TEMPERATURE: 37.97C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.654V, BOARD_CURRENT: 0.016A
[0.058] (3) RPM: 0, PWR: 0, VOLTAGE: 23.593V, TEMPERATURE: 31.06C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.654V, BOARD_CURRENT: 0.016A
[0.074] (0) RPM: 0, PWR: 0, VOLTAGE: 23.652V, TEMPERATURE: 31.38C, CURRENT: 0.000A, BOARD_VOLTAGE: 23.656V, BOARD_CURRENT: -0.104A

## Reply by Alex Kushleyev (ModalAI staff) · 2026-07-29 18:54:00 UTC

OK, thanks for checking. maybe there was a typo before
