The issue seems to have appeared with firmware 2.17.9, and persists in 2.18.E.
Tested with software versions 0.92.95 and 0.93.18.
Reproduction steps:
- Flash firmware 2.18.9 on Gladiator NXT/EVO base
- For Logical axis 1, set AxID = 2.
- For Logical axis 2, set AxID = 1.
- For Logical axis 3, set AxID = 1.
- Move the main axes, and observe in the Test tab that:
- Logical axis 1 is controlled by physical axis 1 (roll), not 2.
- Logical axis 2 is controlled by physical axis 2 (pitch), not 1. This is undistinguishable from the default config.
- Logical axis 3 is controlled by physical axis 2, not 1.[list/]
Demonstration of the bug on firmware 2.18.9:
https://www.youtube.com/watch?v=Sx3mTpUWpEk
And the expected behaviour, on 2.17.6:
https://www.youtube.com/watch?v=ojVhUHl_9GY
It appears that whatever value for AxID is given is not interpreted directly as a physical axis index. Instead, it is a reference to the index in the list of logical axes. Whatever AxID value is given for *that* index is the physical axis that will be used.
Here's the breakdown per logical axis:
Logical axis 1 uses AxID = 2. This does not directly reference Physical axis 2, but the AxID value for the axis at the second index in the list of logical axes. This value is 1, Logical axis 1 is therefore fed the Physical axis 1 data.

Logical axis 2 uses AxID = 1. The AxID value at logical index 1 is 2. Logical axis 2 is therefore controlled by Physical axis 2.

Logical axis 3 uses AxID = 1, the same case as Logical 2, it is therefore controlled by physical axis 2.

This bug probably slipped under the radar because it is only noticeable when the values for the logical axis index and the AxID value differ. When they match, The AxID value simply references the same index as the logical axis holding the value:
