0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntu Server 24.04 に epgrecUNA+px4_drv環境を構築する

Posted at

経緯

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を作成する

sudo nano /usr/share/polkit-1/rules.d/org.debian.pcsc-lite.rules
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を除外するいう手もがあるが、セキュリティ上好ましくない。

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?