Servers by jDrones

BLHeli32 ESC telemetry setup - how?


i am in the process of soldering in blheli32 ESCs. only 1 esc is soldered so far - motor 2. it spins fine, on dshot600.
i have connected the telemetry wire but it does not seem to be showing anything.

log has messages:
ESC: ESC: 4 motors mask=0x000F
ESC: BLHeli installed on port 0
and then non stop -
“ESC: Bad CRC on 3”.

i set serial speed to 115. not sure if that matters. wiki says to set some servo_bhl_ params but not very clear.
the servo_bhl_mask i left at 0 - as i have no clue what it should be set to.
bhl_auto to 1, bhl_debug to 1, bhl_trate to 10. what else is needed?

what can be done to check if telemetry works? MP is not showing anything. or does it want all ESCs to be soldered in in order for this thing to work?

it is all on chibios - i presume it should work and was tested?

1 Like

so, it is confusing.
i got blhelisuite32- it communicates with esc perfectly fine. i was able to alter its setup, light up LED - all works.

MP still shows to ESC telemetry. not sure why but will keep soldering rest of those ESCs on. it is quite cool new tech, i never had to play with blheli32 before.

what i meant - i open MP, go to status window and in there i see all those esc_* values and they all are 0 - nothing changes. so odd. i would presume all those escX_params were supposed to have values?

pass-through configuration worked fine - so the hardware is connected properly. why there is no telemetry?


also confusing - messages does not print esc debug stuff anymore:
u-blox 1 HW: 00080000 SW: EXT CORE 3.01 (107900)
PreArm: Throttle below Failsafe
EKF3 IMU0 tilt alignment complete
EKF3 IMU0 initial yaw alignment complete
EKF3 IMU0 initialised
EKF3 IMU0 buffers, IMU=11 , OBS=4 , dt=0.0120
EKF3 waiting for GPS config data
GPS 1: detected as u-blox at 115200 baud
Barometer calibration complete
Initialising APM
Calibrating barometer

it had before those 2 lines:
ESC: ESC: 4 motors mask=0x000F
ESC: BLHeli installed on port 0

i did not alter anything. why is it gone now?

I’m not particularly experienced with BLHeli32 support code-wise, but I have done some testing, and have worked past my own missteps to arrive at working telemetry.

BLHeliSuite32 appears to only use the signal line (Not the Telemetry line) in a special half-duplex mode. This is likely why it needs to be on the Aux channels. In other words, having the BLHeliSuite32 working and communicating properly does not imply that telemetry is necessarily working (or even connected properly).

The Serialx_protocol for the FC port you’re using (GPS 1, Telem1, etc.) needs to be set properly - the baud rate will be configured (overridden, I believe) automatically, so you needn’t worry about the value you’ve entered.

Some additional questions:
Which ESC are you using?
Which Flight Controller are you using?
Are you able to save and post the .param file for your configuration?
Which serial port’s RX pin is connected to the TX (Telemetry) of the ESC? This doubles as a wiring check.

Hi, it is not a standard FC, it is kakute f7 on chibios. Telemetry line is connected to rx pin of an uart7, uart is correct and is operational. I will post param file later. Esc is a holibro f3. Serial port i set to 115k, mode 16. I saw no references of what it should have been set to.

Like i stated before, passthrough is working fine.

rooster_9_17.param (19.1 KB)

params file.

here is a link to ESC:

so, there was a bad solder of a signal wire and rx line was on ground.

i re-soldered, and now i see a bunch of bad crc errors thrown:

ESC: Bad CRC on 3
ESC: Bad CRC on 2
ESC: Bad CRC on 2
ESC: Bad CRC on 3
ESC: Bad CRC on 2
ESC: Bad CRC on 0
ESC: Bad CRC on 3
ESC: Bad CRC on 2

GPS 1: detected as u-blox at 115200 baud
ESC: Bad CRC on 1
Barometer calibration complete
Initialising APM
Calibrating barometer
finished motor test
Initialising APM
starting motor test
PreArm: Throttle below Failsafe
PreArm: Throttle below Failsafe
Frame: QUAD
KakuteF7 00410023 34345117 39383339

i also noted that SERIAL5_BAUD for some reason was automatically altered to the value 115200.
it probably was supposed to be 115? go figure.

All signal wires are made from coax antennas, with a grounded shield, so signal should be clear.

The other thing I can think of is whether the input needs to be inverted . . . The Kakute F7 supports hardware UART inversion, but I don’t know how to configure that from ArduPilot.

i am not sure. i did not think this esc stream was actually inverted. go figure. do you have it working on the chibios or nuttx?

hi, could anybody comment or explain how to use logic analyzer to troubleshoot this esc telemetry signal?
how is it supposed to look like? a screenshot would help.

I had it working on the ChibiOS version.

As for the signal analysis, I’m not familiar enough with the encoding of telemetry to distinguish inverted from un-inverted (It would look visually like a subtle difference aside from any preambles).

What I would try is changing UARTs to one more mainstream. I would also try just one ESC on said UART, and disable UART7 while setting the function for the new one.

uart7 is not possible to alter due to the layout and all soldering done.
i tested it before this work was done with a gps unit on it. all worked. uart config and hardware is operational.

I experienced the bad CRC message months ago when I was on an older version of the blheli 32 firmware. Upgrading in July to the latest firmware eliminated that error message for me. I am using a single ESC on a Matek f405-wing. The only place I saw evidence of ESC telemetry was in DF logs and in the OSD.

that is what i see when i read the esc status. is it a last version? or same one you use?
hmm. bhheli suite i started says in its header - should i try to flash it, or, is it even relevant, if current version in the ESCs is 32.4?

so, i tried to flash 32.6 into those esc. it went in ok. motors worked ok.
but, it is either a bug or who knows what it is - the leds on those escs stopped working - in the config utility it would light them up ok when you save settings, but after reboot leds would not light up anymore. as i got those ESCs specifically for those LEDs - it had to go, this 32.6 version.

also, CRC errors did not go away from MP and telemetry did not appear.
so, i for now disabled it onuart, i guess it is not something that may/will work reliably. tested uart again as well with gps just to prove my sanity.

so it is back to 32.4 with working leds and no telemetry. if anybody else will have those escs - pls let me know what the hell it wants in order to work ok.

Do you have a Matek FC (supported by ChibiOS) available as a bench test on one of those ESCs? On a low-numbered UART? That’s what I would try next.

I think I have a similar problem.
Got an “Omnibus F4 Nano V6” FC with a “Ori32 25A 4in1” ESC.
They are connected with the “4in1 socket” which also connects ESC telemetry TX-wire to UART4.

I activated UART4 in “OmnibusNanoV6/hwdef.h” and compiled Copter-3.6-RC12 branch.


Configuration in Mission Planner


UART4 seems to be mapped to Serial2:

SERIAL2_BAUD,115 (If I verify later parameter is changed automatically to “115200”! Is this correct?)

Battery monitor set to BLHeli ESC


Then I get readings in Mission Planner Status-Tab for “battery_voltage” and “current”.
“battery_voltage” shows correct voltage.
“current” is way too low. I guess it shows only the current from one ESC.
The “esc*” readings are all zero!
There are no ESC messages in Mission Planner Messages-Tab.

The ESC are running version 32.4.

Any idea how to get the “esc*” readings and correct current?

if you have such a capability - can you pls try flashing betaflight to your omnibus to confirm if it will read correctly esc data in the power options tab?

1 Like

I have BLHeli32 working with a PixHawk and a SPEDIX 4in1 40A. I am getting some bad CRC messages with latest BLHeli - no observble impact.

I only get telemetry from BLHeli when I am connected to the AP via the USB port, none over the serial TELEM1 interface.
I am uploading a digital scope capture of the signal out for 1 channel.

BLHeli32 on scope

i forgot to give an update here. whole thing was a case of a mistaken diagnosis. i have concluded that i had no working telemetry based on the fact that an MP ‘status’ screen was showing nothing for ‘esc_xxxx’ fields. i presumed if ESC telemetry works - MP will show it. it was wrong. CRC messages are only shown if debug option is on in the SERVO. removing it suppresses those CRC errors. it is a problem in blheli code.

MP shows nothing in status screen - it is a problem in MP code.

ESC telemetry worked all along - a dataflash log did show me ESC 1,2,3,4 sections populated. and it should work in OSD too, but i did not check yet. but, as log shows it - it works.

1 Like
Servers by jDrones