Using FMU Ports

I have never worked with a flight controller with FMU ports before. I have a Holybro Pixhawk 6C Mini with 6 FMU ports and 8 I/O PWM ports. I would like to build a Y-6 multirotor with the 6 motors and ESCs on the 6 FMU ports to free up the remaining I/O PWM ports for other things. I have SunnySky brushless motors and Cyclone 45A BLHeli_S DShot300 ESCs. How do I set up Arducopter in Mission Planner to recognize the motors/ESCs on the FMU ports? What version of firmware would I need to be able to accomplish this? Thank you.

I think you might want to take a look at below links. It seems support Y6 copter (FRAME_CLASS = 5).

https://ardupilot.org/copter/docs/choosing-a-frame.html

https://ardupilot.org/ardupilot/docs/common-all-vehicle-types.html#common-all-vehicle-types

I never tried this, It might be the same procedure as copter, but the link to Y6 video is not good (I can’t see it).

Hope to hear good news from you soon!

— EDIT1:

FYI: FMU ports 1~6 are PWM1 ~ 6 on H743. I have the same question as you do how to configure properly to distinguish PWM1 of H743 from PWMx from PWMx from F103.

If I’m wrong about this, please correct me.
https://ardupilot.org/copter/docs/common-holybro-pixhawk6C.html

— EDIT2:

Here is the link for PWM IO MAPs, which might be something to do with IOMCU PWM settings

IOMCU/FMU IO definitions: GPIOs — Copter documentation

Assign Outputs 9-14 to the motors. It’s no more complicated than that. Flash the Bdshot version of firmware to the Flight Controller and flash Bluejay to the ESC’s and configure for Bdshot for best performance. Looks like those ESC’s support Dshot600, use that.

@dkemxr If we don’t have IOMCU (other FC), then M1 is default set to AUX1OUT(PWM1). For Pixhawk 6C Mini, where defines MAIN1OUT (PWM9)? I couldn’t find any correlation. Please help!

From hwdef(FMU),
AUX1OUT – GPIO 50 – PWM1
AUX2OUT – GPIO 51 – PWM2
AUX3OUT – GPIO 52 – PWM3
AUX4OUT – GPIO 53 – PWM4
AUX5OUT – GPIO 54 – PWM5
AUX6OUT – GPIO 55 – PWM6

From IOMCU
MAIN1OUT – GPIO 101
MAIN2OUT – GPIO 102
MAIN3OUT – GPIO 103
MAIN4OUT – GPIO 104
MAIN5OUT – GPIO 105
MAIN6OUT – GPIO 106
MAIN7OUT – GPIO 107
MAIN8OUT – GPIO 108

It’s the standard (old) Pixhawk outputs 8 Main, 6 FMU. The 6C non-mini is 8 Main, 8 FMU.

For FC’s w/o an IOMCU all the outputs are “AUX” if AUX is (poorly) defined as FMU outputs.

There is a point about GPIO if the OP wants to use them as he just says “other things”. GPIO is available on the FMU outputs so if those are all taken with motors no GPIO is available.

I would be happy if I never saw another IOMCU.

@dkemxr Thanks for the tips. Please correct me if I’m wrong

I just checked code and I think I know the trick here.

The distinction between the main outputs and the auxiliary outputs when it comes to FMU + IOMCU PWM ports.

  1. Main Outputs (PWM1-PWM8):
    These are the default outputs, often reserved for primary motor control in multicopters or fixed-wing applications. This configuration aligns with historical IOMCU (Input/Output Microcontroller Unit) compatibility, ensuring that the core flight control functions remain stable and consistent across different hardware.

  2. Auxiliary Outputs (PWM9 and above):
    Auxiliary outputs are intended for additional functions like camera triggers, landing gear, servos, and other non-critical components. Using PWM9 and above allows for expanded control capabilities without interfering with the main motor outputs.

  3. FMU PWM Port Numbering:
    Despite the separation in usage, the PWM port numbering in the FMU typically still starts from PWM1 for consistency and simplicity in configuration and programming. This allows users to easily map their desired functions to the correct outputs without having to redefine the starting point for PWM assignments.

By sticking to this structure, developers and users can maintain a clear and organized approach to configuring their flight control systems, ensuring that both primary and auxiliary functions are properly managed and controlled.

So If we want to use AUX PWM ports on FMU+IOMCU system, then we should use PWM9 and above number as The number of “8” for main ports (IOMCU PWM) are hardcoded for historical reason.

This is what I have missed piece of information.

— FYI

1 Like

I think that is a good summary for an FC with an IOMCU.