People have long wanted dshot support on IOMCU (i.e. the first 8 channels of a CubeOrange for instance) - and it’s finally here!
However, I need some help testing. If you are feeling brave and want to try it out, here is what you do. There are two versions.
dshot for 6 channels. This version supports dshot on channels 1-2,5-8. The reasons why are long and boring, but supporting 6 channels is relatively doable in the current IOMCU firmware. To use it load up the firmware of your choice - here are builds for CubeOrange on copter and plane: Dropbox - iomcu-dshot - 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. Only dshot 150 and dshot 300 are supported. Dshot telemetry will work if you have the ESC telemetry wire connected to a UART We are now focusing on the 8-channel version
dshot for 8 channels. This version supports dshot on all channels 1-8. To use it load up the firmware of your choice - here are builds for CubeOrange on copter and plane: Dropbox - iomcu-dshot - 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. Only dshot 150 and dshot 300 are supported. Dshot telemetry will work if you have the ESC telemetry wire connected to a UART. This involved some major re-architecture of the iomcu firmware and so comes with a health warning - only try this version if you are feeling very lucky. I have now done some testing of dshot 300 on a 5" quad using this version and it works without issue.
The main version is now getting close to release and so is suitable for more people to try - it has already been flown on a fairly expensive VTOL.
If you want a build for something else, please let me know this has only been tested so far on a CubeOrange, CubeOrangePlus, CubeBlack, Pixhawk6X and there are builds for other Cubes and some other boards
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 or 5 for copter or Q_M_PWM_TYPE for plane
A big thanks to CubePilot who sponsored this work
Thanks in advance for your help!
UPDATE I have now done some fairly extensive testing of the 8-channel version using dshot 300 on a CubeBlack. All worked flawlessly, so I am feeling rather more confident about this now.
UPDATE2 Now working on f103 and builds for Pixhawk6X available
Hi Andrew,
There has been plenty of user duscussion around iomcu chanels vs fmu chanels,
I understand the assignments etc but some of us including me arent clear on the differences and why some are normally used for motors and others used for aux servos etc, why was it that DShot was only available on the other chanels and what had to be overcome to enable Dshot on iomcu?
The IOMCU is a separate processor to the regular FMU. It is an STM32F100. The first 8 channels are connected to the IOMCU. The next six channels are connected to the FMU. The FMU (e.g. STM32H743) has loads of memory, loads of flash and is very fast. The IOMCU has 64k flash, 8k memory and runs at 24Mhz. So the challenge is doing anything at all on the IOMCU that isn’t very simple. This has largely constrained the features that can be added. Back in the day the idea was that the IOMCU could keep running if the FMU failed or rebooted, but really that’s only applicable to plane now - and then only just. A copter will not continue to fly with just the IOMCU as all the stabilization control runs on the FMU.
Hello andyp1per,
What version of arduplane is this development on?
I’m using a Beerotor BS80 V2.0 with firmware Blheli_S with version: L_H_00 and I can’t get the motors to turn continuously when armed, they go to jumps.
The arduplane version is the stable 4.3.7(bdshot) for a TAILSITTER with Pixhawk V4.
I think I have all the parameters right:
Q_M_PWM_TYPE : 6 (Dshot600) I’ve tried 4 too.
SERVO_BLH_OTYPE: 6 (Dshot600) I’ve tried 4 too.
SERVO_BLH_MASK: 768 (Aux 9 and Aux 10)
SERVO_BLH_AUTO: 1
SERVO_DSHOT_ESC: 2 (BLHeli_S)
SERVO_DSHOT_RATE: 0 I’ve tried 1 too.
Thank you.
Raul