経緯
Ubuntu Server 24.04上に新しく構築するための手順書です。
もともとLubuntu 18.04上でepgrecUNA+PT2とEpgStation+PT3を動作させていたのですが、最近不安定になってきており、新規で24.04を入れて移行します。EpgStationに比べepgrecUNAの方はまとまった情報が少なかったので備忘録的にまとめました。
今回は暫定的にWYSE5070のeMMC16GB上にインストールしたため、デスクトップ環境は入れてません。
ハードウェア構成
- DELL WYSE 5070
- Celeron J4105
- DDR4 2666 4GB*2
- eMMC 16GB オンボード
- チューナー:e-Better DTV02A-4TS-P
- カードリーダ:SCR3310-NTTCom
- HDD:2.5インチ 1TB

参考にさせてもらった記事
https://www.jifu-labo.net/2015/09/ubuntu_epgrecuna/
https://qiita.com/AnaKutsu/items/9b9f3886c8b8b05f7ec3
https://katauna.hatenablog.com/
前提
Ubuntu Server 24.04 通常インストールしてssh接続がつながる環境
前もって以下は導入しておく。
sudo apt -y install build-essential cmake git zip
カードリーダ
sudo apt install pcscd pcsc-tools libpcsclite-dev
www-datからアクセスできるか確認
sudo -u www-data pcsc_scan
PC/SC device scanner
V 1.7.1 (c) 2001-2022, Ludovic Rousseau <ludovic.rousseau@free.fr>
SCardEstablishContext: Access denied.
アクセスできない場合、www-dataからscscへのアクセスを許可するruleを作成する
polkit.addRule(function(action, subject) {
if ((action.id == "org.debian.pcsc-lite.access_pcsc" &&
subject.user == "www-data" )) {
return polkit.Result.YES;
}
});
polkit.addRule(function(action, subject) {
if ((action.id == "org.debian.pcsc-lite.access_card" &&
subject.user == "www-data" )) {
return polkit.Result.YES;
}
});
上記では、なぜかDesktop環境導入後の環境だとアクセスできなかったため、ファイル名の先頭に00-を付加したら行けた。
cd /usr/share/polkit-1/rules.d
sudo mv org.debian.pcsc-lite.rules 00-org.debian.pcsc-lite.rules
PT2
ここを参考にした
https://ameblo.jp/asuyuki-26/entry-12691326265.html
mutex解除漏れと、Kernelの更新に対応するパッチをあてる。
sudo apt install -y mercurial dkms linux-headers-`uname -r`
dvb版ドライバをblacklistに追加する。lsmodで何も表示されなければPT2が認識されていない。
lsmod | grep earth_pt1
echo 'blacklist earth-pt1' | sudo tee -a /etc/modprobe.d/blacklist.conf
ソースを取得し、mutex解除漏れとKernel6用のパッチを当てる。
hg clone http://hg.honeyplanet.jp/pt1
cp pt1_driver_patch.diff pt1
cd pt1
patch -p0 < pt1_driver_patch.diff
DKMSでインストールする
REVISION=`hg log -r tip | sed -n -e '1s/.*://p'`
cd ..
sudo cp -r pt1/driver/ /usr/src/pt1_drv-$REVISION/
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
DKMSでインストールした場合0600になってしまうのでルールを追加
sudo nano /etc/udev/rules.d/50-udev-default.rules
#pt1video
KERNEL=="pt1video*",MODE="0666",GROUP="video"
sudo reboot
再起動後にパーミッションが期待通りか確認する
ls -l /dev/pt1video*
crw-rw-rw- 1 root video 511, 0 4月 1 12:39 /dev/pt1video0
crw-rw-rw- 1 root video 511, 1 4月 1 12:39 /dev/pt1video1
crw-rw-rw- 1 root video 511, 2 4月 1 12:39 /dev/pt1video2
crw-rw-rw- 1 root video 511, 3 4月 1 12:39 /dev/pt1video3
動作確認
recpt1 --b25 --strip 27 10 test.ts
aptでKernel更新が入った場合に見失った場合
sudo dmesg -T | grep pt1_drv
[水 4月 2 13:51:15 2025] pt1_drv: loading out-of-tree module taints kernel.
[水 4月 2 13:51:15 2025] pt1_drv: module verification failed: signature and/or required key missing - tainting kernel
[水 4月 2 13:51:15 2025] pt1-pci.c: 1.1.0 2010-01-27
[水 4月 2 13:51:15 2025] pt1-pci 0000:03:01.0: enabling device (0000 -> 0002)
[水 4月 2 13:51:16 2025] pt1_thread run
sudo dmesg | grep pt1
[ 3.492404] pt1_drv: loading out-of-tree module taints kernel.
[ 3.492411] pt1_drv: module verification failed: signature and/or required key missing - tainting kernel
[ 3.492450] pt1_drv: disagrees about version of symbol wake_up_process
[ 3.492452] pt1_drv: Unknown symbol wake_up_process (err -22)
[ 3.492464] pt1_drv: disagrees about version of symbol device_create
[ 3.492465] pt1_drv: Unknown symbol device_create (err -22)
[ 3.492492] pt1_drv: disagrees about version of symbol device_destroy
[ 3.492494] pt1_drv: Unknown symbol device_destroy (err -22)
様子見中。もし発生した場合は以下で再インストールすれば復活する
cd /usr/src/
sudo dkms remove pt1_drv/17b4f7b5dccb --all
sudo dkms add pt1_drv/17b4f7b5dccb
sudo dkms build pt1_drv/17b4f7b5dccb
sudo dkms install pt1_drv/17b4f7b5dccb
sudo modprobe pt1_drv
aptでKerne更新のUpdateを除外するいう手もがあるが、セキュリティ上好ましくない。
Unattended-Upgrade::Package-Blacklist {
"linux-headers*";
"linux-image*";
"linux-generic*";
"linux-modules*";
};
px4_drv
概ね公式の手順通りだが、nginxから録画ができるようにwww-dataをvideoグループに追加しておく
wget https://github.com/tsukumijima/px4_drv/releases/download/v0.5.2/px4-drv-dkms_0.5.2_all.deb
sudo dpkg -i px4-drv-dkms_0.5.2_all.deb
lsmod | grep -i px4
sudo modprobe px4_drv
ls -al /dev/ | grep -i isdb6014
crw-rw-r-- 1 root video 510, 0 Mar 26 09:27 isdb6014video0
crw-rw-r-- 1 root video 510, 1 Mar 26 09:27 isdb6014video1
crw-rw-r-- 1 root video 510, 2 Mar 26 09:27 isdb6014video2
crw-rw-r-- 1 root video 510, 3 Mar 26 09:27 isdb6014video3
sudo usermod -aG video www-data
libarib25
sudo apt -y install cmake
git clone https://github.com/stz2012/libarib25.git
cd libarib25
cmake .
make
sudo make install
recpt1
sudo apt -y install autoconf
git clone https://github.com/stz2012/recpt1.git
cd recpt1/recpt1
./autogen.sh
./configure --enable-b25
make
sudo make install
epgdump
適当な何かの別館から以下をダウンロードする
epgrec UNA用epgdump 160127版
tar zxvf epgdumpUNA160127.tar.gz
cd epgdump
make
sudo make install
at
sudo apt -y install at
sudo sed -i".org" 's/www-data//g' /etc/at.deny
mysql
sql_modeを設定する。
8.0からUTF8が標準になっているのでUTF関係の設定は不要。
echo "sql_mode = ''" | sudo tee -a /etc/mysql/mysql.conf.d/mysqld.cnf
DBとユーザーを削除&作成。パスワードが未設定で導入した場合はsudoで-pなしでログインする。
sudo mysql -u root
show variables like "char%";
DROP database epgrec;
CREATE database epgrec;
DROP USER 'epgrec'@'localhost';
CREATE USER 'epgrec'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON epgrec.* TO 'epgrec'@'localhost';
FLUSH PRIVILEGES;
quit;
新環境にDBをコピー
sudo mysql -u epgrec epgrec -p < epgrec_db_backup.dump
DBを旧環境からバックアップ
sudo mysqldump --no-tablespaces --single-transaction -u epgrec --password="password" epgrec > epgrec_db_backup.dump
nginx
php8.3-fpm
sudo apt install php8.3-fpm php8.3-mysql php8.3-xml php-mbstring
find /etc/php/8.3/ -name "php.ini" | xargs sudo sed -i".org" 's/^;date.timezone =/date.timezone = "Asia\/Tokyo"/g'
timedatectl set-timezone Asia/Tokyo
epgrec una
適当な何かの別館からepugrecUNAの3ファイルをダウンロードしておく
epgrecUNA_151114.tar.gz
epgrecUNA151114Fix1.tar.gz
epgrecUNA151114Fix2.tar.gz
以下のパッチをあてる
https://www.yargry.com/notebook/epgrecUNA.html
このままだとBSの番組表取得ができないため、collie.phpを修正する。CSは割愛してます。
vaapi intel
ffmpeg
sudo apt -y install ffmpeg
sudo usermod -aG video www-data
id www-data
uid=33(www-data) gid=33(www-data) groups=33(www-data),44(video)
aptでインストールするだけハードエンコできるようにvaapiを使いたかったので調べたころ、以下の手順で行けました。
qsvを使うためにffmpegをコンパイルするのまでは面倒だったので、記事の途中の以下のコマンドで確認したところaptのffmpegでもqsv使えるようです。。
for i in buildconf hwaccels decoders filters encoders; do echo $i:; ffmpeg -hide_banner -${i} | egrep -i "qsv|vaapi|libmfx"; done
buildconf:
--disable-libmfx
hwaccels:
vaapi
qsv
decoders:
V....D av1_qsv AV1 video (Intel Quick Sync Video acceleration) (codec av1)
V....D h264_qsv H264 video (Intel Quick Sync Video acceleration) (codec h264)
V....D hevc_qsv HEVC video (Intel Quick Sync Video acceleration) (codec hevc)
V....D mjpeg_qsv MJPEG video (Intel Quick Sync Video acceleration) (codec mjpeg)
V....D mpeg2_qsv MPEG2VIDEO video (Intel Quick Sync Video acceleration) (codec mpeg2video)
V....D vc1_qsv VC1 video (Intel Quick Sync Video acceleration) (codec vc1)
V....D vp8_qsv VP8 video (Intel Quick Sync Video acceleration) (codec vp8)
V....D vp9_qsv VP9 video (Intel Quick Sync Video acceleration) (codec vp9)
filters:
... deinterlace_qsv V->V Quick Sync Video "deinterlacing"
... deinterlace_vaapi V->V Deinterlacing of VAAPI surfaces
... denoise_vaapi V->V VAAPI VPP for de-noise
... overlay_qsv VV->V Quick Sync Video overlay.
... overlay_vaapi VV->V Overlay one video on top of another
... procamp_vaapi V->V ProcAmp (color balance) adjustments for hue, saturation, brightness, contrast
... scale_qsv V->V Quick Sync Video "scaling and format conversion"
... scale_vaapi V->V Scale to/from VAAPI surfaces.
... sharpness_vaapi V->V VAAPI VPP for sharpness
... tonemap_vaapi V->V VAAPI VPP for tone-mapping
... transpose_vaapi V->V VAAPI VPP for transpose
... vpp_qsv V->V Quick Sync Video "VPP"
... hstack_vaapi N->V "VA-API" hstack
... vstack_vaapi N->V "VA-API" vstack
... xstack_vaapi N->V "VA-API" xstack
... hstack_qsv N->V "Quick Sync Video" hstack
... vstack_qsv N->V "Quick Sync Video" vstack
... xstack_qsv N->V "Quick Sync Video" xstack
encoders:
V..... av1_qsv AV1 (Intel Quick Sync Video acceleration) (codec av1)
V....D av1_vaapi AV1 (VAAPI) (codec av1)
V..... h264_qsv H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (Intel Quick Sync Video acceleration) (codec h264)
V....D h264_vaapi H.264/AVC (VAAPI) (codec h264)
V..... hevc_qsv HEVC (Intel Quick Sync Video acceleration) (codec hevc)
V....D hevc_vaapi H.265/HEVC (VAAPI) (codec hevc)
V..... mjpeg_qsv MJPEG (Intel Quick Sync Video acceleration) (codec mjpeg)
V....D mjpeg_vaapi MJPEG (VAAPI) (codec mjpeg)
V..... mpeg2_qsv MPEG-2 video (Intel Quick Sync Video acceleration) (codec mpeg2video)
V....D mpeg2_vaapi MPEG-2 (VAAPI) (codec mpeg2video)
V....D vp8_vaapi VP8 (VAAPI) (codec vp8)
V....D vp9_vaapi VP9 (VAAPI) (codec vp9)
V..... vp9_qsv VP9 video (Intel Quick Sync Video acceleration) (codec vp9)
録画したファイルが再生できない。
sudo -u www-data recpt1 --b25 --strip 26 10 test.ts
using B25...
enable B25 strip
pid = 352211
C/N = 34.565734dBbcas->init failed
Cannot start b25 decoder
Fall back to encrypted recording
sudo -u www-data pcsc_scan
PC/SC device scanner
V 1.7.1 (c) 2001-2022, Ludovic Rousseau <ludovic.rousseau@free.fr>
SCardEstablishContext: Access denied.
epgrec@ubuntu-server:/rec$ recpt1 --b25 --strip 26 10 test.ts
using B25...
enable B25 strip
pid = 352287
C/N = 34.524354dB
Recording...
Minidlna
minildnaをnginxのwww-dataグループに追加しておく
sudo usermod -a -G www-data minidlna
Samba
sudo nano /etc/samba/smb.conf
[global]
unix charset = UTF-8
dos charset = CP932
[rec]
comment = record directory
path = /var/www/epgrec/video
force user = www-data
force group = www-data
writable = yes
guest only = yes
guest ok = yes
create mode = 0777
directory mode = 0777
ipアドレス固定
sudo mv /etc/netplan/* ~/.
sudo nano /etc/netplan/90_config.yaml
以下のように記載して保存。
network:
version: 2
renderer: NetworkManager # NetworkManagerを使用する設定に統一する
ethernets:
enp0s31f6:
dhcp4: false # DHCPを無効にする
addresses: [192.168.1.16/24]
routes: # ゲートウェイのアドレスを設定
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
設定を適用して確認する。
sudo netplan apply
ip a
systemd-networkd-wait-online.service が起動に失敗するので無効にした。
以下を参照させてもらいました。
https://qiita.com/sakai00kou/items/1934471c6a318a8c2e61
systemctl disable --now systemd-networkd-wait-online.service