今回はカーネルの縛りがない非公式ドライバを使用する。現行で一番サポートが長いUbuntu 18.04 LTSに導入した。PX-W3PE4、PX-Q3U4、PX-Q3PE4でも手順は共通。
READMEの通りにやればできる。カーネルのアップデートに追従するためDKMSを使用した。
パッケージのインストール
$ sudo apt install -y git build-essential dkms
ドライバのダウンロード
$ mkdir -p ~/src/ $ cd ~/src/ $ git clone https://github.com/nns779/px4_drv.git
ファームウェアのインストール
$ cd ~/src/px4_drv/fwtool/ $ make $ wget http://plex-net.co.jp/plex/pxw3u4/pxw3u4_BDA_ver1x64.zip -O pxw3u4_BDA_ver1x64.zip $ unzip -oj pxw3u4_BDA_ver1x64.zip pxw3u4_BDA_ver1x64/PXW3U4.sys $ ./fwtool PXW3U4.sys it930x-firmware.bin $ sudo mkdir -p /lib/firmware $ sudo cp it930x-firmware.bin /lib/firmware/
ドライバを更新するときは一度削除する
$ sudo dkms remove px4_drv/0.1.0 --all $ sudo rm -rf /usr/src/px4_drv-0.1.0
ドライバのインストール
$ cd ~/src/px4_drv/ $ sudo cp -av ./ /usr/src/px4_drv-0.1.0 $ sudo dkms add px4_drv/0.1.0 $ sudo dkms install px4_drv/0.1.0 $ sudo modprobe px4_drv $ ls /dev/px4video* /dev/px4video0 /dev/px4video1 /dev/px4video2 /dev/px4video3
パッケージのインストール
$ sudo apt install -y cmake libpcsclite1 libpcsclite-dev pcscd pcsc-tools
libarib25をインストール
$ cd ~/src/ $ git clone https://github.com/stz2012/libarib25.git $ cd libarib25/ $ cmake . $ make $ sudo make install
カードリーダーの動作確認
$ pcsc_scan | grep B-CAS Japanese Chijou Digital B-CAS Card (pay TV) ^C
パッケージのインストール
$ sudo apt install -y autoconf automake
recpt1をインストール
$ cd ~/src/ $ git clone https://github.com/stz2012/recpt1.git $ cd recpt1/recpt1/ $ ./autogen.sh $ ./configure --enable-b25 $ make $ sudo make install
実際に録画してみる。0,1が衛星波、2,3が地上波。チューナーが増えた場合も衛星波2、地上波2の順で繰り返される。
$ cd ~ $ recpt1 --device /dev/px4video0 --lnb 15 --b25 --strip BS15_0 10 bs0.m2ts $ recpt1 --device /dev/px4video1 --lnb 15 --b25 --strip BS01_2 10 bs1.m2ts $ recpt1 --device /dev/px4video2 --b25 --strip 27 10 gr0.m2ts $ recpt1 --device /dev/px4video3 --b25 --strip 27 10 gr1.m2ts
Chinachu on Ubuntu 18.04 LTS (2019年1月版)
takaaki 1月 23rd, 2019
PX-W3U4のBS再編への対応がバイナリの編集で面倒だなと思っていたら新しいLinux向けドライバが公開された。それぞれで今まで通り導入できるか再検証してみる。
今回公開されたドライバはCentOS 7、Ubuntu 18.04 LTS、Debian 9が対象、すべてx64。最新の安定版ディストリビューションが使えるのは有り難い。
やり方はPX-Q3U4, PX-W3PE4, PX-Q3PE4もおそらく共通。
非公式ドライバ向け記事
CentOSはEPRLのパッケージが必要なので追加する。
$ curl -LO http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm $ sudo rpm -ivh epel-release-latest-7.noarch.rpm
$ mkdir -p ~/src/ $ cd ~/src/ $ sudo yum install -y unzip $ curl -LO http://plex-net.co.jp/plex/linux/CentOS7-1804_64bit_kernel3.10.0-862.zip $ unzip CentOS7-1804_64bit_kernel3.10.0-862.zip $ cd CentOS7-1804_64bit_kernel3.10.0-862/
$ mkdir -p ~/src/ $ cd ~/src/ $ wget http://plex-net.co.jp/plex/linux/Ubuntu18.04_64bit_kernel4.15.0-23.zip $ unzip Ubuntu18.04_64bit_kernel4.15.0-23.zip $ cd Ubuntu18.04_64bit_kernel4.15.0-23/
$ mkdir -p ~/src/ $ cd ~/src/ $ sudo apt install -y unzip $ wget http://plex-net.co.jp/plex/linux/Debian9.4_64bit_kernel4.9.0-6.zip $ unzip Debian9.4_64bit_kernel4.9.0-6.zip $ cd Debian9.4_64bit_kernel4.9.0-6/
ドライバ周りの操作を自動化するためにDKMSを使用する。これでカーネルのアップデートがあった場合も自動的に適応できる。
$ sudo yum install -y dkms kernel-headers kernel-devel
$ sudo apt install -y dkms
モジュールをコピーするだけの設定を作る。
$ sudo mkdir -p /usr/src/px4-1806/ $ sudo cp -v *.ko /usr/src/px4-1806/ $ sudo vi /usr/src/px4-1806/dkms.conf
$ sudo dkms install -m px4 -v 1806
アップデートに備えてモジュールを強制ロードできるようにする(効果は未検証)。チューナーの接続時にmodprobeを–forceオプションを付きで実行させる。デバイスファイルのパーミッションも設定する。
$ sudo vi /etc/udev/rules.d/99-px4.rules ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0511", ATTR{product}=="*[QW]3*4", RUN+="/sbin/modprobe -f usb-px4" KERNEL=="px4-DTV*", GROUP="video", MODE="0666" $ sudo reboot $ ls /dev/px4-DTV* /dev/px4-DTV0 /dev/px4-DTV1 /dev/px4-DTV2 /dev/px4-DTV3
内蔵のカードリーダーは使えないので別途用意する。CentOSは/usr/local/libへのパスを通す。
$ cd ~/src/ $ sudo yum install -y git cmake gcc-c++ pcsc-lite pcsc-lite-devel pcsc-tools $ git clone https://github.com/stz2012/libarib25.git $ cd libarib25/ $ cmake . $ make $ sudo make install $ sudo sh -c "echo /usr/local/lib >> /etc/ld.so.conf.d/libc.conf" $ sudo ldconfig
$ cd ~/src/ $ sudo apt install -y git build-essential cmake libpcsclite1 libpcsclite-dev pcscd pcsc-tools $ git clone https://github.com/stz2012/libarib25.git $ cd libarib25/ $ cmake . $ make $ sudo make install
$ pcsc_scan | grep B-CAS Japanese Chijou Digital B-CAS Card (pay TV) ^C
ここで何も出ない時は再起動するとうまくいく場合がある。
CentOS 6のドライバに付属しているrecpt1を使う。
$ cd ~/src/ $ curl -LO http://plex-net.co.jp/download/linux/Linux_Driver.zip $ unzip Linux_Driver.zip
CentOS 6のドライバに付属しているrecpt1を使う。
$ cd ~/src/ $ wget http://plex-net.co.jp/download/linux/Linux_Driver.zip $ unzip Linux_Driver.zip
B25を有効にするためリビルド。通常のrecpt1と区別するためリネームした。今回もchecksignalは動作しない。
–helpで表示されるチャンネルを修正するにはrecpt1core.cの286行目以降を書き換える。
$ cd ~/src/Linux_Driver/MyRecpt1/MyRecpt1/recpt1/ $ make clean $ vi recpt1core.c
$ sh configure --enable-b25 $ make $ sudo install -m 755 recpt1 /usr/local/bin/recpx4 $ sudo install -m 755 recpt1ctl /usr/local/bin/recpx4ctl
実際に録画してみる。0,1が衛星波、2,3が地上波。チューナーが増えた場合も衛星波2、地上波2の順で繰り返される。
$ cd ~ $ recpx4 --device /dev/px4-DTV0 --lnb 15 --b25 --strip BS15_0 10 bs0.m2ts $ recpx4 --device /dev/px4-DTV1 --lnb 15 --b25 --strip BS01_2 10 bs1.m2ts $ recpx4 --device /dev/px4-DTV2 --b25 --strip 27 10 gr0.m2ts $ recpx4 --device /dev/px4-DTV3 --b25 --strip 27 10 gr1.m2ts
takaaki 6月 29th, 2018
CentOS 7、Ubuntu 16.04 LTS、Debian 8でPX-W3U4の設定をしたみたのでまとめる。
PX-Q3U4, PX-W3PE4, PX-Q3PE4でも同じ手順でセットアップできる。
追記: 4月、5月のBS周波数再編の影響で一部チャンネルが受信できなくなっている。(最新版ドライバで修正済み)
最新版ドライバ向け記事
CentOSはEPRLのパッケージが必要なので追加する。
$ curl -LO http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm $ sudo rpm -ivh epel-release-latest-7.noarch.rpm
配布されているモジュールに合わせたカーネルをインストールする。カーネルのアップデートはできない。
$ sudo apt-get install linux-image-4.13.0-19-generic linux-headers-4.13.0-19-generic $ sudo reboot $ uname -r 4.13.0-19-generic
モジュール書き換えることでHWEカーネルでも使用できる。
少し手間はかかるが、Ubuntu 18.04がリリースされるまでは対応したカーネルのアップデートがある。
$ sudo apt-get install linux-generic-hwe-16.04 $ sudo reboot $ uname -r 4.13.0-26-generic
$ mkdir -p ~/src/ $ cd ~/src/ $ sudo yum install -y unzip $ curl -LO http://plex-net.co.jp/plex/linux/CentOS7-1708_64bit_kernel3.10.0-693.zip $ unzip CentOS7-1708_64bit_kernel3.10.0-693.zip $ cd CentOS7-1708_64bit_kernel3.10.0-693/
$ mkdir -p ~/src/ $ cd ~/src/ $ wget http://plex-net.co.jp/plex/linux/Ubuntu17.10_64bit_Kernel4.13.0-19.zip $ unzip Ubuntu17.10_64bit_Kernel4.13.0-19.zip $ cd Ubuntu17.10_64bit_Kernel4.13.0-19/
$ mkdir -p ~/src/ $ cd ~/src/ $ wget http://plex-net.co.jp/plex/linux/Debian8.0.0_64bit_kernel3.16.0-4.zip $ unzip Debian8.0.0_64bit_kernel3.16.0-4.zip $ cd Debian8.0.0_64bit_kernel3.16.0-4/
ドライバ周りの操作を自動化するためにDKMSを使用する。これでカーネルのアップデートがあった場合も自動的に適応できる。
$ sudo yum install -y dkms kernel-headers kernel-devel
$ sudo apt-get install -y dkms
モジュールをコピーするだけの設定を作る。Ubuntu+HWEカーネル以外は同じ。
$ sudo mkdir -p /usr/src/px4-1712/ $ sudo cp -v *.ko /usr/src/px4-1712/ $ sudo vi /usr/src/px4-1712/dkms.conf
$ sudo dkms install -m px4 -v 1712
UbuntuとHWEカーネルを使う場合はモジュールのvermagicを書き換える必要がある。
$ sudo mkdir -p /usr/src/px4-1712/src/ $ sudo cp -v *.ko /usr/src/px4-1712/src/ $ sudo vi /usr/src/px4-1712/dkms.conf
$ sudo dkms install -m px4 -v 1712
アップデートに備えてモジュールを強制ロードできるようにする。チューナーの接続時にmodprobeを–forceオプションを付きで実行させる。デバイスファイルのパーミッションも設定する。
$ sudo vi /etc/udev/rules.d/99-px4.rules ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0511", ATTR{product}=="*[QW]3*4", RUN+="/sbin/modprobe -f usb-px4" KERNEL=="px4-DTV*", GROUP="video", MODE="0666" $ sudo reboot $ ls /dev/px4-DTV* /dev/px4-DTV0 /dev/px4-DTV1 /dev/px4-DTV2 /dev/px4-DTV3
Ubuntuの場合は強制ロードは必要ないので、パーミッションだけ設定する。
$ sudo vi /etc/udev/rules.d/99-px4.rules KERNEL=="px4-DTV*", GROUP="video", MODE="0666" $ sudo reboot $ ls /dev/px4-DTV* /dev/px4-DTV0 /dev/px4-DTV1 /dev/px4-DTV2 /dev/px4-DTV3
内蔵のカードリーダーは使えないので別途用意する。CentOSは/usr/local/libへのパスを通す。
$ cd ~/src/ $ sudo yum install -y git cmake gcc-c++ pcsc-lite pcsc-lite-devel pcsc-tools $ git clone https://github.com/stz2012/libarib25.git $ cd libarib25/ $ cmake . $ make $ sudo make install $ sudo sh -c "echo /usr/local/lib >> /etc/ld.so.conf.d/libc.conf" $ sudo ldconfig
$ cd ~/src/ $ sudo apt-get install -y git build-essential cmake libpcsclite1 libpcsclite-dev pcscd pcsc-tools $ git clone https://github.com/stz2012/libarib25.git $ cd libarib25/ $ cmake . $ make $ sudo make install
$ pcsc_scan | grep B-CAS Japanese Chijou Digital B-CAS Card (pay TV) ^C
CentOS 6のドライバに付属しているrecpt1を使う。B25を有効にするためリビルド。通常のrecpt1と区別するためリネームした。checksignalはうまく動作しない。
$ cd ~/src/ $ curl -LO http://plex-net.co.jp/download/linux/Linux_Driver.zip $ unzip Linux_Driver.zip $ cd Linux_Driver/MyRecpt1/MyRecpt1/recpt1/ $ sh configure --enable-b25 $ make $ sudo install -m 755 recpt1 /usr/local/bin/recpx4 $ sudo install -m 755 recpt1ctl /usr/local/bin/recpx4ctl
実際に録画してみる。0,1が衛星波、2,3が地上波。チューナーが増えた場合も衛星波2、地上波2の順で繰り返される。
$ cd ~ $ recpx4 --device /dev/px4-DTV0 --lnb 15 --b25 --strip BS15_0 10 bs0.m2ts $ recpx4 --device /dev/px4-DTV1 --lnb 15 --b25 --strip BS15_0 10 bs1.m2ts $ recpx4 --device /dev/px4-DTV2 --b25 --strip 27 10 gr0.m2ts $ recpx4 --device /dev/px4-DTV3 --b25 --strip 27 10 gr1.m2ts
takaaki 1月 29th, 2018
Posted In: ハードウェア
一人暮らしを始める際にPT3を導入した。そのままではカーネル更新時にドライバが使えなくなってしまうのでPT3にもDKMSを導入してみた。dkms.confがソースに導入されているので、思いの外簡単に設定できた。環境はDebian(Wheezy)
DKMSのインストール
$ sudo aptitude install dkms
/usr/src/以下にPT3ドライバのソースを取得
$ cd /usr/src/ $ sudo git clone git://github.com/m-tsudo/pt3.git pt3_drv-0.0.1 Cloning into 'pt3_drv-0.0.1'... remote: Counting objects: 541, done. remote: Compressing objects: 100% (150/150), done. remote: Total 541 (delta 390), reused 535 (delta 384) Receiving objects: 100% (541/541), 133.67 KiB | 136 KiB/s, done. Resolving deltas: 100% (390/390), done.
dkms.confに書かれているPACKAGE_NAMEとPACKAGE_VERSIONの通りにパスやコマンドを指定する。
DKMSにPT3ドライバのソースを追加
$ sudo dkms add -m pt3_drv -v 0.0.1 Creating symlink /var/lib/dkms/pt3_drv/0.0.1/source -> /usr/src/pt3_drv-0.0.1 DKMS: add completed.
自動インストールの動作を確認(build,install未実行時)
$ sudo /usr/lib/dkms/dkms_autoinstaller start [....] dkms: running auto installation service for kernel 3.2.0-4-amd64: Kernel preparation unnecessary for this kernel. Skipping... Building module: cleaning build area.... make KERNELRELEASE=3.2.0-4-amd64 KVER=3.2.0-4-amd64..... cleaning build area.... DKMS: build completed. pt3_drv.ko: Running module version sanity check. - Original module - Installation - Installing to /lib/modules/3.2.0-4-amd64/updates/dkms/ depmod.... DKMS: install completed. . ok
ここまでで、導入は完了。手動で実行する場合や削除する場合は下記のコマンドを使う。
ドライバモジュールのビルド
$ sudo dkms build -m pt3_drv -v 0.0.1 Kernel preparation unnecessary for this kernel. Skipping... Building module: cleaning build area.... make KERNELRELEASE=3.2.0-4-amd64 KVER=3.2.0-4-amd64..... cleaning build area.... DKMS: build completed.
ドライバモジュールのインストール
$ sudo dkms install -m pt3_drv -v 0.0.1 pt3_drv: Running module version sanity check. - Original module - Installation - Installing to /lib/modules/3.2.0-4-amd64/updates/dkms/ depmod.... DKMS: install completed.
ドライバモジュールのアンインストール(動かない?)
$ sudo dkms uninstall -m pt3_drv -v 0.0.1
ソースパッケージの登録削除
$ sudo dkms remove -m pt3_drv -v 0.0.1 --all -------- Uninstall Beginning -------- Module: pt3_drv Version: 0.0.1 Kernel: 3.2.0-4-amd64 (x86_64) ------------------------------------- Status: Before uninstall, this module version was ACTIVE on this kernel. pt3_drv.ko: - Uninstallation - Deleting from: /lib/modules/3.2.0-4-amd64/updates/dkms/ - Original module - No original module was found for this module on this kernel. - Use the dkms install command to reinstall any previous module version. depmod.... DKMS: uninstall completed. ------------------------------ Deleting module version: 0.0.1 completely from the DKMS tree. ------------------------------ Done.
takaaki 7月 31st, 2013
DKMSはカーネルモジュールのソースパッケージを管理するシステム。これを使うとモジュールのビルド、インストールを自動化できる。これをPT2のDVB版ドライバに適用する。
DKMSのインストール
$ sudo aptitude install dkms
ソースのダウンロード・展開
$ wget http://www.linuxtv.org/hg/v4l-dvb/archive/tip.tar.gz $ tar xvzf tip.tar.gz
ソースのディレクトリは"<パッケージ名>-<バージョン>"という名前にし、/usr/src/以下に配置する。展開された状態で"v4l-dvb-3724e93f7af5"となっているのでそのままコピーした。
/usr/src/以下にソースをコピー
$ sudo cp -r v4l-dvb-3724e93f7af5/ /usr/src/
DKMSにソースパッケージを追加するにはソースディレクトリ内に"dkms.conf"という設定ファイルを作成する必要がある。
dkms.confの作成
$ sudo vi /usr/src/v4l-dvb-3724e93f7af5/dkms.conf #パッケージの名前 PACKAGE_NAME="v4l-dvb" #パッケージのバージョン PACKAGE_VERSION="3724e93f7af5" #中間ファイルの削除コマンド CLEAN="make clean" #ビルドするコマンド MAKE="make KVER=${kernelver}" #モジュールが作成される場所(ソースディレクトリからの相対パス) BUILT_MODULE_LOCATION[0]="v4l" BUILT_MODULE_LOCATION[1]="v4l" #作成されるモジュールの名前(拡張子.koは付けない) BUILT_MODULE_NAME=[0]"dvb_core" BUILT_MODULE_NAME=[1]"earth-pt1" #元々のインストール先(/lib/modules/`uname -r`をルートとしたパス) DEST_MODULE_LOCATION[0]="/kernel/drivers/media/dvb/dvb-core/" DEST_MODULE_LOCATION[1]="/kernel/drivers/media/dvb/pt1/" #自動更新の有効化 AUTOINSTALL="YES"
必要なモジュールはearth-pt1のみなのでearth-pt1とdvb-coreのみなので上記のようにした。他のモジュールも入れる場合BUILT_MODULE_LOCATION[2],BUILT_MODULE_NAME[2],DEST_MODULE_LOCATION[2]というようにインデックスを増やして指定する。同じインデックスで組になる。
AUTOINSTALL="YES"としておくとカーネルのアップデート時に自動的にインストールされる。(設定の有無だけを見ているので"NO"としても有効になる)
DEST_MODULE_LOCATIONは元々のモジュールを見つけるためだけに使われ、モジュールはupdates/dkms/以下にインストールされる。Ubuntu10.10以降など新しいディストリビューションでは使われるらしい。
ソースパッケージの追加
$ sudo dkms add -m v4l-dvb -v 3724e93f7af5
モジュールのビルド
$ sudo dkms build -m v4l-dvb -v 3724e93f7af5
モジュールのインストール
$ sudo dkms install -m v4l-dvb -v 3724e93f7af5
インストールされたモジュールの確認
$ sudo modprobe -l |grep earth-pt1.ko updates/dkms/earth-pt1.ko
モジュールのアンインストール
$ sudo dkms uninstall -m v4l-dvb -v 3724e93f7af5
ソースパッケージの登録削除
$ sudo dkms remove -m v4l-dvb -v 3724e93f7af5 --all
自動インストールの動作を確認するには次のコマンドを使う。
$ sudo /usr/lib/dkms/dkms_autoinstaller start
追記:アンインストールの記述間違いを修正
2012/03/30追記: earth-pt1のモジュールが動作しなかったのでdvb-coreもdkms.confに追加。
2012/05/11追記: 上手く動かなかったのでdkms.confにBUILT_MODULE_LOCATION[1]を追加。(動作確認済み)
takaaki 2月 4th, 2012