最近PLEXのテレビチューナーを買いました。今日はこれを使ってMirakurun+EPGStationな録画鯖を構築しようと思います。
2024/07/22 Proxmox VE 8.2にアップデートした際のメモを追加
OS: (→8.2にアプデ済)
コンテナイメージ:ubuntu 22.04
チューナー:PX-W3PE5 公式サイト | メルカリで探す
チューナードライバ:px4_drv
カードリーダー:ACR39-NTTCom 公式サイト | メルカリで探す
※「メルカリで探す」のリンクはアフィリエイトリンクです。サイト運営者が報酬を受け取る場合があります。詳しくはこちら
参考リンク
LXCコンテナでPX-S1UDを使って録画サーバを作るメモ – daikichi298 | Qiita
Proxmox上に録画サーバーを立ててみた2023 – Yakumo Saki | Zenn
Hyper-V Server 2019でPX-W3PE5とmirakurunを動かす | メモ帳.scr
ドライバインストール
まずpx4_drvをいれる。
ドライバはホスト側にインストールする必要があるのでホスト側で作業します!!
まずファームウェアの抽出。ファームウェアは全機種共通らしいです
メモ : 公式ドライバ一覧
sudo apt install git unzip gcc make dkms
git clone https://github.com/nns779/px4_drv.git
cd px4_drv/fwtool
make
wget http://plex-net.co.jp/download/pxq3u4v1.4.zip -O pxq3u4v1.4.zip
unzip -oj pxq3u4v1.4.zip pxq3u4v1/x64/PXQ3U4.sys
./fwtool PXQ3U4.sys it930x-firmware.bin
fwtool for px4 drivers
Driver file (in) : PXQ3U4.sys
Firmware file (out) : it930x-firmware.bin
Driver description: PX-Q3U4 BDA Ver.1.4 64bit
Firmware length: 7013 bytes
Firmware CRC32: df0bf49a
OK.
抽出できたらインストールする。
sudo mkdir -p /lib/firmware
sudo cp it930x-firmware.bin /lib/firmware/
cd ../
sudo cp -a ./ /usr/src/px4_drv-0.2.1
sudo dkms add px4_drv/0.2.1
sudo dkms install px4_drv/0.2.1
Error! Your kernel headers for kernel 5.15.116-1-pve cannot be found.
Please install the linux-headers-5.15.116-1-pve package,
or use the --kernelsourcedir option to tell DKMS where it's located
sudo apt install pve-headers-5.15.116-1-pve
sudo dkms install px4_drv/0.2.1 # 必要なパッケージを入れたらもっかいやってみる
...
DKMS: install completed.
※pve-headers-の後は環境によって変わるので、uname -r
で確認。
フォーク版ではファームウェアの抽出も含めていいかんじにやってくれます。
wget https://github.com/tsukumijima/px4_drv/releases/download/v0.4.5/px4-drv-dkms_0.4.5_all.deb
sudo apt install -y ./px4-drv-dkms_0.4.5_all.deb
入れたら再起動、モジュールが入ったか確認
lsmod | grep -e ^px4_drv
px4_drv 172032 0
あとは/dev/px4video*
にファイルができている、はず。
ファイルができてない場合は再起動とか、後述のudev再読み込みで改善する可能性があります。
自分の場合は翌日確認したらファイルが生えてました(なんで)
チューナー・カードリーダーをLXCに見せる
EPGStationを稼働するLXCが作成されていることが前提です。
px4_drvを導入すると、udevの設定ファイルが作られる。LXCに見せるためにパーミッション設定を変える(いらないかも?)。
#マルチチューナー使う方は"pxmlt5video*"や"pxmlt8video*"の行を書き換え
#KERNEL=="px4video*", GROUP="video", MODE="0664"
KERNEL=="px4video*", GROUP="video", MODE="0666"
udev再読み込みして確認
# udevadm control --reload
# udevadm trigger
# ls -l /dev/px*
crw-rw-rw- 1 root video 238, 0 10月 14 18:44 /dev/px4video0
crw-rw-rw- 1 root video 238, 1 10月 14 18:44 /dev/px4video1
crw-rw-rw- 1 root video 238, 2 10月 14 18:44 /dev/px4video2
crw-rw-rw- 1 root video 238, 3 10月 14 18:44 /dev/px4video3
ちゃんと666になってますね
次にカードリーダーの情報を確認。Busの後の数字をメモしておいてください。
# lsusb
...
Bus 001 Device 002: ID 0511:073f N'Able (DataBook) Technologies, Inc. PXW3PE5
Bus 002 Device 002: ID 072f:b100 Advanced Card Systems, Ltd ACR39U
...
(最初チューナーがlspciで出てこなくて焦った。基板でUSB-PCIe変換してる為かUSB機器として認識してるみたい)
↓一応書いたけど無駄かもしれない
# ACR39-NTTCom
SUBSYSTEM=="usb", ATTRS{idVendor}=="072f", ATTRS{idProduct}=="b100", GROUP="video", MODE="0666"
udevadm control --reload
udevadm trigger
↑
次はLXCの設定ファイル( {録画鯖LXCのID}.conf )を書き換えます。この場合は153
lxc.cgroup2.devices.allow: c 189:* rwm
// /dev/bus/usb/{さっきメモったBusの後の数字}
lxc.mount.entry: /dev/bus/usb/002 dev/bus/usb/002 none bind,create=dir,mode=0666
lxc.cgroup2.devices.allow: c 238:* rwm
// ↓ここは録画コマンドが動かなくて試行錯誤した後なので、いらないかもしれない
lxc.cgroup2.devices.allow: c *:* rwm
// ↑
lxc.mount.entry: /dev/px4video0 dev/px4video0 none bind,optional,create=file
lxc.mount.entry: /dev/px4video1 dev/px4video1 none bind,optional,create=file
lxc.mount.entry: /dev/px4video2 dev/px4video2 none bind,optional,create=file
lxc.mount.entry: /dev/px4video3 dev/px4video3 none bind,optional,create=file
注意:
- デバイスファイルは複数指定する方法があるかもしれないけどそれを知らないので、ファイルの数だけ書く
- 1行目のcのあとの数字は、
ls -l /dev/px4*
して、root videoに続く数字にする
保存したら次へ
コメント