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!


The PR can be found here: