92 lines
3.4 KiB
Markdown
92 lines
3.4 KiB
Markdown
---
|
|
title: HTPC Steam & Emulators
|
|
created: '2026-05-23'
|
|
updated: '2026-05-29'
|
|
type: tech
|
|
namespace: family
|
|
tags: [htpc, steam, emulators, gamepad, how-to, pitfalls]
|
|
sources:
|
|
- family/how-to/htpc-migration-plan.md
|
|
related:
|
|
- "[[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/` |
|
|
|
|
## ROM Symlinks (Data partition → EmuDeck)
|
|
|
|
Emulators expect ROMs at `~/Emulation/roms/<system>/`. Symlinks from
|
|
the Data partition (`/run/media/bazzite/Data/`):
|
|
|
|
```bash
|
|
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.
|