LXCで録画鯖 [1]PVEホストマシンでの準備【PX-W3PE5/px4_drv】

最近PLEXのテレビチューナーを買いました。今日はこれを使ってMirakurun+EPGStationな録画鯖を構築しようと思います。

環境

OS:Proxmox VE 7.4
コンテナイメージ:ubuntu 22.04
チューナー:PX-W3PE5
チューナードライバ:px4_drv
カードリーダー:ACR39-NTTCom
TS抜き関連:Mirakurun,EPGStation,KonomiTV(次回)

参考リンク

LXCコンテナでPX-S1UDを使って録画サーバを作るメモ – daikichi298 | Qiita

Proxmox上に録画サーバーを立ててみた2023 – Yakumo Saki | Zenn

Hyper-V Server 2019でPX-W3PE5とmirakurunを動かす | メモ帳.scr

The DKMS command will output ” Your kernel headers for kernel 5.4.78-2-pve cannot be found”. | Proxmox Support Forum

ドライバインストール

まずpx4_drvをいれる。

ドライバはホスト側にインストールする必要があるのでホスト側で作業する。

まずファームウェアの抽出。公式ドライバ一覧から自分のに合った物を選ぶ..と言おうとしたけどW3PE5のだとUnknown driver file.と言われてしまったので他のを代用。(そもそもファームウェアは全共通らしい)

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で確認。

再起動する

lsmod | grep -e ^px4_drv
px4_drv               172032  0

/dev/px4video*にファイルができるはずだけどない..

~翌日~

いつの間にかファイルが生えていた…なんでだろう。

やったことはWin10のVMでTVTest動かしてみる、再起動、usbデバイスの権限再設定(再起動すると権限が戻ってしまう udevとかでいけるのかな?)、udev再読み込みぐらいなのだけど..

ログみたらit930_firmware読み込みエラー出てたので、そのへんがまずかったのかも

チューナー・カードリーダーをLXCに見せる

何か適当なLXCが作成されていることが前提。

px4_drvを導入すると、udevの設定ファイルが作られる。LXCに見せるためにパーミッション設定を変える(いらないかも)。

#マルチチューナー使う方は"pxmlt5video*"や"pxmlt8video*"の行を書き換え
#KERNEL=="px4video*", GROUP="video", MODE="0664"
KERNEL=="px4video*", GROUP="video", MODE="0666"
# 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になってますね

次にカードリーダーの情報を確認

# 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

# chmod 666 /dev/bus/usb/002/002

次はLXCの設定ファイルを書き換える。以下を追記する

153.confの番号のところは、録画鯖用のコンテナのIDに置き換えてください。

lxc.cgroup.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/bus/usb/002 dev/bus/usb/002 none bind,create=dir,mode=0666

lxc.cgroup.devices.allow: c 238:* rwm
// ↓ここは録画コマンドが動かなくて試行錯誤した後なので、いらないかもしれない
lxc.cgroup.devices.allow: c *:* 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に続く数字にする

保存したら次へ

LXCにMirakurun,EPGStation 次⇀

コメント

タイトルとURLをコピーしました