Pixhawk 4, no BLHeli passthrough? Serial output jumbled?

I have been tearing my hair out (not really I’m bald) trying to get this to work.


I have tried different firmwares for my Pixhawk 4, I don’t believe it is the problem though. I cannot connect the Pixhawk even without the ESC’s connected to it. I don’t have an option for SERVO_BLH_AUTO like the ardupilot wiki says to set to 1 to enable passthrough. When I click connect, the BLHeli software just freezes on the first MSP_API_VERSION, send is ok, then RECV_MSP seems to be full of a TON of jumbled characters. It keeps receiving them which is why it seems to freeze. I can connect QGroundControl, and MissionPlanner, just fine.

I have set the SERVO_BLH_MASK to channels 1-8, I am only using 1 and 2 at the moment though.

I just flashed PX4 stable firmware onto the pixhawk with QGroundControl. I get the same thing with BLHeli. And now I have 0 SERVO_ options in the tree list. When I get home I will try another firmware, other than sub and PX4.

This is the last hurdle I have to figure out before my ROV is good to assemble! I don’t want to solder any of the wires in case I have a defective piece of electronics somewhere, so right now everything is alligator clipped together. I only have two ESC’s out of the 12 that will be connected eventually. I just need to change some settings on the ESC so that I can finish testing a new propeller design. Any help would be greatly appreciated.

No SERVO_BLH_AUTO parameter. Try setting SERVO_BLH_MASK for the output channels you are using. Set SERVO_BLH_OTYPE to the Dshot parameter you want (which is Dshot150). Assume you already set the Motor Type parameter.

Set the serial port back to default and don’t change this for any reason. Use 115200 from BLHeli Suite to connect. make sure power is applied to the ESC or it won’t read the setting and you can’t change them.

Forget about the Terminal in Mission Planner.it has no use.

I have no idea if this will work for BLHeli Passthru as Sub is on the fringe but worth a try.

What settings do you want to change?

1 Like

Thanks for the help,

I need to turn off braking on the ESC and I would like to adjust the timing of the motor as well since they will be running underwater and experience a lot more friction. Just a few small tweaks. I’m not using pre built thrusters I’m using my own with sealed motors and composite bearings. I can install a different firmware on the pixhawk 4 that is more stable in the meantime to program the ESCs, just not sure which one to use. The motors are definitely connected and the ESCs are as well they are doing the startup sequence sound when I power everything on. I am running them with a 12v gel battery until I finish spot welding my 4s battery packs.

I tried setting the mask to channel 1-8, I have the current ESC on 1 and 2. But I am reading other reports online that I should be able to connect with BLHeli without any ESC, it just won’t show them. I am not able to connect at all. I will double check my settings once I get home from work today and make sure they are all set to your recommendations.

Do you have to set “MOT_PWM_TYPE” to 5 (DSHOT150) I don’t know have never built a sub. But worth a look.

1 Like

I see. Install Arducopter on the FC for the programming stage then switch back to sub. Dshot has to be used which on that FC must be from the Aux outputs. So configure the motor outputs on Servo Chan 9 thru how many you have and connect them to those outputs. Set the Motor Type to Dshot150 (4 not 5). And enable Servo_blh_auto. Battery Power must be applied to the ESC to make the changes.

You may know already that bi-directional Dshot is not yet fully supported so when you switch back to Sub configure for PWM.

1 Like

Flashed Arducopter, put SERVO_BLH_AUTO to 1, motor type to Dshot150, and semi-success! I managed to connect the Pixhawk to BLHeli, however it is not recognizing my ESC’s, I believe I have them wired wrong or maybe configured wrong. Right now I am connecting the 10pin connector from the I/O PWM OUT on the pixhawk, to the I/O PWM IN on the PM07 power management board. The two ESC’s are connected to the M1 and M2 pads, which I just checked the continuity of and they do go to IO_CH1 and IO_CH2 on the I/O PWM OUT of the pixhawk.

These are my settings for SERVO_

Do I have to change something with the SERVO(X)_FUNCTION to get them to show up in BLHeli?

BLHeli now connects, then when I hit READ SETUP it gives me this:

Then after OK, it shows this:

I only have two motors connected currently.

As I said you can’t use the Main outputs on that FC you have to use the Aux outputs for Dhsot and configure the ServoX functions accordingly.

From the Wiki:
1. The 8 “MAIN” outputs of autopilots using an IOMCU (like PixHawk and Cube), cannot be used for protocols other than Normal PWM and OneShot. On these autopilots, only the additional “AUX” outputs can properly support OneShot125 and DShot protocols. If you attempt to set a “MAIN” output to DShot, then normal PWM output will occur, even though it has been set to a DShot protocol.

I thought that the I/O PWM OUT was the AUX outputs, and the FMU PWM OUT are the main, my mistake! Which ones are the aux outputs on the board? I guess that is the part I am confused about.

That PM07 is annoying if you ask me. Use the FMU outputs. Chan 1 is Aux1/Servo 9. You are getting close now :grinning:

I’m so close I can taste it!

I got ONE esc to connect. I don’t know what I changed that did it but it works. I just turned off the LED’s and figured out it is the one going to M1 on the PM07.

In the mean time I am just going to connect all of the ESC’s to the M1 signal one at a time because it works, and I won’t be doing this again haha.

I would like to be more familiar with how I did this because I am going to make a tutorial on the wiring, to help the next noob that comes after me. There is very little documentation on ArduSub using anything other than the original pixhawk, which I couldn’t find.This gave me a giant headache, and I still only managed to do it by fiddling with settings until something worked. And I still have lots to come!

Nevermind, I restarted the Pixhawk, checked the signal wire for second ESC, and it is showing up now.

For the BL_MASK, do I need to check Motor 1/2, or Motor 9/10? I checked both just to be sure but would like to know.

And seriously, thank you so much without you I would have never been able to figure this out. If you don’t mind sharing your email in a PM, I can email you something to show my appreciation!

Did you have the “I/O PWM IN” port on the PM07 connected to the Pixhawk-4 “I/O PWM OUT” or the “FMU PWM IN” respectively? Thanks.