BLHeli_32 ESC telemetry always reports zero with Pixhawk 6C (ArduPilot 4.6.3)

Hi all,

I’m trying to get BLHeli_32 ESC telemetry working on my quadcopter, but I’m receiving no telemetry data from any ESC.

Currently I see:

  • No ESC telemetry values in Mission Planner.

  • RPM = 0

  • Voltage = 0

  • Current = 0

  • Temperature = 0

  • No ESC telemetry appears during Motor Test.

I am wondering if I have missed a parameter or if there is anything else I should check.

Hardware

  • ArduPilot 4.6.3

  • Mission Planner

  • Holybro Pixhawk 6C

  • 4 × Skystars Talon 40A Slim BLHeli_32 ESC

Wiring

  • All four ESC telemetry (T) wires are connected in parallel.

  • The combined telemetry wire is connected to the RX pin of the GPS2 UART port.

  • GPS2 is configured as a normal UART for ESC telemetry.

Current settings


SERIAL4_PROTOCOL = 16
SERIAL4_BAUD = 115

SERVO_BLH_AUTO = 0
SERVO_BLH_MASK = 0
SERVO_BLH_TRATE = 10
SERVO_BLH_DEBUG = 0

MOT_PWM_TYPE = Normal PWM

Notes

  • All four motors spin normally during Mission Planner Motor Test.

  • ESC telemetry always remains zero.

  • The ESC manufacturer confirmed:

    • The T pad outputs standard BLHeli_32 telemetry.

    • Telemetry is enabled by default.

    • No BLHeliSuite32 configuration is required.

Has anyone successfully used BLHeli_32 UART telemetry with this ESC and ArduPilot?

Am I missing any configuration or parameter?

Thanks!

Yea, you are. But why use Serial telemetry? Flash the Bdshot firmware to the 6C and configure for Bdshot.

1 Like

Thanks for the suggestion.

My goal is not only to get RPM, but also to obtain the full ESC telemetry, such as voltage, current, temperature, and other available ESC data.

Does the Talon 40A BLHeli_32 support Extended DShot Telemetry (EDT), or does Bidirectional DShot only provide RPM?

If I switch to BDShot, can I still connect the ESC T (UART telemetry) pad to the flight controller to obtain the more detailed telemetry data?

I have actually been trying to use the standard BLHeli_32 UART telemetry (T pad connected to a Pixhawk UART RX), but I cannot receive any telemetry at all during Motor Test. All ESC telemetry values remain zero.

I’m trying to understand whether I should continue debugging the UART telemetry setup, or whether BDShot is the recommended approach for this ESC.

Voltage, current and temperature are available over BDShot extended telemetry.

This will never work on a serial port, it is not possible to combine Tx Lines in such simple way.

Actually it is possible, ESCs using telemetry wire put it in high impedance state when not transmitting and the FC is responsible for coordinating telemetry reads so they do not collide.

4 Likes

I don’t see how that can be done, since the ESC’s are independent. In an AM32 configuration I have used several serial ports for getting telemetry.
A different thing is representing averages.

On a working BLHeli32 ESC I think I had to explicitly enable serial telemetry (I think it was disabled by default). I have it on a FC not admitting DMA (no BDShot), so telemetry is needed. So execute BLHeli32 suite, check telemetry enabling, and try the ESC’s one by one.

FC sends telemetry request to one ESC at a time so the ESCs respond one at a time.

1 Like

Possibly in DShot signalling on the S wire. But he has SERVO_BLH_MASK = 0(I suppose conventional PDM pulses).

Configure for Bdshot extended telemetry first and see what data you have. It should be as @LupusTheCanine said but it depends on the firmware level of BLHeli_32, which is now fixed at whatever you have, and perhaps the ESC brand. I have single BLHeli_32 on V32.1 where all useful extended telemetry fields are available thru Bdshot.

You have to use DShot (telemetry over telemetry wire) or BDShot (telemetry over servo wire) to get telemetry from BLHeli ESCs. BDShot is preferable as it is sends telemetry at much higher rate.

If you have old version of BLHeli32 that doesn’t support extended telemetry you can look for AM32 (open source alternative to BLHeli32) target for your ESCs.

1 Like

Yes! You were right. Relevant code is in libraries/AP_BLHeli/AP_BLHeli.cpp
(void AP_BLHeli::log_bidir_telemetry(void))

which applies also to AM32. I suppose this needs disabling ESC’s telemetry and let the FC request it.

Related to this, in the past I had two independent ESC’s, but enough serial ports. I suppose 4in1 ESC’s do the union internally, and if you have independent ESC’s some easy soldering is required.