Files
obsidian-vault/family/how-to/switch-emulation-rom-infra.md
T

296 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)
```bash
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)
```bash
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/Кракен добавляет торрент
```bash
# 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)
```yaml
# /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
```
```bash
ssh kraken "cd /srv/.../docker/jackett && docker compose up -d"
```
Web UI: `http://192.168.1.15:9117`
### Настройка RuTracker
1. Открыть Jackett Web UI → Add Indexer → поиск "rutracker"
2. Ввести логин/пароль от RuTracker.org
3. Test indexer — должен вернуть результаты
### API — как Eagle ищет игру
```bash
# Поиск через Jackett Torznab API
curl "http://192.168.1.15: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)
```bash
# Переключиться в 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
```bash
ssh -i ~/.ssh/id_rsa bazzite@192.168.1.86 \
"flatpak install -y flathub com.qbittorrent.qBittorrent"
```
Настроить Web UI через GUI (один раз).
### Шаг 4: Jackett на Кракене
```bash
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
- Ryujinx .app (macOS native): https://ryujinx.io/download/ (не путать с ryujinx.co — тот отдаёт Windows exe)
- prod.keys: https://github.com/KLWorld/Ryujinx/blob/main/prod.keys
- Firmware: https://github.com/THZoria/NX_Firmware/releases
- Eden: https://eden-emu.dev
- Jackett: https://github.com/Jackett/Jackett
- qBittorrent API: https://github.com/qbittorrent/qBittorrent/wiki/Web-API-Documentation
---
## MacOS / Mac (личный компьютер)
➡️ См. [[personal/tech/ryujinx-mac-setup]] — инструкция по установке на Mac (июль 2026).