Files
obsidian-vault/wiki/tech/htpc-steam-emulators.md
T

3.4 KiB

title, created, updated, type, namespace, tags, sources, related
title created updated type namespace tags sources related
HTPC Steam & Emulators 2026-05-23 2026-05-29 tech family
htpc
steam
emulators
gamepad
how-to
pitfalls
family/how-to/htpc-migration-plan.md
htpc-kodi-layout
htpc-bazzite-proton
tech/htpc-magic4pc

HTPC Steam & Emulators

Bazzite HTPC at 192.168.1.86. See htpc-bazzite-proton for Proton game compatibility details.

Hardware

  • CPU: Intel Core i7-6800K, RAM: 32 GB, GPU: AMD Radeon RX 570
  • TV: LG webOS at 192.168.1.75 (HDMI)
  • OS: Bazzite 44 (Fedora-based, immutable OSTree, bazzite-deck variant)

Gamepads — 8BitDo Ultimate (2 dongles)

Critical: both 8BitDo Ultimate dongles (2dc8:3106) must be on separate physical USB ports, not sharing a USB hub. If both share the Huasheng USB2.0 HUB on port 006, the second dongle fails to enumerate (#Ifs=0 Cfg#=0) and creates no /dev/input/js.

Working USB layout:

  • Port 005 (direct xHCI, no hub) → 8BitDo #1 (E417D8D87F0C)
  • Port 006 → Hub Port 001 → 8BitDo #2 (E417D8C197E4)
  • Port 006 → Hub Port 004 → Xbox 360 Wireless Receiver

Symptoms of wrong layout: lsusb shows both but second has #Ifs=0; only one /dev/input/js; Steam sees one controller.

Rules

  • Game save paths: managed per-emulator; see emulator config in Bazzite
  • Gamepad config: stored in Steam controller profiles, backed up to ~/controller-profiles/
  • Steam shortcuts for non-Steam Windows games: use Proton Experimental

EmuDeck Save Paths (Flatpak)

Emulator Save path
RetroArch ~/.var/app/org.libretro.RetroArch/config/retroarch/saves/
Dolphin (GC/Wii) ~/.var/app/org.DolphinEmu.dolphin-emu/data/dolphin-emu/
Citra / Lime3DS ~/.var/app/org.citra_emu.citra/
PCSX2 (PS2) ~/.var/app/net.pcsx2.PCSX2/config/PCSX2/memcards/
RPCS3 (PS3) ~/.var/app/net.rpcs3.RPCS3/config/rpcs3/dev_hdd0/
PPSSPP (PSP) ~/.var/app/org.ppsspp.PPSSPP/config/ppsspp/PSP/SAVEDATA/
melonDS (NDS) ~/.var/app/net.kuribo64.melonDS/
Ryujinx (Switch) ~/.var/app/org.ryujinx.Ryujinx/config/Ryujinx/bis/user/save/
Steam ~/.steam/steam/userdata/

Emulators expect ROMs at ~/Emulation/roms/<system>/. Symlinks from the Data partition (/run/media/bazzite/Data/):

ln -s "/run/media/bazzite/Data/n64 roms"     ~/Emulation/roms/n64
ln -s "/run/media/bazzite/Data/snes roms"    ~/Emulation/roms/snes
ln -s "/run/media/bazzite/Data/gba roms"     ~/Emulation/roms/gba
ln -s "/run/media/bazzite/Data/3ds roms"     ~/Emulation/roms/3ds
ln -s "/run/media/bazzite/Data/ps2 roms"     ~/Emulation/roms/ps2
ln -s "/run/media/bazzite/Data/dolphin roms" ~/Emulation/roms/wii
ln -s "/run/media/bazzite/Data/cemu roms"    ~/Emulation/roms/wiiu
ln -s "/run/media/bazzite/Data/mame roms"    ~/Emulation/roms/mame
ln -s "/run/media/bazzite/Data/sega roms"    ~/Emulation/roms/genesis
ln -s "/run/media/bazzite/Data/nes"          ~/Emulation/roms/nes

After symlinking, run Steam ROM Manager (EmuDeck) from Desktop Mode to import ROMs into Steam with cover art.

Non-Steam Windows Games

/run/media/bazzite/Data/games/ — 38 pre-installed games (Bayonetta, Cuphead, GTA V, Witcher 3, etc.). Add as Non-Steam games with Proton Experimental.

/run/media/bazzite/Data/steam/steamapps/common/ — already-Steam games (Gang Beasts, Shovel Knight, etc.). Add as a second Steam library path.