Files
obsidian-vault/family/how-to/switch-emulation-rom-infra.md
T
2026-05-29 23:00:57 +00:00

12 KiB
Executable File
Raw Blame History

Switch Эмуляция и ROM-инфраструктура — Research

Исследование: май 2026. Цель: запустить DKC Tropical Freeze / Returns на HTPC, настроить автоматический поиск и скачку через Кракена/Eagle.


1. Switch Эмулятор — Текущий Landscape (2026)

Ситуация

Nintendo подала в суд: оригинальный Ryujinx закрылся (октябрь 2024), Yuzu закрылся раньше. Живые форки:

Эмулятор Основа Статус Для чего
Ryujinx (Ryubing/GreemDev) Ryujinx Активно, Flatpak io.github.ryubing.Ryujinx Десктоп (Win/Linux/macOS)
Eden Yuzu Активно Android (в основном)
Citron Yuzu Активно Альтернатива

Для HTPC: Ryujinx (Ryubing) v1.3.3 через Flatpak.

Установлено на HTPC (16.05.2026)

flatpak install -y --user flathub io.github.ryubing.Ryujinx
# Версия: 1.3.3 stable

Пути на HTPC:

# Keys:
~/.var/app/io.github.ryubing.Ryujinx/data/Ryujinx/system/prod.keys
~/.var/app/io.github.ryubing.Ryujinx/data/Ryujinx/system/title.keys

# ROMs:
~/Emulation/roms/switch/   (создать, Steam ROM Manager подхватит)

# Saves:
~/.var/app/io.github.ryubing.Ryujinx/data/Ryujinx/bis/user/save/

Статус: Ryujinx установлен, директория system/ создана — нужны только prod.keys + firmware + ROM.

Запуск из Gaming Mode

После установки keys и ROM запустить Steam ROM Manager (через EmuDeck или вручную) — добавит игры в Steam с обложками. Либо запустить Ryujinx напрямую из Desktop Mode.


2. prod.keys — Где взять

prod.keys — ключи шифрования Nintendo Switch.

Источники

GitHub THZoria/NX_Firmware 4k — самый известный публичный репо с firmware + prod.keys:

4PDA — тема с ROM'ами (упоминает firmware):

Rutracker: rutracker.org/forum/viewforum.php?f=1605 — раздел Switch игр, в шапке тем часто есть и ключи

Версионность

prod.keys должны соответствовать или быть новее firmware. Брать связкой одной версии.

Куда класть (Ryujinx Flatpak на HTPC)

# Путь для keys (Ryujinx Flatpak):
~/.var/app/io.github.ryubing.Ryujinx/data/Ryujinx/system/prod.keys
~/.var/app/io.github.ryubing.Ryujinx/data/Ryujinx/system/title.keys

# Firmware ставится через GUI:
# Ryujinx → Tools → Install Firmware → Install from ZIP

Директория уже создана на HTPC, пустая — ждёт файлов.


3. DKC Tropical Freeze — Совместимость

Статус: Работает

Железо Эмулятор Результат
i5-6500 + GTX 1050 Ti Eden Perfect
M1 Pro Ryujinx 1.1.0 Отлично (video на Reddit)

Наше железо (i7-6800K + RX 570) сопоставимо с i5-6500 + GTX 1050 Ti. RX 570 поддерживает Vulkan — основной backend для Linux. Ожидается: Playable до Perfect.

DKC Returns HD (2025, Switch): новая ремастер-версия, более требовательная. Начинать с Tropical Freeze (2018 порт) — он оптимальнее на эмуляторе.

ROMs форматы

  • .nsp — предпочтительный (NSP = Nintendo Submission Package)
  • .xci — картридж-дамп, тоже работает

4. qBittorrent на HTPC

Sonarr/Radarr интеграция

Да, qBittorrent нативно поддерживается как download client в Sonarr и Radarr.
Sonarr/Radarr → Settings → Download Clients → Add → qBittorrent:

  • Host: 192.168.1.86 (или адрес где запущен qBittorrent)
  • Port: 8080
  • Username/Password
  • Sonarr/Radarr будут автоматически добавлять торренты и отслеживать прогресс

Это полноценный медиа-стек: Prowlarr (индексеры) → Sonarr/Radarr (автозагрузка по критериям) → qBittorrent (скачка) → Jellyfin (просмотр).

Для игр/ROM: проще использовать напрямую через API (Jackett + qBittorrent), т.к. Sonarr/Radarr заточены под сериалы и фильмы.

Установлено и настроено (16.05.2026)

flatpak install -y --user flathub org.qbittorrent.qBittorrent
# Версия: 5.2.0 stable

Пути (Flatpak):

Config:  ~/.var/app/org.qbittorrent.qBittorrent/config/qBittorrent/qBittorrent.conf
Данные:  ~/.var/app/org.qbittorrent.qBittorrent/data/qBittorrent/BT_backup/

Настройки:

  • Download dir: /run/media/bazzite/Data/downloads/complete
  • Incomplete dir: /run/media/bazzite/Data/downloads/incomplete
  • Web UI: http://192.168.1.86:8080 — логин admin / пароль adminadmin (сменить при первом входе)
  • Порт BitTorrent: 6881

Sonarr/Radarr интеграция: Settings → Download Clients → Add → qBittorrent:

  • Host: 192.168.1.86, Port: 8080
  • Username: admin, Password: (свой)

Бэкап:

  • Скрипт: ~/.config/scripts/backup-qbittorrent.sh
  • Запускается: systemd user timer, ежедневно
  • Бэкапит в: /run/media/bazzite/Data/backups/qbittorrent/
  • Включает: config (настройки, Web UI) + BT_backup/ (торрент-файлы, resume)

API — Eagle/Кракен добавляет торрент

# 1. Логин
SID=$(curl -s -i \
  --header 'Referer: http://192.168.1.86:8080' \
  --data 'username=admin&password=PASSWORD' \
  http://192.168.1.86:8080/api/v2/auth/login \
  | grep -i 'set-cookie' | grep -o 'SID=[^;]*')

# 2. Добавить магнет
curl -s --cookie "$SID" \
  --data-urlencode "urls=magnet:?xt=urn:btih:HASH..." \
  --data "savepath=/home/bazzite/Emulation/roms/switch/" \
  http://192.168.1.86:8080/api/v2/torrents/add

# 3. Статус
curl -s --cookie "$SID" \
  "http://192.168.1.86:8080/api/v2/torrents/info" | jq '.[].name'

5. Jackett на Кракене — Поиск по трекерам

Что это

Jackett — proxy-сервер который транслирует поисковые запросы в tracker-специфичные HTTP запросы. Поддерживает RuTracker.org (semi-private, нужна учётка).

Установка на Кракене (Docker)

# /srv/.../docker/jackett/docker-compose.yml
services:
  jackett:
    image: lscr.io/linuxserver/jackett:latest
    container_name: jackett
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Bishkek
    volumes:
      - ./config:/config
      - ./downloads:/downloads
    ports:
      - 9117:9117
    restart: unless-stopped
ssh kraken "cd /srv/.../docker/jackett && docker compose up -d"

Web UI: http://192.168.1.14:9117

Настройка RuTracker

  1. Открыть Jackett Web UI → Add Indexer → поиск "rutracker"
  2. Ввести логин/пароль от RuTracker.org
  3. Test indexer — должен вернуть результаты

API — как Eagle ищет игру

# Поиск через Jackett Torznab API
curl "http://192.168.1.14:9117/api/v2.0/indexers/rutracker/results/torznab/?apikey=JACKETT_KEY&t=search&q=Donkey+Kong+Tropical+Freeze+Switch&cat=8000"
# Возвращает XML/JSON с magnet-ссылками и метаданными

Jackett также поддерживает JSON: добавить &format=json или использовать results/torznab endpoint.


6. Целевая Архитектура: Полный Flow

Eagle/Кракен (агент)
  │
  ├── 1. Запрос: "найди DKC Tropical Freeze NSP"
  │
  ├── 2. Поиск: Jackett API (Кракен :9117)
  │         └── rutracker → список торрентов с магнетами
  │
  ├── 3. Выбор лучшего результата (seeders, размер, формат)
  │
  ├── 4. Добавление в qBittorrent (HTPC :8080)
  │         └── magnet URL + savepath=/home/bazzite/Emulation/roms/switch/
  │
  └── 5. Уведомление: "скачивается X GB, ~Y мин"

7. План действий (приоритет)

Шаг 1: EmuDeck + Ryujinx (разовая установка, нужен Desktop Mode)

# Переключиться в Desktop Mode на HTPC, затем:
ssh -i ~/.ssh/id_rsa bazzite@192.168.1.86 \
  "curl -L https://raw.githubusercontent.com/dragoonDorise/EmuDeck/main/install.sh -o /tmp/emudeck.sh && bash /tmp/emudeck.sh"
# Либо запустить интерактивно из браузера на HTPC

⚠️ EmuDeck требует GUI для первоначальной настройки (создаёт директории, настраивает Steam ROM Manager).

Шаг 2: prod.keys + firmware

  • Найти на Rutracker или 4PDA свежую пару keys + firmware (17.0.x)
  • Положить в ~/Emulation/bios/ryujinx/keys/
  • Установить firmware через Ryujinx GUI

Шаг 3: qBittorrent на HTPC

ssh -i ~/.ssh/id_rsa bazzite@192.168.1.86 \
  "flatpak install -y flathub com.qbittorrent.qBittorrent"

Настроить Web UI через GUI (один раз).

Шаг 4: Jackett на Кракене

ssh kraken "mkdir -p /srv/.../docker/jackett && cd /srv/.../docker/jackett"
# Создать docker-compose.yml (выше), добавить RuTracker учётку

Шаг 5: ROM

  • Через Jackett: найти NSP/XCI для DKC Tropical Freeze
  • Закачать через qBittorrent в ~/Emulation/roms/switch/
  • Запустить через Steam ROM Manager → появится в Gaming Mode

8. Open Questions

  • EmuDeck требует десктопного сессии на HTPC — нужно физически или через VNC? Через SSH не пойдёт (нужен GUI установщик)
  • RuTracker учётка — есть? Надо создать если нет
  • Jackett: добавить на Кракен как постоянный сервис рядом с Transmission
  • Совместная игра: DKC Tropical Freeze поддерживает кооп (2 игрока) — идеально папа + Лиза

Ссылки