Does BLHeli32 DShot and Passthru support work on I/O PWM OUT on Arducopter 4.0?

I am about to solder together my Tekko32 F3 ESCs to the power management board for my Pixhawk4 ( specifications here http://www.holybro.com/product/tekko32-f3-esc-35a/ and https://docs.px4.io/v1.9.0/en/assembly/quick_start_pixhawk4.html )

A year or two I had put together a similar configuration with Arducopter 3.6 and found that I needed to use the AUX out ports on the board which support FMU if I wanted to have DShot and Passthru support. Checking the page at https://ardupilot.org/copter/docs/common-blheli32-passthru.html I see there used to be a warning

DShot and BLHeli_32 features are currently only supported on the “FMU” outputs of your autopilot. Boards with IO coprocessors like :ref:Pixhawk <common-pixhawk-overview> and :ref:The Cube <common-thecube-overview> provide DShot and BLHeli_32 support only on the AUX OUT ports that are directly driven by the board’s main processor.

but that warning was removed on Feb 2, 2020 ( https://github.com/ArduPilot/ardupilot_wiki/commit/35faf235a4628b3dbb8f9faff88782738e697d4b )

Does this mean that if I wire my ESCs to the M1,M2,M3,M4 I/O PWM OUT signal pads on the Pixhawk 4 power supply board that I will be able to use BLHeli32 DShot and Passthru?

No. There has been some development work but nothing ready for prime time.

From the description on the PR, it sounds like the passthru functionality is not possible over the I/O PWM OUT signal pads because they are output only.

What will not work:

  • DSHOT600 and DSHOT 1200, padding must be checked
  • BlHeli pass through because of the hardware that is used (only output signals are possible)

Thanks for the info, I know how to proceed with my build now.

Regardless of Passthough functionality Dshot is not really working on the IOMCU either even with the version in the PR. At least that was my experience with a version complied for a Pixhawk. If it was working it would be front page news!

1 Like

I am glad to see others having the same issues. I went through the following You Tube and it didn’t work for me either. (140) BLHeli Passthrough config using ArduPilot - YouTube

That video is not what this thread is about. BLHeli_32 Pass thru and Dshot work fine with BlHeli_32 ESC’s when configured on the FMU outputs. This thread is about it working on the IOMCU outputs.

Hi, Thanks. But, if you don’t mind me ask, how do you configure the ESCs on the FMU outputs?! I saw the first question on top and got interested. I also have the Tekko32 ESC, which come with a “TX” pin. But, which port with “RX” on the Pixhawk-4 can be configured to accept that connection? Thanks a bunch.

By reading the Wiki.

https://ardupilot.org/copter/docs/common-blheli32-passthru.html

https://ardupilot.org/copter/docs/common-dshot-blheli32-telemetry.html

Hi, Thanks for the info., I am going over them again. Except I have a Pixhawk-4 and that is somewhat different. So, I am experimenting. I’ll let you know.

It’s not different. Same IOMCU (main outs) and FMU (Aux outs)

I see the Parameters set for all the BLH and SERVO and I have connected the Pixhawk-4 to the FMU/PWM OUT port to the PM07 power management Board FMU/PWM IN. However, it seems the “TX” pin on each ESC should be connected to a “RX” on one of the ports on the Pixhawk-4. I connected it to the UART & I2C B port pin#3. That is the only “RX” that made sense. But How to configure that in the Ardupilot?! Is that necessary for BLHeliSuite32 to see the ESCs?!
Here is what I get in the messages on the Ardupilot;
12/22/2020 6:11:17 PM : Frame: QUAD
12/22/2020 6:11:17 PM : RCOut: PWM:1-8 DS1200:9-12 PWM:13-16
12/22/2020 6:11:17 PM : fmuv5 001D0039 34385119 39313933
12/22/2020 6:11:17 PM : ChibiOS: d4fce84e
12/22/2020 6:11:17 PM : ArduCopter V4.0.5 (3f6b43e3)
12/22/2020 6:11:15 PM : Frame: QUAD
12/22/2020 6:11:15 PM : RCOut: PWM:1-8 DS1200:9-12 PWM:13-16
12/22/2020 6:11:15 PM : fmuv5 001D0039 34385119 39313933
12/22/2020 6:11:15 PM : ChibiOS: d4fce84e
12/22/2020 6:11:15 PM : ArduCopter V4.0.5 (3f6b43e3)

Thanks again.

1st Don’t use Dhsot1200. Start at Dshot150. Tie all of the ESC Tx wires together and connect them to an available UART Rx. Then set that UART protocol (Serialx_PROTOCOL) to ESC Telemetry (16).

The “TX” from each Motor is connected together and I connected them to the “RX” on the “UART & I2C B” port pin#3 on Pixhawk-4. Have not found the ESC Telemetry (16) yet. Below are the settings and the messages I have now. Thanks.

MOT_PWM_TYPE 4
SERVO_BLH_AUTO 1
SERVO_BLH_DEBUG 1
SERVO_BLH_MASK 64
SERVO_BLH_OTYPE 4
SERVO_BLH_POLES 14
SERVO_BLH_PORT 0
SERVO_BLH_REMASK 0
SERVO_BLH_TEST 0
SERVO_BLH_TMOUT 0
SERVO_BLH_TRATE 350

12/22/2020 10:00:18 PM : Frame: QUAD
12/22/2020 10:00:18 PM : RCOut: PWM:1-8 DS150:9-12 PWM:13-16
12/22/2020 10:00:18 PM : fmuv5 001D0039 34385119 39313933
12/22/2020 10:00:18 PM : ChibiOS: d4fce84e
12/22/2020 10:00:18 PM : ArduCopter V4.0.5 (3f6b43e3)
12/22/2020 10:00:17 PM : Frame: QUAD
12/22/2020 10:00:17 PM : RCOut: PWM:1-8 DS150:9-12 PWM:13-16
12/22/2020 10:00:17 PM : fmuv5 001D0039 34385119 39313933
12/22/2020 10:00:17 PM : ChibiOS: d4fce84e
12/22/2020 10:00:17 PM : ArduCopter V4.0.5 (3f6b43e3)

I don’t where you came up with those parameters.
Leave SERVO_BLH_AUTO at 1 and all else to default. You can’t run a telemetry rate of 350Hz (set it back to 10).

Are where are the Serial port parameters I said to set? The port you have connected to is Serial 4 which you will find in the configuration guide for that FC:

I set the UART to "ESC Telemetry Protocol, the “InvertRX” on Serial-4 and lowered the Servo_BLH_Trate to 10. The BLH_MASK is still there. The Servo9-12 are also set to Value 33-36 as well. Thanks again ;]

MOT_PWM_TYPE 4 0:Normal 1:OneShot 2:OneShot125 3:Brushed 4:DShot150 5:DShot300 6:DShot600 7:DShot1200
SERIAL4_BAUD 38 1:1200 2:2400 4:4800 9:9600 19:19200 38:38400 57:57600 111:111100 115:115200 230:230400 256:256000 460:460800 500:500000 921:921600 1500:1500000
SERIAL4_OPTIONS 1
SERIAL4_PROTOCOL 16 -1:None 1:MAVLink1 2:MAVLink2 3:Frsky D 4:Frsky SPort 5:GPS 7:Alexmos Gimbal Serial 8:SToRM32 Gimbal Serial 9:Rangefinder 10:FrSky SPort Passthrough (OpenTX) 11:Lidar360 13:Beacon 14:Volz servo out 15:SBus servo out 16:ESC Telemetry 17:Devo Telemetry 18:OpticalFlow 19:RobotisServo 20:NMEA Output 21:WindVane 22:SLCAN 23:RCIN 24:MegaSquirt EFI 25:LTM 26:RunCam 27:HottTelem 28:Scripting 29:Crossfire 30:Generator 31:Winch 32:MSP 33:DJI FPV 34:Sagetech
SERVO_BLH_AUTO 1 0:Disabled 1:Enabled
SERVO_BLH_DEBUG 1 0:Disabled 1:Enabled
SERVO_BLH_MASK 64
SERVO_BLH_OTYPE 4 0:None 1:OneShot 2:OneShot125 3:Brushed 4:DShot150 5:DShot300 6:DShot600 7:DShot1200
SERVO_BLH_POLES 14 1 127
SERVO_BLH_PORT 0 0:Console 1:Serial1 2:Serial2 3:Serial3 4:Serial4 5:Serial5
SERVO_BLH_REMASK 0
SERVO_BLH_TEST 0 0:Disabled 1:TestMotor1 2:TestMotor2 3:TestMotor3 4:TestMotor4 5:TestMotor5 6:TestMotor6 7:TestMotor7 8:TestMotor8
SERVO_BLH_TMOUT 0 s 0 300
SERVO_BLH_TRATE 10 Hz 0 500

Dave,
Now I am getting the following “Found no Valid ESC configuratiion” and lists “1-8” ESC, which is what the PM07 PDB supports. I don’t see aby way oof attaching files here, sO i’ll list the “Messages” file as well in case you see something that might help. Thanks.
12/28/2020 12:24:46 PM : ESC: Unlocked UART
12/28/2020 12:24:46 PM : ESC: OutB(9) 0x34 ack=0x00
12/28/2020 12:24:46 PM : ESC: cmd_InterfaceExit
12/28/2020 12:24:46 PM : ESC: BLHeli cmd 0x34 len=1
12/28/2020 12:24:46 PM : ESC: OutB(9) 0x35 ack=0x0F
12/28/2020 12:24:46 PM : ESC: cmd_DeviceReset(0)
12/28/2020 12:24:46 PM : ESC: BLHeli cmd 0x35 len=1
12/28/2020 12:24:09 PM : EKF2 IMU1 tilt alignment complete
12/28/2020 12:24:09 PM : EKF2 IMU0 tilt alignment complete
12/28/2020 12:24:09 PM : EKF primary changed:0
12/28/2020 12:24:07 PM : EKF2 IMU1 initial yaw alignment complete
12/28/2020 12:24:07 PM : EKF2 IMU0 initial yaw alignment complete
12/28/2020 12:24:07 PM : EKF2 IMU1 forced reset
12/28/2020 12:24:07 PM : EKF2 IMU0 forced reset
12/28/2020 12:24:02 PM : EKF primary changed:1
12/28/2020 12:24:02 PM : ESC: OutB(12) 0x37 ack=0x0F
12/28/2020 12:24:02 PM : ESC: short read
12/28/2020 12:24:02 PM : ESC: BL_ReadBuf 8 -> 0
12/28/2020 12:24:02 PM : ESC: BL_ConnectEx 7/8 at 10
12/28/2020 12:24:02 PM : ESC: cmd_DeviceInitFlash(7)
12/28/2020 12:24:02 PM : ESC: BLHeli cmd 0x37 len=1
12/28/2020 12:24:02 PM : ESC: OutB(9) 0x35 ack=0x00
12/28/2020 12:24:02 PM : ESC: cmd_DeviceReset(7)
12/28/2020 12:24:02 PM : ESC: BLHeli cmd 0x35 len=1
12/28/2020 12:24:02 PM : ESC: OutB(9) 0x31 ack=0x00
12/28/2020 12:24:02 PM : ESC: cmd_ProtocolGetVersion
12/28/2020 12:24:02 PM : ESC: BLHeli cmd 0x31 len=1
12/28/2020 12:24:02 PM : ESC: OutB(12) 0x37 ack=0x0F
12/28/2020 12:24:01 PM : ESC: short read
12/28/2020 12:24:01 PM : ESC: BL_ReadBuf 8 -> 0
12/28/2020 12:24:01 PM : ESC: BL_ConnectEx 6/8 at 9
12/28/2020 12:24:01 PM : ESC: cmd_DeviceInitFlash(6)
12/28/2020 12:24:01 PM : ESC: BLHeli cmd 0x37 len=1
12/28/2020 12:24:01 PM : ESC: OutB(9) 0x35 ack=0x00
12/28/2020 12:24:01 PM : ESC: cmd_DeviceReset(6)
12/28/2020 12:24:01 PM : ESC: BLHeli cmd 0x35 len=1
12/28/2020 12:24:01 PM : ESC: OutB(9) 0x31 ack=0x00
12/28/2020 12:24:01 PM : ESC: cmd_ProtocolGetVersion
12/28/2020 12:24:01 PM : ESC: BLHeli cmd 0x31 len=1
12/28/2020 12:24:01 PM : ESC: OutB(12) 0x37 ack=0x0F
12/28/2020 12:24:01 PM : ESC: short read
12/28/2020 12:24:01 PM : ESC: BL_ReadBuf 8 -> 0
12/28/2020 12:24:01 PM : Initialising APM
12/28/2020 12:24:01 PM : ESC: BL_ConnectEx 5/8 at 8
12/28/2020 12:24:01 PM : ESC: cmd_DeviceInitFlash(5)
12/28/2020 12:24:01 PM : ESC: BLHeli cmd 0x37 len=1
12/28/2020 12:24:01 PM : ESC: OutB(9) 0x35 ack=0x00
12/28/2020 12:24:01 PM : ESC: cmd_DeviceReset(5)
12/28/2020 12:24:01 PM : ESC: BLHeli cmd 0x35 len=1
12/28/2020 12:24:01 PM : ESC: OutB(9) 0x31 ack=0x00
12/28/2020 12:24:01 PM : ESC: cmd_ProtocolGetVersion
12/28/2020 12:24:01 PM : ESC: BLHeli cmd 0x31 len=1
12/28/2020 12:24:01 PM : ESC: OutB(12) 0x37 ack=0x0F
12/28/2020 12:24:01 PM : ESC: BL_ConnectEx 4/8 at 4
12/28/2020 12:24:01 PM : ESC: cmd_DeviceInitFlash(4)
12/28/2020 12:24:01 PM : ESC: BLHeli cmd 0x37 len=1
12/28/2020 12:24:01 PM : ESC: OutB(9) 0x35 ack=0x00
12/28/2020 12:24:00 PM : ESC: cmd_DeviceReset(4)
12/28/2020 12:24:00 PM : ESC: BLHeli cmd 0x35 len=1
12/28/2020 12:24:00 PM : ESC: OutB(9) 0x31 ack=0x00
12/28/2020 12:24:00 PM : ESC: cmd_ProtocolGetVersion
12/28/2020 12:24:00 PM : ESC: BLHeli cmd 0x31 len=1
12/28/2020 12:24:00 PM : ESC: OutB(12) 0x37 ack=0x0F
12/28/2020 12:24:00 PM : ESC: BL_ConnectEx 3/8 at 3
12/28/2020 12:24:00 PM : ESC: cmd_DeviceInitFlash(3)
12/28/2020 12:24:00 PM : ESC: BLHeli cmd 0x37 len=1
12/28/2020 12:24:00 PM : ESC: OutB(9) 0x35 ack=0x00
12/28/2020 12:24:00 PM : ESC: cmd_DeviceReset(3)
12/28/2020 12:24:00 PM : ESC: BLHeli cmd 0x35 len=1
12/28/2020 12:24:00 PM : ESC: OutB(9) 0x31 ack=0x00
12/28/2020 12:24:00 PM : ESC: cmd_ProtocolGetVersion
12/28/2020 12:24:00 PM : ESC: BLHeli cmd 0x31 len=1
12/28/2020 12:24:00 PM : ESC: OutB(12) 0x37 ack=0x0F
12/28/2020 12:24:00 PM : ESC: BL_ConnectEx 2/8 at 2
12/28/2020 12:24:00 PM : ESC: cmd_DeviceInitFlash(2)
12/28/2020 12:24:00 PM : ESC: BLHeli cmd 0x37 len=1
12/28/2020 12:24:00 PM : ESC: OutB(9) 0x35 ack=0x00
12/28/2020 12:24:00 PM : ESC: cmd_DeviceReset(2)
12/28/2020 12:24:00 PM : ESC: BLHeli cmd 0x35 len=1
12/28/2020 12:24:00 PM : ESC: OutB(9) 0x31 ack=0x00
12/28/2020 12:24:00 PM : ESC: cmd_ProtocolGetVersion
12/28/2020 12:24:00 PM : ESC: BLHeli cmd 0x31 len=1
12/28/2020 12:24:00 PM : ESC: OutB(12) 0x37 ack=0x0F
12/28/2020 12:24:00 PM : ESC: BL_ConnectEx 1/8 at 1
12/28/2020 12:24:00 PM : ESC: cmd_DeviceInitFlash(1)
12/28/2020 12:24:00 PM : ESC: BLHeli cmd 0x37 len=1
12/28/2020 12:24:00 PM : ESC: OutB(9) 0x35 ack=0x00
12/28/2020 12:24:00 PM : ESC: cmd_DeviceReset(1)
12/28/2020 12:24:00 PM : ESC: BLHeli cmd 0x35 len=1
12/28/2020 12:24:00 PM : ESC: OutB(9) 0x31 ack=0x00
12/28/2020 12:24:00 PM : ESC: cmd_ProtocolGetVersion
12/28/2020 12:24:00 PM : ESC: BLHeli cmd 0x31 len=1
12/28/2020 12:24:00 PM : ESC: OutB(12) 0x37 ack=0x0F
12/28/2020 12:24:00 PM : ESC: BL_ConnectEx 0/8 at 0
12/28/2020 12:24:00 PM : ESC: cmd_DeviceInitFlash(0)
12/28/2020 12:24:00 PM : ESC: BLHeli cmd 0x37 len=1
12/28/2020 12:23:59 PM : ESC: OutB(9) 0x35 ack=0x0F
12/28/2020 12:23:59 PM : ESC: cmd_DeviceReset(0)
12/28/2020 12:23:59 PM : ESC: BLHeli cmd 0x35 len=1
12/28/2020 12:23:59 PM : ESC: OutB(9) 0x31 ack=0x00
12/28/2020 12:23:59 PM : ESC: cmd_ProtocolGetVersion
12/28/2020 12:23:59 PM : ESC: BLHeli cmd 0x31 len=1
12/28/2020 12:23:59 PM : ESC: OutB(9) 0x3F ack=0x00
12/28/2020 12:23:59 PM : ESC: cmd_InterfaceSetMode(4)
12/28/2020 12:23:59 PM : ESC: BLHeli cmd 0x3F len=1
12/28/2020 12:23:59 PM : ESC: OutB(10) 0x33 ack=0x00
12/28/2020 12:23:59 PM : ESC: cmd_InterfaceGetVersion
12/28/2020 12:23:59 PM : ESC: BLHeli cmd 0x33 len=1
12/28/2020 12:23:59 PM : ESC: OutB(13) 0x32 ack=0x00
12/28/2020 12:23:59 PM : ESC: cmd_InterfaceGetName
12/28/2020 12:23:59 PM : ESC: BLHeli cmd 0x32 len=1
12/28/2020 12:23:59 PM : ESC: OutB(9) 0x31 ack=0x00
12/28/2020 12:23:59 PM : ESC: cmd_ProtocolGetVersion
12/28/2020 12:23:59 PM : ESC: BLHeli cmd 0x31 len=1
12/28/2020 12:23:59 PM : ESC: escMode=255 portIndex=0 num_motors=8
12/28/2020 12:23:59 PM : ESC: MSP_SET_4WAY_IF
12/28/2020 12:23:59 PM : ESC: MSP cmd 245 len=0
12/28/2020 12:23:59 PM : ESC: MSP_MOTOR
12/28/2020 12:23:59 PM : ESC: MSP cmd 104 len=0
12/28/2020 12:23:59 PM : ESC: MSP_MOTOR_CONFIG
12/28/2020 12:23:59 PM : ESC: MSP cmd 131 len=0
12/28/2020 12:23:59 PM : ESC: MSP_MOTOR_3D_CONFIG
12/28/2020 12:23:59 PM : ESC: MSP cmd 124 len=0
12/28/2020 12:23:59 PM : ESC: MSP_STATUS
12/28/2020 12:23:59 PM : ESC: MSP cmd 101 len=0
12/28/2020 12:23:59 PM : ESC: MSP_FEATURE_CONFIG
12/28/2020 12:23:59 PM : ESC: MSP cmd 36 len=0
12/28/2020 12:23:59 PM : ESC: MSP cmd 5 len=0
12/28/2020 12:23:59 PM : ESC: MSP_BOARD_INFO
12/28/2020 12:23:59 PM : ESC: MSP cmd 4 len=0
12/28/2020 12:23:59 PM : ESC: MSP_FC_VERSION
12/28/2020 12:23:59 PM : ESC: MSP cmd 3 len=0
12/28/2020 12:23:59 PM : ESC: MSP_FC_VARIANT
12/28/2020 12:23:59 PM : ESC: MSP cmd 2 len=0
12/28/2020 12:23:59 PM : ESC: MSP_API_VERSION
12/28/2020 12:23:59 PM : ESC: MSP cmd 1 len=0
12/28/2020 12:23:34 PM : RCOut: PWM:1-8 DS150:9-12 PWM:13-16
12/28/2020 12:23:34 PM : Frame: QUAD
12/28/2020 12:23:34 PM : ChibiOS: d4fce84e
12/28/2020 12:23:34 PM : fmuv5 001D0039 34385119 39313933
12/28/2020 12:23:34 PM : ArduCopter V4.0.5 (3f6b43e3)
12/28/2020 12:23:30 PM : Frame: QUAD
12/28/2020 12:23:30 PM : RCOut: PWM:1-8 DS150:9-12 PWM:13-16
12/28/2020 12:23:30 PM : fmuv5 001D0039 34385119 39313933
12/28/2020 12:23:30 PM : ChibiOS: d4fce84e
12/28/2020 12:23:30 PM : ArduCopter V4.0.5 (3f6b43e3) .

I finaly got this message showing up. But, I get it for all “8” Motor connections on the PM07.