Help about using dshot on tail rotor

I am using a matek h743 mini flight control with 4.0.7 heli firmware. I have set SERVO_BLH_* correctly as I can boot output channels connected to main rotor and tail rotor ESCs respectively with dshot600 without setting tail channel to motor4. However, if I set it to motor4, both two channel fall back to normal PWM. So I guess some code about the heli tail covered the setting of output protocol.

Are you using the tail rotor as a fixed pitch, variable speed or variable pitch, constant speed set up? Can you post your parameters? Thanks!

I am using tail rotor as a fixed pitch, variable speed set up, so I set it to DDFP.
The servo setup is like this

The main rotor

and the tail rotor

Another strange thing: If I set mask to channel1 and channel2 and using dshot600, the min, max and trim will be set to 1000, 2000 and 1000 respectively whatever I set before rebooting. This doesn’t happen with normal PWM setting.

Hi @zlinaz,

I think the issue you’re hitting is described in the, Mixing ESC Protocols section of the dshot/BLheli setup. In short there are some hardware limitations which means different protocols can’t be setup on some adjacent outputs. You will probably find that if you separate the outputs used for the two protocols more it works. E.g. use DShot/BLheli on outputs 1 and 2 and regular PWM on 5, 6 etc.

Re the min, max and trim being set automatically, this is expected behaviour (perhaps it should be mentioned on the wiki) but it has to do with how the low level outputs are sent to the ESCs. hopefully it doesn’t interfere with your setup.

Hi @rmackay9

I read this section, so I masked channel 1 and channel 2 as they are of group 1 (as mentioned in matek h743 mini). And the output of three servos for swashplate are set to channel 7, 8 and 9 respectively. Thus, I don’t think it’s the problem of adjacent output. Besides, if I set channel 2 to HeliTailRSC, HeliRSC or disabled, the both channel will be initialized to dshot600 whereas setting motor4 leads to PWM outputs with min, max and trim automatically set to 1000, 2000 and 1000.

@zlinaz,

I wonder how do you feel about giving Copter-4.1.0-beta5 a try? Even if you don’t actually fly it it would be useful to know if the issue is fixed or not. @andyp1per has done a lot of work on the dshot/blheli support for 4.1.

@rmackay9
I installed Copter-heli-4.1.0-beta5. Dshot did coexist with motor4 on channel2 while this flight control fail to initialize just as described in h7-autopilot-will-not-initialize with some other parameters changed such as SERVO_RATE, SERVO_BLH_TRATE and SERIAL5 for ESC telemetry. These parameters works on their own whereas cause a failure with dshot. The controller I am using is matek h743 mini, and the same problem occurs on matek h743 slim as they share same firmware.

In addition, BLHeli passthrough doesn’t work under copter-4.1.0-beta5. And another strange thing, the ardupilot creates two new COM ports.

@rmackay9 I just learn today that if you use the beta 5 or above and setting any serial with ESC telemetry it will brick the Mateksys H743, and fail to initialize. You can reproduce this issue many times. Just set the blh mask parameter and enable any serial for ESC telemetry and your board wont boot anymore. You have to full flash erase and download again the FW. To use the Dshot and Telematry, I end up upgradng the Bootloader to the latest with bdshot and downloading the 4.0.7 stable version.

Same thing happens here. But I need beta 5 features since it supports assigning rpm from telemetry to rpm sensor reading for internal governor.

@Pedro_Claro,

That’s no good! FYI @andyp1per.

I’ve added this to our 4.1 issues as well.

Which Firmware target? I have a Matek H743-Mini using 4.1.0-dev Bdshot with ESC Telemetry configured on Serial 5 and it’s been running fine for some time now.

Sorry, never mind, running Copter not Trade Heli, so perhaps not relevant.

Please can you tell me exactly what parameters you set - and to what- to provoke this?

Hi @andyp1per I have a Mateksys H743-Wing and I flash the latest bootloader (bdshot version) and download the Heli4.1.0 beta 5. Everything works fine until you set SERVO_BLH_MASK=3; SERVO_BLH_OTYPE=4 and any SERIALx_PROTOCOL ( ex: serial1_protocol=16) to enable ESC Telemetry. The moment you set it, the board is not able to boot anymore. I have to mass erase the flash + download the all_zeros.bin + download the latest bootloader again. I was able to reproduce this many times.
@zlinaz you are right I was also looking for the same feature, in fact bought this fligh controller (2MB Flash) specially to enable the internal governor.) In the mean time I step back to the 4.0.7 but the ESC Telemetry is not running…

What do you have SERVO_BLH_* set to and what do you have MOT_* set to?

I edited my reply :slight_smile:
SERVO_BLH_MASK=3 and SERVO_BLH_OTYPE=4
What do you mean with MOT_??

And the rest of the SERVO_BLH_* parameters? And MOT_*?

Test beta5.param (19.8 KB)

Just reproduced right now. Downloaded the Heli Beta5 + Reset Parameters to default+ SERVO_BLH_MASK=3 + SERVO_BLH_OTYPE=4 + SERIAL1_PROTOCOL=16 + Reboot, Thats it! No more Booting!! :slight_smile:

1 Like

Are you able to try https://github.com/ArduPilot/ardupilot/pull/18030 to see if it fixes things?

Here is a dev build with it in:

arducopter-heli.zip (1015.5 KB)