Synology NAS へ nns779/px4_drv のインストール

Synology NAS向けクロスコンパイル環境を用意し、px4_drv をコンパイル・インストールする事で、NAS上から以下のTVチューナーを認識できるようにします。

  • PLEX
    • PX-W3U4
    • PX-Q3U4
    • PX-W3PE4
    • PX-Q3PE4
    • PX-W3PE5
    • PX-Q3PE5
    • PX-MLT5PE
    • PX-MLT8PE
  • e-Better
    • DTV02-1T1S-U (実験的)
    • DTV02A-1T1S-U
    • DTV02A-4TS-P

実行手順

実行手順の前提条件
  • DSM 7.2
  • パッケージセンター:Container Manager のインストール、実行
  • パッケージセンター:Git Server のインストール、実行(構築作業が終えれば停止またはアンインストール可能)
  • SSHサービスの有効化

1. rootユーザーに昇格する

$ sudo -i

2. Gitリポジトリを取得する

GitHub:collelog/synology-make-px4_drv

# 任意の場所で問題ありません
$ cd /volume1/docker

$ git clone https://github.com/collelog/synology-make-px4_drv.git

3. Dockerイメージをビルドする

$ cd synology-make-px4_drv

$ docker build -t collelog/syno-make-px4_drv -f [DSMバージョン]-[CPUパッケージアーキテクチャ].Dockerfile .

# 例
$ docker build -t collelog/syno-make-px4_drv -f 7.2-denverton.Dockerfile .
CPUパッケージアーキテクチャ

Synology NASのCPUの種類は Synology KB:Synology NAS に搭載されている CPU の種類は? で確認してください。

イメージビルド時に指定されたCPU用のクロスコンパイルツールチェインを含む親Dockerイメージ:collelog/dsmpkg-env がDockerHubからダウンロードされます。

4. Dockerコンテナを実行する

$ docker run --rm --name syno-make-px4_drv -v [出力先(ホスト側フルパス)]:/build_env/toolkit/results_file/px4_drv -i -d collelog/syno-make-px4_drv

# 例:/volume1/docker/synology-make-px4_drv/resultを事前にディレクトリ作成し、指定した場合
$ docker run --rm --name syno-make-px4_drv -v /volume1/docker/synology-make-px4_drv/result:/build_env/toolkit/results_file/px4_drv -i -d collelog/syno-make-px4_drv

5. 出力先に以下のファイルが格納される

$ ls [出力先(ホスト側フルパス)]

# 例:Dockerコンテナ実行時に/volume1/docker/synology-make-px4_drv/resultを指定した場合
$ ls /volume1/docker/synology-make-px4_drv/result

以下のファイルが存在することを確認します。

  • it930x-firmware.bin
  • px4_drv.ko

6. nns779/px4_drv を配置する

$ cd [出力先(ホスト側フルパス)]

# 例(/volume1/docker/synology-make-px4_drv/resultを指定した場合)
$ cd /volume1/docker/synology-make-px4_drv/result

$ chmod 755 it930x-firmware.bin px4_drv.ko
$ cp -p it930x-firmware.bin /lib/firmware/
$ cp px4_drv.ko /usr/lib/modules/

7. px4_drvのロードをする

insmod /lib/modules/px4_drv.ko

8. px4_drvのロードの確認をする

$ lsmod | grep -e ^px4_drv
px4_drv                99313  4

px4_drv から始まる行が表示されれば、カーネルモジュールが正常にロードされています。

9. チューナーデバイスが認識する事を確認する

PLEX PX-W3U4/PX-Q3U4/PX-W3PE4/PX-Q3PE4/PX-W3PE5/PX-Q3PE5を接続した場合
$ ls /dev/px4video*
/dev/px4video0  /dev/px4video2  /dev/px4video4  /dev/px4video6
/dev/px4video1  /dev/px4video3  /dev/px4video5  /dev/px4video7
PLEX PX-MLT5PE/PX-MLT8PEを接続した場合
$ ls /dev/pxmlt5video*
/dev/pxmlt5video0  /dev/pxmlt5video2  /dev/pxmlt5video4
/dev/pxmlt5video1  /dev/pxmlt5video3
$ ls /dev/pxmlt8video*
/dev/pxmlt8video0  /dev/pxmlt8video3  /dev/pxmlt8video6
/dev/pxmlt8video1  /dev/pxmlt8video4  /dev/pxmlt8video7
/dev/pxmlt8video2  /dev/pxmlt8video5

10. px4_drvの自動ロードを設定する

DSM 上で開く設定画面
[コントロール パネル] > [タスク スケジューラー]  >  [作成] – [トリガーされたタスク] – [ユーザー指定のスクリプト]
[ユーザー指定のスクリプト] 画面で入力する設定値
  • タスク: insmod px4_drv (任意)
  • ユーザー:root
  • イベント:ブートアップ
  • ユーザー指定のスクリプト:insmod /lib/modules/px4_drv.ko

DSMのタスクスケジューラにカーネルモジュールのロードコマンドを登録することで、ブートアップ時にpx4_drvが自動でロードされます。