BLHeli_32 Passthrough Not working

I have 4x BLHeli_32 ESCs on my quadcopter. They work fine with “Normal” PWM servo output. Each ESC just has its ground and signal connections wired up (telemetry is NOT connected). These servo connectors go to Pixhawk “MAIN” outputs 1-4.

So far so good.

I would like to configure these so I downloaded the BLHeli32 software.

  • I set MOT_PWM_TYPE to DShot150
  • I set SERVO_BLH_AUTO to 1
  • I moved one of the servo connectors that was on “MAIN” 1 to “AUX” 1.

I rebooted the Pixhawk. I ran the BLHeli32 software and it says:

“Rebooting flight controller”

then

“Connection to Flightcontroller failed! Please chek usb/serial Port- und power-connections to the Interface!”

Anyone have any ideas what I am doing wrong? Thank you.

BTW, SERVO_BLH_PORT is set to “Console” and I am connected to the Pixhawk with my PC using the USB connection.

Immediate problem seems to be that I have:

“RCOut: PWM 1-12” in my MP messages. I cannot see anything about Dshot so I need to fix this first.

Should I have modified SERVOx_FUNCTION?

@arduouspilot You have to connect the ESCs to the AUX OUT 1-4 in order to use DSHOT. The Pixhawk Main ports are not DSHOT compatible.
Moreover you have to set the following parameters to get DSHOT and passthrough work on the Pixhawk hardware:

MOT_PWM_TYPE - 4 (DSHOT 150)
SERVO_BLH_OTYPE - 4 (DSHOT 150)
SERVO_BLH_MASK - 3840 (Bit 9,10,11,12 maps aux out 1,2,3,4)
SERVO_BLH_AUTO - 1 (enable blheli pass through)
(SERIAL5_PROTOCOL - 16 (enable esc telemetry))
(BATT2_MONITOR - 9 (read voltage and current from esc telemetry))

SERVO1_FUNCTION - 0 (Disable motor mapping to main ports)
SERVO2_FUNCTION - 0 (Disable)
SERVO3_FUNCTION - 0 (Disable)
SERVO4_FUNCTION - 0 (Disable)

This mapping may be wrong in you setup. It means front right is connected to Servo9 AKA AUX OUT1. You can remap the motors by reconnecting or by changing this numbers. On my Copter it is like this:

SERVO9_FUNCTION - 33 (aka “motor1”, front-right)
SERVO10_FUNCTION - 34 (aka “motor2”, back-left)
SERVO11_FUNCTION - 36 (aka “motor3”, front-left)
SERVO12_FUNCTION - 35 (aka “motor4”, back-right)

…And yes it took a while until I got this setup working… :grinning:

2 Likes

Sir.

You are an absolute hero!

A thousand thanks and internet £££ to you. Thank you so much.

nice to hear that I could help you :+1:

1 Like

I’ll update the wiki with this information I think. See if my push request is accepted.

You don’t typically need the mask if this is all you are trying to accomplish. If MOT_PWM_TYPE is set to a Dshot protocol on the Pixhawk the Aux outputs will be configured for Dshot.

And the existing Wiki has a decent explanation of the IOMCU and Dshot I think.

Example from the Pixhawk sitting on my bench:
Dshot

Hmmm - as far as I remember it didn’t work without setting the SERVO_BLH_MASK on a fmuv2 hardware but I am not sure.

This is an old 1M Pixhawk version hence the Pixhawk 1-1M firmware.

I’ll copy your settings later today and also give a screenshot.

As I couldn’t believe I made a short test and - yes you are right it works without setting the SERVO_BLH_MASK to 3840!
Thanks for the info :+1:

I think the problem here as I posted in the other thread is if you don’t have motors assigned to the Aux outputs the Banner message will read all 12 are PWM. So some have set the MOT_PWM_TYPE to Dshot, not assigned a motor to an Aux channel and see the message and think it’s not working. In my test I assigned only one motor to SERVO9 and that’s all it took.

1 Like

You are right, I did not change the function of any of my motors which was my mistake.

In summary, to get BLHeli passthrough working, starting from a normal PWM setup, the following must be done:

MOT_PWM_TYPE - DShot150
SERVO_BLH_AUTO - 1
SERVO1_FUNCTION - disabled
SERVO2_FUNCTION - disabled
SERVO3_FUNCTION - disabled
SERVO4_FUNCTION - disabled
SERVO9_FUNCTION - motor1
SERVO10_FUNCTION - motor2
SERVO11_FUNCTION - motor3
SERVO12_FUNCTION - motor4

Not forgetting to change the servo connectors from the MAIN 1-4 to AUX 1-4.

@Arne-W, hello.

I have similar issue: pass-through not working (ESC not detects), BUT motor test from Mission Planer and BLHeliSuite32 can spin motors.

I’m using PixHawk Lite (FMUv2). RCOut 9-12 is DS150, Ardupilot version is 4.0.7, BLHeli is 32.8 (I may reach ESC and update firmware via Arduino nano).
SERVO*_FUNCTION, MOT_PWM_TYPE SERVO_BLH_AUTO configured like you said.
SERVO_BLH_MASK and SERVO_BLH_OTYPE is no affect.

@Arne-W , @dkemxr ,
I have checked several times that the Passthrough works only if I set SERVO_BLH_MASK to 3840… But the problem is I can not get Telemetry data from each esc. I have tried using SERIAL2_PROTOCOL :16, then connect my Pixhawk4 using USB to PC, and it worked, I got complete Telemetry data from each esc, and also from Batt2_monitor: 9. However when I use radio connection from FC to my notebook, I only get Batt2_Monitor data (total Voltage and total current), But no Telemetry data from ESC !!
Anybody can help?? Tks…

Telemetry is a different problem to this thread. I suggest creating a new thread to ask for help.

Update for my setup: it works fine at b4.1 + 32.8 BLHeli