Малинка як медіасервер і ретро-приставка: LibreELEC + Kodi + Wolfenstein 3D

Це друга стаття з серії про домашню інфраструктуру на п’яти Raspberry Pi. У першій ми підняли IoT сервер на DietPi з Docker — якщо пропустили, раджу почати звідти. Тепер черга другої малинки — медіацентр. Але вийшло цікавіше ніж планувалось: по дорозі малинка перетворилась ще й на ретро-ігрову приставку. Вольфенштейн 1992 року на телевізорі через Raspberry Pi 3B+ — це не ностальгія, це нормально.

Що таке медіасервер і навіщо він взагалі потрібен

Флешка з фільмами підключена до телевізора — це не медіасервер. Медіасервер це коли у тебе є центральне сховище медіаконтенту, до якого мають доступ всі пристрої в мережі: телевізор, телефон, планшет, ноутбук. Ти додаєш фільм один раз — і дивишся його з будь-якого пристрою без копіювання.

Kodi — це не просто плеєр. Це повноцінна медіастанція зі своєю бібліотекою: автоматично завантажує постери, описи, рейтинги фільмів з інтернету (скрапінг метаданих), запам’ятовує де ти зупинився, показує що ще не переглянуто в серіалі. Різниця між “відкрити файл” і “відкрити Kodi” — як між блокнотом і Word.

LibreELEC — це операційна система побудована виключно навколо Kodi. Нічого зайвого, тільки те що потрібно для медіапрогравача. Завантажується за 15-20 секунд, не потребує оновлень пакетів, не жере RAM у фоні. Для присвяченої машини яка виконує одну роль — ідеальний вибір.

Важливий нюанс для RPi 3B+: немає апаратного декодування HEVC (H.265). Тобто 1080p у форматі H.264 грає чудово, а от 4K HEVC буде гальмувати. Для домашньої медіатеки з фільмами у стандартній якості — більш ніж достатньо.

Встановлення: образ і прошивка

Актуальна версія на момент написання — LibreELEC 12.2.1 з Kodi 21.3 і Linux Kernel 6.12. Для RPi 3B+ образ називається RPi2 — не лякайтесь, він покриває RPi 2, 3 і Zero 2.

wget https://releases.libreelec.tv/LibreELEC-RPi2.arm-12.2.1.img.gz

Прошиваємо через Raspberry Pi Imager 2.0. На Ubuntu качаємо AppImage з офіційного сайту:

wget https://downloads.raspberrypi.com/imager/imager_latest_amd64.AppImage chmod +x imager_latest_amd64.AppImage ./imager_latest_amd64.AppImage

В імагері: Device → Raspberry Pi 3 → Use custom image → наш .img.gz файл → SD карта → Write. Ніяких додаткових налаштувань — LibreELEC одразу показує Kodi на HDMI при першому завантаженні.

Одразу важливо: блок живлення мінімум 2.5A. Я знайшов це методом спроб — на 1A малинка постійно перезавантажувалась при завантаженні. Просто підключив нормальний блок і все стабілізувалось.

Перший запуск і базові налаштування

При першому запуску Kodi показує майстер налаштування: мова, часовий пояс, мережа. Підключаємо Wi-Fi або дріт. Дріт краще — Wi-Fi на 3B+ нестабільний, перевірено особисто: ping скакав від 8ms до 715ms, відео підтиналось. Після переходу на кабель — стабільні 8-16ms і жодних проблем.

В майстрі є два чекбокси — SSH і Samba. Вмикаємо обидва. SSH знадобиться для обслуговування системи, Samba — для доступу до файлів по мережі з будь-якого пристрою.

Samba: доступ до файлів по мережі

Samba — це протокол для обміну файлами в локальній мережі. LibreELEC автоматично розшарює через Samba стандартні папки: Videos, Music, Pictures, Downloads, TV Shows, Recordings та інші. Тобто з будь-якого пристрою в мережі можна зайти на малинку і закинути або забрати файли.

Спосіб 1 — Nautilus (найпростіший):

В файловому менеджері Nautilus на Ubuntu натискаємо Інші місця і в рядку “Connect to Server” вводимо адресу:

smb://192.168.1.109

З’являється список папок — Videos, Music, Downloads і т.д. Заходимо в потрібну і перетягуємо файли звичайним drag-and-drop. Підключення анонімне, пароль не потрібен.

Нюанс: створити нову папку в корені smb://192.168.1.109/ не вийде — це жорстко прописані точки доступу в конфізі Samba. Але всередині існуючих папок (Videos, Downloads) папки створювати можна вільно.

Спосіб 2 — smbclient (термінал):

Переглянути список шар:

smbclient -L 192.168.1.109 -N

Зайти в конкретну папку і завантажити файл:

smbclient //192.168.1.109/Videos -N smb: \> get movie.avi

Спосіб 3 — постійне монтування через fstab:

Якщо часто копіюєш файли — зручно змонтувати папку малинки як локальну директорію. Тоді вона буде доступна завжди без ручного підключення:

sudo mkdir -p /mnt/libreelec-videos # Додаємо в /etc/fstab: //192.168.1.109/Videos /mnt/libreelec-videos cifs guest,uid=1000,gid=1000,_netdev 0 0 # Монтуємо: sudo mount -a

Спосіб 4 — SFTP (повний доступ до файлової системи):

SMB дає доступ тільки до розшарених папок. SFTP через SSH дає доступ до всієї файлової системи малинки — корисно коли треба закинути файли в нестандартне місце. В Nautilus:

sftp://root@192.168.1.109/storage

Пароль за замовчуванням — libreelec. Відкривається вся папка /storage — там можна створювати папки, копіювати файли, повна свобода дій.

Додаємо медіатеку в Kodi

Копіюємо відеофайл на малинку через smb://192.168.1.109/Videos. В Kodi: Videos → Files — файл з’являється автоматично. Якщо хочеш повноцінну медіатеку з постерами і описами: Videos → Add videos → вказуєш папку → Kodi запитає тип контенту (Movies/TV Shows) → автоматично завантажить метадані з інтернету.

Перевірили на .avi файлі — грає без проблем. Samba на дроті стабільна, відео не підгальмовує.

Бонус: ретро-приставка з RetroPlayer і DOSBox

Kodi починаючи з версії 18 має вбудований RetroPlayer — підтримку емуляторів на базі libretro. Це та сама бібліотека що використовує RetroArch, тільки інтегрована прямо в Kodi без зайвого софту. На RPi 3B+ добре працюють:

  • NES/Famicom (Денді) — формат .nes
  • SNES/Super Famicom — формат .sfc, .smc
  • Sega Mega Drive/Genesis — формат .md, .bin
  • Game Boy / GBA — формат .gb, .gba
  • MS-DOS — через DOSBox, формат .exe, .bat

PlayStation 1 технічно підтримується, але на RPi 3B+ гальмує — не вистачає потужності. N64 — аналогічно. Краще залишити для малинок з більшою продуктивністю.

Встановлення DOSBox:

Додатки → Завантажити → Kodi Add-on repository → Ігрові додатки → Емулятори → DOS (DOSBox) → Встановити. Займає кілька секунд.

Де брати ігри легально

Одразу відповідь на очевидне питання: де брати ROM-и і DOS-ігри не порушуючи закон. Є три категорії контенту:

  • Freeware — розробники самі дозволили безкоштовне поширення
  • Shareware — безкоштовна демо-версія (часто повний перший епізод)
  • Homebrew — нові ігри від незалежних розробників для старих платформ

Сайти для DOS-ігор:

  • dosgamesarchive.com — 1600+ ігор, чітко розділені freeware/shareware/demo, перевірені на віруси
  • dosgames.com — велика база безкоштовних DOS-ігор з відкритим кодом
  • myabandonware.com — 20000+ покинутих ігор, музей комп’ютерної історії
  • archive.org/details/softwarelibrary_msdos_games — офіційна цифрова бібліотека з тисячами DOS-ігор

Сайти для консольних ROM-ів (Homebrew):

  • itch.io — сотні сучасних homebrew ігор для NES, Game Boy, Sega. Наприклад From Below (Тетріс з кракеном) або Micro Mages
  • pdroms.de — один з найстаріших архівів безкоштовних некомерційних ігор для ретро-платформ

Що запустити першим (золота класика для RPi 3B+):

  • Wolfenstein 3D (Shareware) — перший 3D-шутер в історії, 1992 рік
  • Doom / Doom II (Shareware) — не потребує пояснень
  • Prince of Persia — оригінальний, 1989 рік
  • Dangerous Dave — Ромеро до Doom-у
  • Alley Cat — легендарна гра про кота, важить кілька кілобайт

Як запустити DOS гру: правильний спосіб

DOS-ігри відрізняються від консольних ROM-ів. ROM для NES — це один файл .nes. DOS-гра — це папка з купою файлів де є запускний .exe. Тому і спосіб запуску трохи інший.

Якщо гра іде з інсталятором (INSTALL.EXE) — встановлюємо її спочатку на ноутбуці через DOSBox, отримуємо готовий WOLF3D.EXE, і вже готову папку копіюємо на малинку:

sudo apt install dosbox -y dosbox /шлях/до/INSTALL.EXE # Проходимо інсталятор, отримуємо WOLF3D.EXE

Готову папку копіюємо через SFTP на малинку: sftp://root@192.168.1.109/storage → створюємо папку Games → кидаємо Wolf3D туди.

Запуск в Kodi — найважливіший нюанс:

Кнопка “Додати ігри” в розділі Games — для консольних ROM-ів. Для DOS-ігор вона не підходить. Правильний шлях:

  1. Налаштування → Файловий менеджер → Додати джерело → вказуємо папку Games на малинці
  2. Повертаємось в розділ Ігри → заходимо в папку → знаходимо WOLF3D.EXE
  3. Натискаємо на файл — Kodi запитує “Вибрати емулятор для файлу .EXE”
  4. Вибираємо DOS (DOSBox) — і Wolfenstein 3D 1992 року запускається на телевізорі 🎮

Консольні ROM-и (.nes, .sfc, .md) — простіше. Кидаємо файл на малинку, додаємо папку через Файловий менеджер, натискаємо на ROM — Kodi сам пропонує встановити відповідний емулятор з репозиторію.

Що маємо в результаті

Друга малинка в стійці виконує три ролі:

  • Медіасервер — фільми і серіали з мережевої папки через Samba, повноцінна медіатека з постерами
  • DOS-приставка — класика 80-90х через DOSBox
  • Консольна приставка — NES, SNES, Sega через RetroPlayer з джойстиком

Загальний час налаштування — близько години. LibreELEC справді живе за своїм слоганом “just enough OS” — нічого зайвого, все що потрібно працює з коробки. А те що малинка яка коштує менше 50 доларів замінює і медіацентр і ретро-приставку — це вже приємний бонус.

Наступна стаття — K3s кластер на трьох малинках що залишились. Там буде цікавіше: різнорідні вузли, Luckfox Pico Pro як ARMv7 edge node і принцип “кластер з мотлоху”. Підписуйтесь на серію.

Теги: Raspberry Pi, LibreELEC, Kodi, Samba, медіасервер, DOSBox, RetroPlayer, ретро-ігри, IoT, DIY

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *