BLHeli_32 ESC works, but fails test and doesn't do bidirectional Dshot

I have a Matek H743 wing v2 running Ardupilot 4.1.7 ( MatekH743-bds firmware). I have a BLHeli_32 ESC (that is supposed to be Dshot 1200 capable) running version 32.83 plugged into S1 with the ESC telemetry plugged into Rx8.

I have the following settings:
SERVO_BLH_MASK=1
SERVO_BLH_OTYPE=5
SERVO_BLH_BDMASK=0

When the system boots up it shows this as expected: RCOut: DS300:1-2 PWM:3-13

I can arm the flight controller and in manual mode the motor is controlled by the TX throttle as you’d expect. I can also see the esc1_* items in the status

However, if I set SERVO_BLH_DEBUG=1 and SERVO_BLH_TEST=1, then I get the following:
4/8/2022 11:47:42 PM : ESC: Test FAILED
4/8/2022 11:47:42 PM : ESC: short read
4/8/2022 11:47:42 PM : ESC: BL_ReadBuf 8 → 0
4/8/2022 11:47:42 PM : ESC: BL_ConnectEx 0/1 at 0
4/8/2022 11:47:42 PM : ESC: short read
4/8/2022 11:47:42 PM : ESC: BL_ReadBuf 8 → 0
4/8/2022 11:47:42 PM : ESC: BL_ConnectEx 0/1 at 0
4/8/2022 11:47:42 PM : ESC: short read
4/8/2022 11:47:42 PM : ESC: BL_ReadBuf 8 → 0
4/8/2022 11:47:42 PM : ESC: BL_ConnectEx 0/1 at 0
4/8/2022 11:47:42 PM : ESC: short read
4/8/2022 11:47:42 PM : ESC: BL_ReadBuf 8 → 0
4/8/2022 11:47:42 PM : ESC: BL_ConnectEx 0/1 at 0
4/8/2022 11:47:42 PM : ESC: short read
4/8/2022 11:47:42 PM : ESC: BL_ReadBuf 8 → 0
4/8/2022 11:47:40 PM : Initialising ArduPilot
4/8/2022 11:47:40 PM : ESC: BL_ConnectEx 0/1 at 0
4/8/2022 11:47:40 PM : ESC: Running test on channel 0

Interestingly, after that it spits out a whole lot of logs like this:
4/8/2022 11:47:53 PM : AHRS: EKF3 active
4/8/2022 11:47:53 PM : AHRS: DCM active
4/8/2022 11:47:53 PM : AHRS: EKF3 active
4/8/2022 11:47:53 PM : AHRS: DCM active
and the ESC doesn’t work until I reboot the flight controller.

And if I set SERVO_BLH_BDMASK=1 then I cannot control the motor with the throttle. It just does nothing.

Anyone have any ideas?

I just setup my H743 Slim and I found the following parameters worked for me with the following hardware setup.

My ESCs (x4) do not have a telemetry channel but using BLHeli_32 I utilized the Bi-directional option.

Check if all your motors are assigned properly e.g.:
SERVO1_FUNCTION 33 (Motor 1)
SERVO2_FUNCTION 34 (Motor 2)

SERVO_BLH_AUTO 1 (BLHeli Passthrough)
MOT_PWM_TYPE 6 (DShot600)

SERVO_DSHOT_ESC 1
SERVO_BLH_POLES 14 (check your motors)
SERVO_BLH_BDMASK 3 (for 2 channels)
SERVO_BLH_MASK 3
SERVO_BLH_OTYPE 6 (DShot600)

SERVO_BLH_3DMASK 3 (If you going to use the 3D option) otherwise should be 0.

I hope you are still flying :slight_smile:

I did eventually sort it out, can’t remember what the issue was.

The plane is still flying, and I recently maidened a Nano Goblin with ArduPlane on a Matek F405-WMN.