ubuntu20でpt2、recpt1、epgrecUNA、dkmsを用いた
chardev版ドライバの設定を行ったので忘れないようにメモ
標準のdvbドライバでrecdvbを使用してepgrecUNAをやってみたが、recdvbだとwww-dataで使用できないようだった。ユーザが実行すると録画できるが、www-dataで録画実行するとチューナが使えないエラーになる。くわしくないので原因はよくわかりません。
参考
○カードリーダー用ドライバのインストール
$sudo apt -y install pcscd pcsc-tools libpcsclite-dev
$pcsc_scan
最後にJapanese Chijou Digital B-CAS Card (pay TV)と出ればOK
○arib25インストール
$sudo apt install git $git clone https://github.com/stz2012/libarib25.git $cd libarib25 $ sudo apt installbuild-essential cmake
pkg-config
$ cmake .(
'.'も必要)
$ make $ sudo make install
○chardev版ドライバインストール(dkms使用)
参照
・必要なパッケージをインストール
sudo apt-get install -y mercurial dkms linux-headers-`uname -r`
・ソースを取得
hg clone http://hg.honeyplanet.jp/pt1
(pt1フォルダができ、中にdriverとrecpt1のフォルダができる)
・バージョンを変数に代入(echo $REVISIONで値を確認できる)
cd pt1
REVISION=`hg log -r tip | sed -n -e '1s/.*://p'`
・下記はバグの修正(詳細は参照ブログ内)
cd ..
sed -i -e '/^static int pt1_release(struct inode \*inode, struct file \*file)$/,/^}$/s/mutex_unlock(&channel->ptr->lock);/\/\* mutex_unlock(\&channel->ptr->lock); \*\//' pt1/driver/pt1_pci.c
sed -i -e '/^static int pt1_release(struct inode \*inode, struct file \*file)$/,/^}$/s/^\treturn 0;$/\tmutex_unlock(\&channel->ptr->lock);\n\n\treturn 0;/' pt1/driver/pt1_pci.c
・ソースをコピー
sudo cp -r pt1/driver/ /usr/src/pt1_drv-$REVISION/
・dkms.confを作成
cat << EOT | sudo tee /usr/src/pt1_drv-$REVISION/dkms.conf
PACKAGE_NAME="pt1_drv"
PACKAGE_VERSION="$REVISION"
MAKE[0]="make KVER=\${kernelver}"
CLEAN[0]="make clean"
BUILT_MODULE_NAME[0]="pt1_drv"
DEST_MODULE_LOCATION[0]="/kernel/drivers/video"
AUTOINSTALL="YES"
EOT
・ドライバインストール
sudo dkms add -m pt1_drv -v $REVISION
sudo dkms build -m pt1_drv -v $REVISION
sudo dkms install -m pt1_drv -v $REVISION
・dvb版のドライバが読み込まれないようにする echo 'blacklist earth-pt1' | sudo tee -a /etc/modprobe.d/blacklist.conf
・dkmsでドライバーをインストールするとrootアクセスのみになる(0600)ので、
/etc/udev/rules.d/50-udev-default.rules (ファイルがないので新規作成)
に以下を記載し再起動
#pt1video
KERNEL=="pt1video*",MODE="0666",GROUP="video"
ls -l /dev/pt1video*
で確認すると
rw-rw-rw- root video
になっている
※録画ができなくなって、モジュールが消えて、modprobeすると
ERROR: could not insert 'pt1_drv': Exec format error
と出る場合
$ cd pt1 (pt1のフォルダに行って)
$ REVISION=`hg log -r tip | sed -n -e '1s/.*://p'` (バージョンを取得)
$ sudo dkms remove -m pt1_drv/$REVISION --all (モジュール削除)
以下で再インストール
$sudo dkms build -m pt1_drv -v $REVISION
$sudo dkms install -m pt1_drv -v $REVISION
※アンインストール方法
・ドライバモジュールのアンインストール
$ sudo dkms uninstall -m pt1_drv -v バージョン
・ソースパッケージの登録削除
$ sudo dkms remove -m pt1_drv -v バージョン --all
○recpt1
・パッケージインストール
$ apt install pkg-config autoconf mercurial libpcsclite-dev ffmpeg libavformat-dev libdlna-dev libupnp-dev
・recpt1 httpサーバ機能追加パッチ 新本家[c8688d7d6382]以降対応版をダウンロード
・ダウンロードしたrecpt1-http-rev4.tar.gzを解凍
$ tar -zxvf recpt1-http-rev4.tar.gz
・文字化けを治す
$ sudo apt-get install nkf
$ nkf -w8 recpt1-http-rev4/recpt1-http.diff > http4.patch
http4.patchとドライバのところでダウンロードしたrecpt1/が同じフォルダにある状態で
$ patch -p1 < http4.patch
$ cd recpt1
$ ./autogen.sh
$ ./configure --enable-b25
$ make
$ sudo make install
・録画確認
適当なフォルダで下記録画コマンドでtsファイルができればOK
$recpt1 --b25 --strip 17 10 test.ts (17はチャンネル、10は10秒)
$recpt1 --b25 --strip 211 10 test1.ts (211はBS11イレブン)
○パッケージ追加
$sudo apt install ntp at nginx php-fpm php-cli mysql-server php-mysql php-xml php-mbstring
○at
・atコマンドをwww-dataで使用できるように書き換え
$sudo sed -i".org" 's/www-data//g' /etc/at.deny ○MySQL ・下記ファイルに追記
/etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]に以下を追加
sql_mode = ''
・MySQLを再起動
$sudo service mysql restart
$ sudo mysql -u root -p (sudoでログインでいいのかわからない。とりあえずできた)
sudoのパスワード入力
・必要なら文字コードを確認
mysql> show variables like "char%";
utf8mb4になってればOK。systemはutf8mb3でOK?
・データベース(epgrec)作成
mysql> create database epgrec;
$ sudo sed -i".org" 's/^;date.timezone =/date.timezone = "Asia\/Tokyo"/g'
/etc/php/7.4/fpm/php.ini service php7.4-fpm restart
○nginx
cd /etc/nginx/sites-enabled/
$sudo rm default
$
cd ../sites-available/************************************
server {
listen 80 default_server;
server_name localhost;
root /var/www/epgrec;
charset utf-8;
index index.php index.html;
location ~ [^/]\.php {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}
○epgdump
epgdumpUNA160127をダウンロード
解凍してepgdumpフォルダに入って
$make
$sudo make install
○epgrecUNA
下記ファイルをダウンロード
epgrecUNA151114
epgrecUNA151114Fix1
epgrecUNA151114Fix2
解凍して
epgrecUNA151114に順番にFix1を上書きコピー、Fix2を上書きコピー。
epgrec/templates/programTable.htmlを書き換え(PHP7が16進数を読まないので番組検索ができなくなる)
666行目:
{if $k_category != 15 || $k_sub_genre>=0x3f }
↓
{if $k_category != 15 || $k_sub_genre>=63 }
679行目:
<b> 曜日:</b>{if $weekofday == 0x7f}なし{else}{$wds_name}{/if}
↓
<b> 曜日:</b>{if $weekofday == 127}なし{else}{$wds_name}{/if}
○epgrec/config.phpを書き換え
・地上波のチャンネルを住んでる場所に合わせる
・下記の0をチューナ数に合わせて変更(0→2)
// 第一チューナー設定(主にPTn)
define( 'TUNER_UNIT1', 0 );
・必要に応じて下記変更
リアルタイム視聴有効で下記FALSE→TRUE
// リアルタイム視聴
define( 'REALVIEW', FALSE );
define( 'REALVIEW_HTTP', FALSE );
epg廃止チャンネルを自動指定は下記FALSE→TRUE
define( 'EXTINCT_CH_AUTO_DELETE', FALSE );
$ cd /var/www/epgrec/
○最後の設定
http://localhost
にアクセス