Beginner question regarding AUX & MAIN ports

Hi,

I started to get in touch with Pixhawk 4 and digged through the documentation.
This is the first project I’m doing in this huge field and I’m already wondering about certain things and struggling in answering my own basic questions.

What’s the difference between the AUX & MAIN ports and why are they treated differently, especially since - at least according to what I have read in the documentation - both types can be used to drive servos/motors or to be more specific, both seem to be able to perform the same tasks?

Maybe I’m missing something, I’d appreciate it if someone can point me to the part in the documentation or link me further information on the topic

Best regards

1 Like

@hamishwillee do we have that somewhere in the docs? I can’t find it.

Hi, are you talking about the physical connections for main and aux pwm, or the software allocations?
Im very new to this and the following is all from memory. But here goes
If you are talking about the power module connections then its all kind of based around copter. The pwm cables from the flight controller connect to io channel input (main) and fmu channel input (aux) of the power module. From there the io channels are routed to pins labelled m1 to m8 which have been made to write to your esc’s (near the power distribution pads for up to 8 escs.)
Then the fmu channels from the fmu input connector of the power module (aux) are routed to the right angle pin headers for ch1 through 8.
This is supposed to be for aux items like gear servo, gimbal servos etc. On your octocopter.
So main is motors and aux is servo in that platform.
But pwm is the same stuff and there’s no reason esc’s cant be connected to maim and servos to aux.
It was just intended for some big octocopter with extras all over it.
You dont have to use the power module supplied, you could use a small inline cable power module and then use one or two of the external pwm connector boards plugged into io for main and fmu for aux pwm channels, or both to have 16 pwm channels available.
The bit i have not sorted yet is the channel assignments in qgc. I came from mission planner where each channel can be assigned by just picking drop down boxes and matching a function.
But with qgc it seems that the assignment is dependent on choosing a preconfigured airframe type when you do initial configuration.
Which is not flexible enough for what i am trying to do

2 Likes

@Rouvo @JulianOes

There is no specific documentation in the user guide because it really doesn’t matter to the audience of the guide - the FC you buy has a label MAIN and possibly also AUX. All these users need to know the mapping, and that some flight controllers do not have AUX pins (so if you’re using a flight controller that does not have these pins, you won’t have enough outputs to use the FC on some vehicles). The mapping is in the airframe reference.

That said, I see we don’t even cover the above in basic concepts so I could make a note on it if you think reasonable @JulianOes

@Rouvo That said …

The simple answer is that they don’t perform the same tasks (if at all possible). MAIN is used for essential flight controls like motors, flaps. AUX may be used for core controls if there are no MAIN left but is mainly used for payloads and other less important things. The AUX ports are optional - so if you have a core control on those you can’t use the FC for that airframe.

There is a diagram of the architecture here:
What this says is that the MAIN ports are on IO board and AUX ports are on the FMU. If there is no IO board then AUX ports are dropped and main mixer/ports are loaded into the FMU.

My understanding is that the FMU+IO architecture allows the IO board to detect that the FMU board has failed and move the MAIN outputs to failsafe values.

Hope that makes sense!

2 Likes

So, with the airframe reference list, is there any way to assign additional ports to airframe functions or is it just a case of using the most suitable airframe,
How does this ‘mixer’ work, or how is it accessed?

Hi Scott,

Typically you choose the airframe that matches your vehicle - there is a lot more than just output tuning at work in that config - so if you choose a different one your vehicle might not work properly.

Any airframe that has “feed-through of RC AUX1 channel” (or similar) you can map a radio channel direct to the RC value - i.e. using https://dev.px4.io/master/en/advanced/parameter_reference.html#RC_MAP_AUX1

You can replace a mixer with your own mixer and set whatever mapping you like for the outputs. This may require work in code too.
Mixers are complicated and by no means “beginner”. Docs are here: https://dev.px4.io/master/en/concept/mixing.html

Thanks for the reply Hamish,
The auxiliary channel feed through is fine for extras like gear etc, but I think it only gives the opportunity for assigning a physical pwm output for the higher rc channels (ch 5, 6, 7 etc), whereas i’d like to assign a primary flight control to an extra output.
I understand the Primary flight controls for the Pitch, Roll and Yaw axis, in addition to throttle is what the flight controllers loops are using as the ‘controlled variables’ on each axis.

In the air-frame options for conventional tail fixed wing there are two options, the first of which has ail, elev, throttle, rudder channels configured, the second is the same but with a second aileron channel (which gives the ability to set independent trims and min max limits compared to just using a Y-lead for two servos on one channel)
I have an air-frame that is a delta with two elevons plus two rudders, speed brake, gear etc. so i’d love to be able to choose a flying wing frame but add one (or better two) channels on yaw control to this air-frame.


I originally tried QGC but couldn’t see a way to configure my pwm channels and so went to MP/arduplane, where a user can choose any function (including primary flight control functions and multiples of any function) but then I had trouble with trying ardu fw on a holybro pixhawk4 FC, So now I’m back to px4 fw trying to assign pwm channels.

Hi @Scott_Nunan1,
Yes, you’re going to need a new mixer, and possibly new PX4 code. You can play with this without changing everything else by loading a custom mixer. Ideally when you’re happy that you have a good vehicle configuration you’d contribute it back as a new airframe.

This is the limit of where I can be helpful (tech writer, not aeronautical engineer :slight_smile:)

@bkueng Can you recommend anyone who might be able to advise more regarding airframe discussed above ^^^^ ?

@Scott_Nunan1 Yes you have to define a custom mixer, where you can also specify the same control signal multiple times with different parameters.

For FW-specifics, @sfuhrer knows more.

@Scott_Nunan1 As Hamish correctly pointed out, there currently doesn’t exist a suitable pre-configured airframe config on PX4 for your kind of plane. That means that you would need to add a custom mixer. I’ve once flown a similar one to yours, also with elevons and rudder. You could thus start with the mixer I had there, and add the airbrakes in it if you want those actuated as well.


If you have troubles ping me, or if you want your airframe added permanently to PX4 I could also do that for you. Then some more info about it would be nice, together with a picture :slightly_smiling_face:

@hamishwillee I’m designing a new airframe which is currently under test in SITL. Can’t test outside due to lockdown :neutral_face:
A while back, I discovered that there’s more to correctly adding a new airframe to the existing repository. I’ll update the steps once I finish things on my aircraft.

1 Like

Great! Looking forward to seeing the PR!

Hi Guys,

I have found this discussion interesting since I am new to PX4 and i need is to create a new VTOL airframe .
I am starting now, nly to consider howering , I plan to approach horizzontal flight and transition as a future steps hoping to go throught the first one.
The aircraft is a rather asymmetric quadcopter but obviuosly since it is a Vtol the motors can tilt on the pitch axis.
I made a new geometry file and a quad.main.mixer file file that call it.
After build and upload of this custom firmware I have done gound test (the aircraft is fixed to a 4DOF scale). What I have discovered is that , because of very large size difference of front from rear rotors , the front small rotors very easily saturate (mainly for yaw inputs).
I am thinking now to add to the mixer the tilt actuation of the fwd rotors since this may solve the saturation problem.
I have added a couple of line to the .main.mix file that look like this:
R: 4pb 10000 10000 10000 0

Gimbal / payload mixer for last two channels

M: 1
S: 3 5 10000 10000 0 -10000 10000

M: 1
S: 3 6 10000 10000 0 -10000 10000

#Yaw Servos

Right Servo

M: 1
S: 0 2 -10000 -10000 0 -10000 10000

left Servo

M: 1
S: 0 2 10000 10000 0 -10000 10000

The generated matrix is identical to the one without the 2 servo lines!!
What s wrong?

Hi, I arrived on this question since I was looking for the differences between AUX and MAIN ports. I remember reading somewhere that the MAIN ports are somehow “better” from the hardware point of view to connect the main actuators of a multicopter. I remember something about the redundance of the MAIN ports vs the AUX ports. However, I can’t find this information anywhere else.

Could anyone help me understanding what is the “hardware” difference among the two?

Thanks

https://docs.px4.io/master/en/getting_started/px4_basic_concepts.html#outputs
https://dev.px4.io/master/en/concept/mixing.html

The MAIN ports are connected to the additional IO processor.
The AUX ports are connected to the FMU (flight management unit).

The MAIN ports used to allow manual override for fixedwing in case the FMU would crash or do something erratic. This feature was presumably not used often and is likely going to disappear in the future leaving only a failsafe PWM setting for IO in order to e.g. trigger a parachute.

For multicopter you can switch from MAIN to AUX which means a little less latency and thus smoother control.

Also, depending on your hardware some ports might have support for dshot or similar and others might not. I don’t know the exact details there.

2 Likes

Hi @JulianOes, thanks for your reply. Let’s assume I have a multicopter and I have available M MAIN ports and A AUX ports. From your answer, I would assume that I could connect in principle a number of motors equal to M+A without any issue, correct?

I saw that indeed in the Airframe Reference page there is a dodecarotor cox that it does exactly what I am talking about.
However, I don’t seem to find many people using it and I was wondering what was the main reason and if it was related to the MAIN vs AUX ports features.

Thanks.

Which is not flexible enough for what i am trying to do

what is not flexible?

Is there example code anywhere for how to use the AUX signal channel as an input? I’ve been trying to find it for a while and haven’t seen anything.

1 Like

Hey there
Thanks for this informative thread, helped through a lot of questions i had.
I got here because I am trying to control my multicopter with Dshot protocol, and i want to do this with the mini carrier which has no AUX ports. Is there a way to make this work?
https://docs.px4.io/v1.11/en/peripherals/dshot.html
It says here that for Dshot I have to connect to Aux but i thought maybe it can be manipulated by a custom mixer?
Thanks for the help