Unreal Engine Raw Input – Arduino HID joystick only detects 3 axes?

Hi everyone,

I’m building a custom HID joystick using an Arduino Leonardo with the Joystick library, exposing multiple axes:

  • X (A0)

  • Y (A1)

  • Z / Rz (A2)

  • Throttle (A3)

On Windows (Game Controllers panel), all axes are correctly detected and working as expected.

However, inside Unreal Engine (using the Raw Input plugin), I can only reliably read the first 3 axes. Additional axes (such as Rx, Z, or Throttle depending on how I configure them):

  • Do not trigger any events

  • Or are not properly exposed in the GenericUSBController mappings

I’ve already tried:

  • Mapping Rx to Z axis

  • Normalizing all axis ranges to -127 to 127

  • Correctly setting Vendor ID and Product ID

  • Using Enhanced Input (IA_Axis mappings)

  • Testing different axis combinations in the Arduino Joystick configuration

Despite this, it seems only 3 axes are consistently usable.

Question:

Is this a limitation of Unreal Engine’s Raw Input plugin when dealing with custom HID devices?

Or is there any specific configuration or workaround to make Unreal recognize and use more than 3 axes (e.g., 4+ axes)?

Any insights or experience with Arduino/custom HID controllers in Unreal would be greatly appreciated 🙏