# 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.14: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.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) ```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 - Eden: https://eden-emu.dev - Jackett: https://github.com/Jackett/Jackett - qBittorrent API: https://github.com/qbittorrent/qBittorrent/wiki/Web-API-Documentation