[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 │
└─────┴───────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

一般ユーザでのpm2での自動起動

Ubuntu20.04で新しく構築していて、pm2の自動起動がうまく動かなかったのでちょっと試行錯誤したのでメモ。
以下、ユーザ名:userxで実行とする。

$ pm2 startup
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u userx --hp /home/uesrx
$ sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u userx --hp /home/userx
[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=forking
User=userx
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/userx/.pm2
PIDFile=/home/userx/.pm2/pm2.pid
Restart=on-failure

ExecStart=/usr/local/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/local/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/local/lib/node_modules/pm2/bin/pm2 kill

[Install]
WantedBy=multi-user.target

Target path
/etc/systemd/system/pm2-userx.service
Command list
[ 'systemctl enable pm2-userx' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-userx.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-userx...
Created symlink /etc/systemd/system/multi-user.target.wants/pm2-userx.service → /etc/systemd/system/pm2-userx.service.
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save

[PM2] Remove init script via:
$ pm2 unstartup systemd

I got a Beelink U59

I received a new PC from AliExpress today.
Beelink U59(Celeron N5095 with 8GB RAM).

Box Front
Box Back
The machine apper
With 3.5 inch HDD for size comparison
With accessories
AC/DC adapter (US)

And Power ON!

BIOS – Main
BIOS – Boot

Crystal disk mark
Windows 11 ready.
I did clean install windows 11 after this.
One DDR memory (There are two slots) and M.2. Type SSD(SATA) inside the machine.
You can add a 2.5 inch drive to the top plate.
With VESA mount adapter
mounted it.
(Due to the structure of the plate, it was fixed with a single screw.)’