Pixhawk - ability to do Dshot without Aux ports

I’ve not had the chance to use a Pixhawk product - all of my ArduPilot work has been with an Orange Cube.

I was speaking with a development team today who does use the latest Holybro Pixhawk products and the subject of Dshot came up.

On the Cube carrier boards, Dshot has to be connected to Aux ports. But as the Pixhawks don’t have these, I was wondering if perhaps the “main” ports on the Pixhawk products were different than the “main” ports on the Cube products - allowing the assignment of Dshot connections to “main” ports on a Holybro Pixhawk product.

I found this post from about 2 years ago that seems to imply that Dshot works on the Pixhawk “main” ports.

Can someone please clarify this subject for me - and maybe point me to documentation that describes the differences (if any) in the Main and Aux ports between Cube and Pixhawk products?

Thank you!

1 Like

The original pixhawk has aux ports, same as the cubes.

1 Like

Thank you @geofrancis - I’m admittedly under-educated about the traditional Pixhawk products and architecture.

The team I was speaking with is using the Holybro Pixhawk-4 and Pixhawk-6C. Both these have a port labeled FMU PWM OUT and I/O PWM OUT.

Would I be correct in guessing that the FMU PWM OUT is the same as the MAIN OUT on the Cube, and that I/O PWM OUT is the same as AUX OUT on the Cube?

I recall reading that on the Cube the MAIN OUT ports operate at a higher/different frequency than the AUX OUT port - and as such make them unsuitable for connections to servos. Does this sound about right?

Also - I recall reading that the PWM frequencies can be set by parameters - but I can’t remember if that’s for both MAIN and AUX ports.

Lastly - the Cube’s use of Aux-5 and Aux-6 as relays, typically used for camera shutters - is there something equivalent to this on the Pixhawk Aux ports?

I apologize for asking such rudimentary questions - and appreciate your kind response.

I just found this - which answers my questions. Thank you for your patience.

You can use any of the pwm or aux pins for relays since 4.2. Buttons and dshot are limited to the aux pins.

Thank you - I thought the relay function has a hardware element to it.

Since 4.2 you can set any output to GPIO by setting it to function -1.

1 Like

That’s very helpful regarding the GPIO - I should have read the 4.2 release notes more carefully.

I’ve just implemented my first 4-in-1 ESC running BLHeli32 - and using Dshot - with an Orange Cube.

The issue with the Orange Cube’s inability to perform “passthrough” on Aux-1 - is a nuisance - but manageable. When I need to use passthrough for BLHeliSuite32 I simply move motor-1 from Aux-1 to Aux-5 and remap the servo parameters. BLHeliSuite32 then finds all ESC’s just fine.

I asked if I could simply use Aux-2 through Aux-5 to avoid the issue, but I’m told that Dshot requires use of certain ports and that using Aux-2 through Aux-5 is not allowed. I think it’s a firmware issue. As long as I know the rules, I’m happy to follow them…

Back to Pixhawk architecture - it appears that they support 8 Aux ports instead of the Cube’s 6 Aux ports. Really interesting. It seems that only four Aux ports on the Pixhawk support Dshot. And there’s no mention of an issue with passthrough. With only four ports supporting Dshot, it appears that hexa and octa copters aren’t supported.

Flight controllers usually have groups of pins tied to specific timers so usually on a pixhawk 1and i belive the pixhawk cubes aux1-4 share a timer and 5+6 share a timer. So you could have dshot on aux 2345 but not without also limiting aux 1 and 6 to dshot output since they are in the same timer group.

Very helpful.

I don’t know how to assign an Aux port to Dshot other than assigning it to a motor. Is there another way?

If not - it would seem that the only workable configurations are Aux 1-4 for a quad-copter, and Aux 1-6 for a hexa-copter.

Unless there’s a way to set Aux-1 to Dshot but not also have it be a motor, it doesn’t seem there’s a workaround.

You use the shot motor mask to set the outputs you want for dshot.

1 Like

in pixhawk orange cube it only supports 6 Dshot servos

To be clear, the limit is for 6 “bi-directional” DShot.

That’s because bi-directional DShot require AUX ports. (Non-iomcu ports)

This restriction does not exist for “regular” DShot.

Any Dshot protocol requires Aux ports. Or more specifically, because many FC’s only have “AUX” ports, Dshot will not run on IOMCU outputs.

That’s not what I understood from @andyp1per - but maybe I got it wrong,

I understood there were no port restrictions on “regular” DShot.

Bi-directional DShot however is different, and presently requires non-iomcu (AUX) ports.

Any kind of dshot needs to use AUX ports, at least until this gets merged:

1 Like

Ah - I got it wrong. Sorry about that - and thanks for clearing it up!

When the new software gets merged, will bi-directional dshot be supported on all ports too?

No. It’s a hardware limitation

This is a very good feature, thank you very much.

BR CCTSAO

Hopefully the 2nd time will be the charm. The last attempt at this failed. I don’t recall who cooked it up.

The IOMCU is like the Appendix of the human body. Sitting there doing not much of anything, no consequence if it’s disabled (removed) and can cause some serious pain when things don’t go right. Or as one description goes:
“It is an organ that is credited with very little significance”