Bi-directional DShot on IOMCU - it's here!

In a follow-up to the dshot for IOMCU support that I did (DShot on IOMCU - it's here!) it is also possible to support bi-directional dshot on IOMCU - and I finally have this working!

However, again, I need some help testing. If you are feeling somewhat brave and want to try it out, here is what you do. The firmware supports bdshot on 4 channels - PWM1-4. The reasons why it can’t be 8 are long and boring. To use it load up the firmware of your choice - here are builds for Pixhawk6X and Pixhawk6C on copter and plane: Dropbox - iomcu-bdshot - Simplify your life - and then set: BRD_IO_DSHOT=1 You should then find your dshot configuration magically starts working. dshot commands - including tones and reversing - should also work. You can also use SERVO_DSHOT_ESC and SERVO_DSHOT_RATE to control these. To enabled bdshot set SERVO_BLH_BDMASK to 15 for the first four channels and make sure SERVO_BLH_TRATE is set to something reasonable.
I have done some testing of bdshot 600 on a 5" quad using this version and it works without issue. If you have EDT enabled ESCs you can enable EDT via SERVO_DSHOT_ESC and you will get additional telemetry from the ESCs.

How To Test

  • Get the latest version from Dropbox - iomcu-bdshot - Simplify your life
  • Load up the firmware, you should see a message about the IOMCU update being complete
  • Set BRD_IO_DSHOT = 1
  • Reboot, you should get another message about the IOMCU update being complete
  • Set MOT_PWM_TYPE to 4-6 for copter or Q_M_PWM_TYPE for plane

A big thanks to Holybro who sponsored this work

Thanks in advance for your help!

Andy

The PR can be found here:

5 Likes

This has now been merged and will appear in 4.5

1 Like

Andy,

I’m looking to use this on my EDU450 build with a Cube Orange. If I set DSHOT600, the PWM type reverts to RCOut: PWM:1-14. Seems I can only use DSHOT300 (RCOut: DS300:1-4 PWM:5-14).

Additionally, the RVMASK parameter seems inop on the IOMCU. I can confirm the firmware on the ESCs allowed reversing when it was previously connected to the AUX outputs.

I’m using a fresh copy of 4.5 beta2 - is the IOMCU BDSHOT and BlHeli32 command feature set missing from that build? I thought it was recent enough.

Or is the Cube Orange not supported for this? As far as I can see, it has the correct IOMCU processor.

Just backing that up, RVMASK didnt have any effect for 4.5 Beta1 when using DSHOT300 on Main outputs, Cube Orange.

1 Like

BDshot only works on F103 so you need Pixhawk 6X or 6C.

Dshot should work on its own on Cube.

Can you post your params?

According to The Cube Orange/+ With ADSB-In Overview — Copter documentation, Cube Orange has an STM32F103. Is that misleading?

Yes, DSHOT300 is working fine. Just no reversal command or BDSHOT.

Cube’s have level shifters by design so comms is only one-way - so only dshot supported

1 Like