Skip to content

Instantly share code, notes, and snippets.

@cam8001
Created December 6, 2025 06:05
Show Gist options
  • Select an option

  • Save cam8001/85afa90c4ecfa825a21312f400b68835 to your computer and use it in GitHub Desktop.

Select an option

Save cam8001/85afa90c4ecfa825a21312f400b68835 to your computer and use it in GitHub Desktop.
Configure 8bitdo Ultimate Controller for Plex HTPC on Bazzite
{
"name": "8BitDo Ultimate Controller",
"idmatcher": "8BitDo Ultimate.*",
"mapping": {
"KEY_BUTTON_0": "enter",
"KEY_BUTTON_1": "back",
"KEY_BUTTON_2": "play_pause",
"KEY_BUTTON_3": "info",
"KEY_BUTTON_4": "cycle_subtitles",
"KEY_BUTTON_5": "cycle_audio",
"KEY_BUTTON_6": "skip_previous",
"KEY_BUTTON_7": "skip_next",
"KEY_BUTTON_8": "home",
"KEY_BUTTON_9": "search",
"KEY_AXIS_0_DOWN": "left",
"KEY_AXIS_0_UP": "right",
"KEY_AXIS_1_DOWN": "down",
"KEY_AXIS_1_UP": "up",
"KEY_HAT_LEFT": "left",
"KEY_HAT_RIGHT": "right",
"KEY_HAT_UP": "up",
"KEY_HAT_DOWN": "down"
}
}

Plex HTPC Controller Setup for Bazzite

This configuration enables 8BitDo Ultimate C controller support for Plex HTPC on Bazzite Linux.

  1. Grant device access - Allowed Plex HTPC Flatpak to access input devices:

    flatpak override --user tv.plex.PlexHTPC --device=all
  2. Create custom inputmap - Added controller button mapping in JSON format to:

    ~/.var/app/tv.plex.PlexHTPC/data/plex/inputmaps/8bitdo-ultimate.json
    

Installation

Copy the 8bitdo-ultimate.json file to:

~/.var/app/tv.plex.PlexHTPC/data/plex/inputmaps/

Restart Plex HTPC to load the mapping.

Controller Layout

  • A Button: Enter/Select
  • B Button: Back
  • X Button: Play/Pause
  • Y Button: Info
  • LB: Cycle Subtitles
  • RB: Cycle Audio
  • LT: Skip Previous
  • RT: Skip Next
  • Select: Home
  • Start: Search
  • D-pad: Navigation
  • Left Stick: Navigation

How It Works

Plex HTPC uses custom inputmap JSON files to map controller buttons to actions. The inputmap:

  • Identifies the controller using a regex pattern (idmatcher)
  • Maps SDL button/axis events to Plex HTPC commands
  • Supports both D-pad (HAT) and analog stick (AXIS) navigation

Troubleshooting

If the controller doesn't work:

  1. Verify Flatpak has device access: flatpak info --show-permissions tv.plex.PlexHTPC
  2. Check controller is detected: Look for "8BitDo Ultimate" in ~/.var/app/tv.plex.PlexHTPC/data/plex/Logs/Plex HTPC.log
  3. Press buttons and check log for Input received entries to verify button numbers
  4. Restart Plex HTPC after any inputmap changes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment