#1572·Apollo

[Issue]: 8BitDo Ultimate 2 Wireless PR button incorrectly forwarded as Xbox Guide button on Android/Fire TV

Author: dustindoesghCreated Aug 31, 2026Updated Aug 31, 2026

This issue was originally found in moonlight but also exists in Artemis. This is a copy paste. The same solution should work for Artemis as well.

The 8BitDo Ultimate 2 Wireless has an extra button labeled PR.

When connected to the Fire TV directly, PR does not behave as the Home/Guide button. The physical Home button and PR generate different raw Linux input events.

However, when using Moonlight, PR is forwarded to the Windows host as the Xbox Guide/Home button. Pressing PR therefore invokes the same behavior as pressing the controller's Home button and can kick me out of the game/session.

The physical Home button should remain mapped to Guide; the problem is specifically that PR is incorrectly being treated as Guide.

Raw input results

Using:

adb shell getevent -l /dev/input/event6

PR produces:

EV_MSC MSC_SCAN 00090003 EV_KEY BTN_C DOWN EV_SYN SYN_REPORT 00000000 EV_MSC MSC_SCAN 00090003 EV_KEY BTN_C UP EV_SYN SYN_REPORT 00000000

The physical Home button produces:

EV_MSC MSC_SCAN 0009000d EV_KEY BTN_MODE DOWN EV_SYN SYN_REPORT 00000000 EV_MSC MSC_SCAN 0009000d EV_KEY BTN_MODE UP EV_SYN SYN_REPORT 00000000

The Fire TV's Generic.kl maps these separately:

key 306 BUTTON_C key 316 BUTTON_MODE

The controller identifies as:

vendor = 0x2dc8 product = 0x6012 name = 8BitDo Ultimate 2 Wireless

Other extra buttons also generate distinct events. For example:

PL → BTN_Z L4 → BTN_TRIGGER_HAPPY R4 → BTN_TRIGGER_HAPPY2 Source-level finding

In Moonlight Android 12.1, ControllerHandler.java contains the 8BitDo compatibility mapping:

if (context.vendorId == 0x2dc8 && event.getScanCode() == 306) { return KeyEvent.KEYCODE_BUTTON_MODE; }

I modified it to exclude the Ultimate 2:

if (context.vendorId == 0x2dc8 && context.productId != 0x6012 && event.getScanCode() == 306) { return KeyEvent.KEYCODE_BUTTON_MODE; }

I rebuilt Moonlight 12.1 from source and installed the resulting nonRoot debug APK on the Fire TV.

The fix works.

After installing the modified APK:

PR no longer acts as Xbox Guide/Home. The physical Home button continues to act as Xbox Guide/Home. The controller continues to work normally in XInput mode. No Fire TV key remapper is required.

This appears to be an older 8BitDo compatibility mapping that conflicts with the button layout of the newer Ultimate 2 Wireless.

I would suggest either excluding product ID 0x6012 from this mapping or otherwise updating the 8BitDo compatibility handling so that BTN_C from the Ultimate 2 is not converted to BUTTON_MODE.

Steps to reproduce

See bug and fix above

Affected games

All

Other Moonlight clients

PC

Moonlight adjusted settings

No

Moonlight adjusted settings (please complete the following information)

n/a

Moonlight default settings

Yes

Gamepad-related connection issue

Yes

Gamepad-related input issue

Yes

Gamepad-related streaming issue

No

Android version

FireTV

Device model

FireTV

Server PC OS version

Windows 11

Server PC GeForce Experience version

N/A

Server PC Nvidia GPU driver version

N/A

Server PC antivirus and firewall software

N/A

Screenshots

No response

Relevant log output