Fail to set Dshot on pixhawk 1

Hi all,

My hardware is : pixhawk 1 / Arducopter 4.07 / ChibiOS: d4fce84e

I’m trying to set my FC for managing some BLHeli S ESC but without success. Let me show you what I made :

ESC on AUX OUT 3 to 6 (two servos gimbal are connected on AUX 1 & 2)

Servo(9&10)_function : 7 & 8
Servo(11-14)_function : 33 to 36
Servo_BLH_otype : 4 (Dshot 150)
Servo_BLH_mask : 15360 (channel 11 to 14)
ServoBLH_auto : 1 (BLH pass through enable)

Result : the MP Messages terminal is always showing RCOut: PWM:1-12, never DS…something. I only see a 400 Hz pwm signal on AUX 3&4 with my oscilloscope. The gimbal is working properly.

If somebody has an idea, thanks in advance !


Hello, @Franck_fr May be you can look for the BRD_PWM_COUNT parameter and set it to 6, then you can set dshot to aux 1-4 and gimbal to 5-6
You must set the servo 9-12 to motor 1- 4 respectivly in mission planner. That works for me, i dont have a gimbal but i have a neopixel on aux 13-14.
Sorry for my bad english

Hi Jhon,
Thanks for your response, I’ve already set BRD_PWM_COUNT to 2 and zero but not 6. I will try soon. Did you also modify the other parameters (_otype, _mask, etc.) like me ?
Sorry for my bad English too ! :slight_smile:

Yes @Franck_fr , MOT_PWM_TYPE to dshot 600 in my case, and BLH_AUTO to 1, BLH_OTYPE same as mot pwm type

the BRD_PWM_COUNT is how many aux pins are used for pwm outout and not GPIO, by default 2 are reserved so by setting it to 6 it will use all the aux outputs for pwm.

Yes, it’s the reason why I tried 2 to keep the servos gimbal running. I don’t understand why does it work with 6 for Jhon ? I also believed we do not have to use together MOT_PWM_TYPE and mask/otype. Normaly, MOT_PWM_TYPE is for enforce a mode to all AUX together ? In my case I only want to set dshot on the last 4 AUX pins. So, where did I make something wrong ?..

@Jhon : are you sure your ESC are drived by dshot protocol, did you see DS… in RCOut message ? I heard that most of recent ESC are able to be drived by analog or digital signal, they auto detect the signal command when system starting

You must set all of the outputs in a group. On a pixhawk Aux1-4 are in one group and Aux5-6 in another so you will need to set dshot on all 6 outputs if you want to use only the last 4

Ah yes, I was just looking for groups in pixhawk, thanks a lot. But in my case I’m wondering if in this two groups of AUX pins I also have to set them as RC and not as simple IO with BRD_PWM_COUNT=6. It should be a reason why 6 for this parameter…

If yes with a different mask value I could control my four esc with dshot at AUX1 to 4 and my two servos with simple PWM at AUX5 and 6. Right ?

@Franck_fr yes, in my case i have in aux 5-6 a neopixel

And you could set motor 1-4 to servo 9-12

Thanks Jhon. I really have to check soon this setting :slight_smile:

@Franck_fr ok, im glad to help you!
…but if you Want to get esc telemetry with blheli_S, you need to upload a especific bdshot firmware for the pixhawk, in the firmware downlad Page isnt available, you must build that.follow the instructions for build the code on the wiki Page.
Im not sure but i think that!

1 Like

So, I succeded to get Dshot600 with my pixhawk, thanks to all of you :slight_smile:
Unfortunately now I’m acountering something strange : when I test a motor with the command made for this within Mission planner, the motor doesn’t turn and I only hear two beeps of 1s, one low and one high. As you can see in the picture below, the numerical signal seems to be at the right frequency and right length (16 bits), but the ESC respond at every test by this two beeps only… Last thing, beeps are produced only above 10 % of throttle. If someone has an idea ?

@Franck_fr do you have safety switch?
And do the the a accel and compass calibration?

Hi John,

Yes I have a safety switch and I turned it ON otherwise I get “Command was denied by the autopilot”
Yes compass and accel are calibrated because I already flew with this copter

Maybe should I check at a lower frequency for instance dshot150 ? Because this two tones seem to mean that the throttle is set to 0% which is wrong…

@Franck_fr and you set motor 1-4 to servo 9-12?
And the other parameters of blheli?
And conect the motor to aux 9-12
Blh auto
Blh pwm type?
Because i work with my pixhawk 1 with blheli s and blheli32
Bl heli with jazzmav and with bluejay firmware, and works fine.

Hi John,

set motor 1-4 to servo 9-12? Yes :
Servo(9-12)_function : 33 to 36
Servo(13-14)_function : 7 & 8

And the other parameters of blheli :
Servo_BLH_otype : 6 (Dshot 600)
Servo_BLH_mask : (channels 9 to 12)
Servo_BLH_auto : 1 (BLH pass through enable)
BRD_PWM_COUNT : 6 (Nb of pwm aux outputs)
MOT_PWM_TYPE : 6 (Dshot 600)

And conect the motor to aux 9-12 : Yes

@Franck_fr look at the parameter mot pwm type, set to 6, brd pwm count is for enable the 6 aux output, look at the parameter mot pwm máx 2000
And mot pwm min 1000

Hi John,

Your right, I had understood it was just a wrong copy and past… I’ve modified my last comment to share something good with all.

Ok I will check for the min and max


Hi John,

I succeeded to run my ESC ! It came from the frequency : I had to set Dshot 150 instead of 600 and all gone OK, I was able to test my motors !

But now I’m very annoyed because I think I made a big mistake few minutes after, I tried to upgrade my firmware to the last one. But it failed and now my usb port is not reconized at all when I hook the FC to my PC. I think I corrupted the bootloader or anything else. Do you have an idea ? Maybe do I have to post a new question in this forum ?

One more thing, I succeeded to connect MP to my FC through a FTDI module hooked to telemetry port 1, it’s better than nothing. Do you know a way to reactivate the USB ports ?