12 KiB
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:
prod.keys: https://github.com/THZoria/NX_Firmware/blob/main/prod.keys- Releases (firmware zip): https://github.com/THZoria/NX_Firmware/releases/latest
- Актуальная версия: 22.1.0 (апр. 2026)
4PDA — тема с ROM'ами (упоминает firmware):
- Nintendo Switch Ромы: https://4pda.to/forum/index.php?showtopic=1050842
- Eden/Yuzu/Citron (там же ссылки на firmware в шапке): https://4pda.to/forum/index.php?showtopic=1070467
- Шапка темы содержит ссылки на Firmware (THZoria) и prod.keys
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
- Открыть Jackett Web UI → Add Indexer → поиск "rutracker"
- Ввести логин/пароль от RuTracker.org
- 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 игрока) — идеально папа + Лиза
Ссылки
- EmuDeck Wiki Ryujinx: https://emudeck.github.io/emulators/steamos/ryujinx/
- Ryujinx (GreemDev fork): https://github.com/GreemDev/Ryujinx
- Eden: https://eden-emu.dev
- Jackett: https://github.com/Jackett/Jackett
- qBittorrent API: https://github.com/qbittorrent/qBittorrent/wiki/Web-API-Documentation