Ubuntu Desktop 18.10 に PT2 と epgrec UNA を使った録画サーバーを構築する（インストール編）2 / 4

# 作業前の準備

### rootユーザーに切り替え
デスクトップ上で右クリックし、`端末を開く`を選択します。
ここから先は全てrootユーザーで作業するので、

    sudo su -

でrootユーザーに切り替えます。

### 各種パッケージを最新化

    apt update
    apt upgrade

### viを操作しやすいように設定

    vi .vimrc

とコマンドを実行してviの設定ファイルを作成し、以下の内容を記述して保存します。[^1]

    set nocompatible
    set backspace=indent,eol,start

[^1]: これを行わないとviを使ったときに方向キーが使えなくなってストレスが溜まる。

### 環境構築用データのコピー

準備編で用意した環境構築用データが入ったUSBを挿します。
`/media`以降にマウントされるので、

    mkdir work && cd work && cp -a /media/USBの型番など/* .

でworkフォルダーにコピーします。
その後はデスクトップ上のUSBメモリーアイコンを右クリックし、`取り出す`を選択してUSBメモリーを抜きます。


# 各種ドライバーを入れる

### カードリーダー

    👉ドライバーのインストール
    apt install pcscd pcsc-tools

    👉インストールが終わったらきちんとカードリーダーが認識されているかチェックする
    pcsc_scan
    
    👉最後の行にこの表示が出ていればOK。Ctrl + Cで抜ける
        Japanese Chijou Digital B-CAS Card (pay TV)

### 標準ドライバーを自動ロードしないようにする

    👉現在ロードされているドライバーを表示
    　２行表示され、うち１つは earth_pt1 という名前になっている
    lsmod | grep pt1

    👉現在ロードされているドライバーを外す
    rmmod earth_pt1

    👉もう一度、現在ロードされているドライバーを表示
    　今度は何も表示されない
    lsmod | grep pt1

    👉標準ドライバーを自動ロードしないよう設定する
    vi /etc/modprobe.d/blacklist.conf

blacklist.confの一番下の行に以下を追加。

```/etc/modprobe.d/blacklist.conf
    # PT1
    blacklist earth_pt1
```

### PT2ドライバー

必要なパッケージをインストール

    apt install pkg-config autoconf mercurial libpcsclite-dev ffmpeg libavformat-dev libdlna-dev libupnp-dev

ドライバーを入れる

    ⚠️事前準備
    cp -a pt1-17b4f7b5dccb/driver /usr/src/pt1-17b4f7b5dccb

    👉ドライバーをビルド＆インストール
    cd pt1-17b4f7b5dccb/driver/
    make && make install

    👉ドライバーを読み込む
    modprobe pt1_drv

    👉正しく読み込まれたことを確認
    　１行表示される
    lsmod | grep pt1_drv

DKMSを使ってのドライバーインストール

このままだと突然ドライバーが消え去ることがあるので、DKMSを使ってドライバーをインストールします。

    👉コンフィグファイルを作成
    vi /usr/src/pt1-17b4f7b5dccb/dkms.conf

```/usr/src/pt1-17b4f7b5dccb/dkms.conf
PACKAGE_NAME="pt1"
PACKAGE_VERSION="17b4f7b5dccb"
CLEAN="make clean"
MAKE="make"
BUILT_MODULE_NAME="pt1_drv"
DEST_MODULE_LOCATION="/kernel/drivers/video/"
AUTOINSTALL="YES"
```

```console
👉ドライバーのソースを追加
$ dkms add -m pt1 -v 17b4f7b5dccb

Creating symlink /var/lib/dkms/pt1/17b4f7b5dccb/source ->
                 /usr/src/pt1-17b4f7b5dccb

DKMS: add completed.

👉インストール実行
$ /usr/lib/dkms/dkms_autoinstaller start
 * dkms: running auto installation service for kernel 4.15.0-51-generic
Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area....
make -j2 KERNELRELEASE=4.15.0-51-generic.......
Signing module:
 - /var/lib/dkms/pt1/17b4f7b5dccb/4.15.0-51-generic/x86_64/module/pt1_drv.ko
This system doesn't support Secure Boot
Secure Boot not enabled on this system.
cleaning build area...

DKMS: build completed.

pt1_drv.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.0-51-generic/updates/dkms/

depmod...

DKMS: install completed.
👉インストールできたことを確認
$ dkms status | grep pt1
pt1, 17b4f7b5dccb, 4.15.0-51-generic, x86_64: installed
👉モジュールをロード
$ modprobe pt1_drv
👉ロードできたことを確認
$ lsmod|grep pt1
pt1_drv                40960  0
```

なぜ最初からDKMSを使ってドライバーをインストールしないのかというと、DKMSを使ってドライバーをインストールすると、なぜかファイルのモードがroot以外扱えないようになるからです。

    👉これじゃだめ
    crw------- 1 root video 243, 0  3月 26 11:45 /dev/pt1video0
    crw------- 1 root video 243, 1  3月 26 11:45 /dev/pt1video1
    crw------- 1 root video 243, 2  3月 26 11:45 /dev/pt1video2
    crw------- 1 root video 243, 3  3月 26 11:45 /dev/pt1video3

    👉こっちがいい
    crw-rw-rw- 1 root video 243, 0  3月 26 11:45 /dev/pt1video0
    crw-rw-rw- 1 root video 243, 1  3月 26 11:45 /dev/pt1video1
    crw-rw-rw- 1 root video 243, 2  3月 26 11:45 /dev/pt1video2
    crw-rw-rw- 1 root video 243, 3  3月 26 11:45 /dev/pt1video3


### arib25

    cd ../../pt1-ec7c87854f2f/arib25/
    make && make install

### recpt1

    👉移動
    cd ../../pt1-c8688d7d6382/recpt1/

    👉Windowsからコピーしたファイルの場合、実行権限がない場合があるので実行できるようにする
    chmod 777 *

    👉ビルド
    ./autogen.sh
    ./configure --enable-b25
    make && make install

    👉再起動
    reboot

※2020/4/26 コメントでの指摘内容を反映しビルドにmakeを追加

### 正しくチューナーが認識されていることを確認[^2]

    ls -la /dev/pt1*
      crw-rw-rw- 1 root video 241, 0 11月 10 14:00 /dev/pt1video0
      crw-rw-rw- 1 root video 241, 1 11月 10 14:00 /dev/pt1video1
      crw-rw-rw- 1 root video 241, 2 11月 10 14:00 /dev/pt1video2
      crw-rw-rw- 1 root video 241, 3 11月 10 14:00 /dev/pt1video3

[^2]: 初回環境構築時はここで「そのようなファイルやディレクトリはありません」と言われてどうやってもドライバーが認識されず、16.04や17.10に変更したりして本当に１日潰した。よく分からないが、PT2を抜きホコリをはらったり、真っすぐになるように挿しなおしたりしたらようやくこの表示になった。１日同じことをずっと繰り返してて胃に穴が開くかと思った。

### 正しく受信できていることを確認

    👉BS放送チューナー１番目をチェック（211はBS11のチャンネル番号）
    checksignal --device /dev/pt1video0 --lnb 15 211
      LNB = 15V
      device = /dev/pt1video0
      C/N = 17.516788dB

    👉BS放送チューナー２番目をチェック（211はBS11のチャンネル番号）
    checksignal --device /dev/pt1video1 --lnb 15 211
      LNB = 15V
      device = /dev/pt1video1
      C/N = 17.516788dB

    👉地上波チューナー１番目をチェック（16はTokyo MXのチャンネル番号）
    checksignal --device /dev/pt1video2 16
      device = /dev/pt1video2
      C/N = 33.583664dB

    👉地上波チューナー２番目をチェック（16はTokyo MXのチャンネル番号）
    checksignal --device /dev/pt1video3 16
      device = /dev/pt1video3
      C/N = 33.090145dB

いずれもCtrl + Cで抜けます。
チャンネル番号は住んでいる場所に応じて[受信できるチャンネルの番号](https://www.maspro.co.jp/contact/bro/bro_ch.html)に変更してください。

### 正しく録画できることを確認

    👉/tmpフォルダーで
    cd /tmp

    👉16（Tokyo MXを）10（秒間）test.ts（という名前で録画する）
    recpt1 --b25 --strip 16 10 test.ts
      using B25...
      enable B25 strip
      pid = 3016
      C/N = 33.307457dB
      Recording...
      Recorded 12sec

続いてepgrec UNAなどのアプリケーションをセットアップしていきます。

**次: [Ubuntu Desktop 18.10 に PT2 と epgrec UNA を使った録画サーバーを構築する（アプリケーション構築編）3 / 4](https://qiita.com/Uchida-Yuuki/items/8adc23fb2e372f40a225)**

# 参考文献
[Ubuntu16.04(kernel4.4)でPT2動作](https://qiita.com/kummn/items/dc2ae0a22e6175762d06)