録画サーバのデータをテレビで見たかったので Raspberry Pi に LibreELEC を入れてみた

Raspberry Pi ガチ勢ではないんですが、
3Bで音楽再生機を作ってみたり、4Bをチューナーサーバとして使ってファンを燃やしたりしてきました。

今回は「録画サーバのデータをリビングのテレビで快適に再生したい」という目的で 最近使ってなかったRaspberry Pi 3B を使うことにしました。

BDプレイヤーでの再生は意外と制限が多い

自宅の録画サーバには、地デジなどを録画したファイルが大量に保存されています。形式はよくある H.264 + AAC の mp4 です。

普段はEPGStationにて再生しているので特に困ることはないのですが、
家族向けかつテレビ向けとはなりません。

これをテレビで見るために、最初はシンプルに

  • USBメモリにコピー
  • 家庭用BDプレイヤーに挿す

という方法を試しました。

しかし、これが意外とうまくいきません。
仕様上は対応しているはずの H.264 + AAC でも、音声がとぎれとぎれで正常に再生されないなど、実際には正常に扱えず音声をAC-3に変換しないと正常に再生できませんでした。

ファイルをいちいち変換するのも面倒なので、別の方法を探すことにしました。

余っていた Raspberry Pi 3B を活用

そこで思い出したのが、引き出しに眠っていた Raspberry Pi 3B です。

「何か再生専用機にできないかな」と調べていると、LibreELEC というディストリビューションの存在を知りました。

LibreELEC は、Kodi を動かすことに特化した軽量 Linux です。

インストールも非常に簡単で、Raspberri Pi Imagerが公式に対応しているため、

  • Raspberri Pi Imager で microSD に書き込み
  • Raspberry Pi に挿して起動

これだけです。
面倒なセットアップはほぼありません。

Kodi の UX はやはり優秀

Kodi 自体は以前使ったことがありましたが、改めて使ってみると UX は非常によくできています。

特に良い点:

  • リモコン操作との親和性が高い(既存のテレビリモコンで操作できる)
  • 動作が軽い(3Bでも問題なし)
  • 再生互換性が非常に高い
  • UIがテレビ向けに最適化されている

BDプレイヤーでは再生できなかったファイルも、問題なく再生できました。

やはりソフトウェアプレイヤーは強いです。

ファイルサーバ側は miniDLNA で問題なし

録画サーバ側では、以前から miniDLNA を使っていました。

DLNAサーバとして非常にシンプルで、

  • 軽量
  • 安定
  • 設定が簡単

という特徴があります。

Kodi からも問題なく認識でき、

ビデオ → UPnP → miniDLNA

と辿るだけで録画一覧にアクセスできます。
この時点で目的は達成できました。

ChatGPT に他の選択肢も聞いてみた

せっかくなので、他にモダンな選択肢があるのか ChatGPT に聞いてみました。

いくつか候補が挙がりましたが、その中でも
「今から新しく導入するなら Jellyfin 一択」
とのことでした。

Jellyfin は

  • オープンソース
  • メタデータ管理
  • サムネイル生成
  • Web UI
  • ユーザー管理
  • トランスコード

など、非常に多機能なメディアサーバです。

さっそくインストールしてみました。

Jellyfin は高機能だが今回はオーバースペック

実際に使ってみると、確かに非常に高機能です。

  • ブラウザから操作できる
  • 見た目が美しい
  • ライブラリ管理がしっかりしている

しかし、今回の用途は
「録画ファイルをそのまま再生したいだけ」
です。

その観点では、

  • WebUIでのライブラリ登録が面倒
  • 求められるディレクトリの階層構造が存在する
  • 配信時にトランスコードを前提としている

といった点が扱いづらく感じました。

Jellyfin は「Netflix のような体験を自宅で再現する」用途には最適ですが、
「ファイルをそのまま再生する」
という用途では miniDLNA の方がシンプルで適していると感じました。

結論:Raspberry Pi + LibreELEC は最高の再生機

最終的な構成は以下になりました:

  • 再生機:Raspberry Pi 3B + LibreELEC (Kodi)
  • サーバ:録画サーバ + miniDLNA

この構成のメリット:

  • 非常に安定
  • ほぼすべての形式を再生可能
  • 動作が軽い
  • 消費電力が低い
  • 余っている Raspberry Pi を活用できる

特に「専用機感」があるのが良いです。

電源を入れればすぐ Kodi が起動し、録画一覧にアクセスできます。
BDプレイヤーのような制限もなく、PCのような煩雑さもありません。

余談:Raspberry Pi の再利用先として優秀

Raspberry Pi は、使い道がなくなって引き出しに眠りがちですが、

LibreELEC を入れるだけで優秀なメディアプレイヤーになります。

余っている Raspberry Pi がある方には、かなりおすすめの用途です。

written with ChatGPT

Google Workspaceからユーザを削除した

個人で2アカウントを使っているつもりだったが、3アカウントが存在しておりコストが無駄になっていたので削除を検討した。

削除はこちらから行う。もちろん管理者権限が必要。
削除対象のユーザは13年ログインしていなかった。
ちなみに、管理ユーザだったため、workspaceの重要なメールだけが届いていた。

削除の際、メールやドライブのファイルが削除される旨警告されるが、
実際のところ、メールはほかのユーザに紐づけ(”移行”と表記)が可能。
今回は15年分で100メールにも満たなかったので、あっさり終了。

ちなみに、ユーザ削除じゃなくてアーカイブもあり、
アーカイブユーザの場合は固定費が安くなり、削除だと0になる。
心配であればアーカイブで残すのがよいと思う。

以上、備忘の為。

[2025年最新] raspberry pi でmirakurunを動かす

What I did.

カーネルのアップデートを行ったらカーネルヘッダのインストールの問題でpx4-drvを正常に動作させられなくなったので、
クリーンインストールをして再構築することにした。
先に結果を書くが、現環境でゴニョゴニョ頑張るより新環境を用意したほうが楽だった。

HW

  • RPI 4 2GB
  • PX-Q3U4
  • Generic Smart Card Reader Interface

OSの準備

Ubuntu の Imager を使い、raspberry PI OS 64bitの最新を書き込む
初期設定はしてから書き込んだほうが良い
Ubuntuと迷ったが、デフォルトOSの方が信頼性が高く性能的にも優位ということで選択
久々にFlashしたが、結構時間かかった(具体的に把握してない)
インストールされたバージョンは↓
Linux raspberrypitv 6.6.51+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.51-1+rpt3 (2024-10-08) aarch64

起動後

#locale を設定
sudo raspi-config
# update
sudo apt update
sudo apt upgrade
# 2025/1/2時点では6.6.62が入った
sudo apt autoremove
sudo reboot

# 作業用ディレクトリ作成
WORK=~/tv
mkdir $WORK
cd $WORK

カードリーダー関連インストール

sudo apt install pcsc-tools pcscd
sudo systemctl start pcscd
sudo systemctl enable pcscd
sudo systemctl status pcscd
pcsc_scan

px4-drv インストール(ドライバ)

wget https://github.com/tsukumijima/px4_drv/releases/download/v0.5.1/px4-drv-dkms_0.5.1_all.deb
# apt install だとエラーになるので強引にインストール
#sudo apt install -y ./px4-drv-dkms_0.5.1_all.deb
sudo dpkg -i ./px4-drv-dkms_0.5.1_all.deb
sudo modprobe px4_drv
# 結果が表示されたらOK
lsmod | grep -e ^px4_drv

b25 インストール(復号化)


cd $WORK
sudo apt-get install build-essential pkg-config git cmake libpcsclite-dev
git clone https://github.com/stz2012/libarib25.git
cd libarib25
mkdir build
cd build
cmake ..
make
sudo make install
which b25

recpt1 インストール(録画ソフト)

この方法の場合、b25のインストールが絶対に先。
そうでないと録画に失敗する。

cd $WORK
sudo apt install autoconf automake
git clone --depth 1 https://github.com/stz2012/recpt1.git
cd recpt1/recpt1
./autogen.sh 
./configure --enable-b25
make
sudo make install
which recpt1

mirakurun インストール

curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt install build-essential
sudo npm install pm2 -g
sudo npm install mirakurun -g --unsafe-perm --foreground-scripts --production
sudo mirakurun config server
sudo mirakurun config tuners
sudo mirakurun config channels

再起動

sudo apt update
sudo apt upgrade
sudo apt reboot

動作確認

http://raspberrypi.local:40772/ にアクセス
EventsやLogsの確認を行う
sudo pm2 status でmirakurunの動作状況を確認できる。

学び

  • 自身の遊び環境とはいえ、準備なしにカーネルのアップデートすな(当然)
  • アップデートの前にバックアップとれ(当然)
  • そもそもカーネルのアップデートはせずに新しいsdカードに新環境用意した方が良さそう
  • px4-drv を(別の方が)メンテしていてすごく助かった
  • rpi-clone で定期的にsdカードのバックアップ取るのは良さそう
    • ということで、新しいmicrosdを買いました。

fiio K11 firmware v126

v126があるという噂を目にして、URLをいじったらDLできた。

v122ではLOの状態で起動できずに止まって困っていた。
v126を入れてみたら解消したように思う。

自己責任でどうぞ。
use at your own risk.

https://fiio-firmware.oss-us-west-1.aliyuncs.com/K11/%E8%8B%B1%E6%96%87%E5%9B%BA%E4%BB%B6/K11%20V126%20Firmware.zip

久々にEPGStationをアップデートした

2.7.3だったので、2.10.0にした

$ node -v
v16.13.1
$ n -V
v8.0.1
$ n list
node/16.13.1
$ sudo n 18.16
  installing : node-v18.16.1
       mkdir : /usr/local/n/versions/node/18.16.1
       fetch : https://nodejs.org/dist/v18.16.1/node-v18.16.1-linux-x64.tar.xz
   installed : v18.16.1 (with npm 9.5.1)
$ node -v
v18.16.1
$ git pull
#略
$ git log -n 1
commit 5cf2ea383d37937eacecf424820dbd7a278d577e (HEAD -> master, tag: v2.10.0, origin/v2, origin/master, origin/HEAD)
Author: l3tnun <l3tnun@gmail.com>
Date:   Sun Jun 9 20:25:00 2024 +0900

    fix: alpine でビルドできない問題を修正
$ npm run all-install
$ npm run build
$ pm2 status
┌─────┬───────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name          │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼───────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ epgstation    │ default     │ 2.7.3   │ fork    │ 2866     │ 12m    │ 0    │ online    │ 0%       │ 105.3mb  │ ****     │ disabled │
└─────┴───────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
$ sudo reboot
# 再起動後
$ pm2 list
┌─────┬───────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name          │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼───────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ epgstation    │ default     │ 2.10.0  │ fork    │ 2514     │ 61s    │ 0    │ online    │ 0%       │ 134.0mb  │ ****     │ disabled │
└─────┴───────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘