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: ハードウェア
環境を構築し直したので、まとめてみる。今回はUbuntu 16.04 LTSを使った。気が向いたらDebian 9(Stretch)でやる予定。
PT3、PX-S1UD V2.0、PX-BCUD、KTV-FSMINIの4つをセットアップした。PT3はDVBドライバを使う。
カーネルにドライバが組み込まれているので、特に設定しなくても認識される。偶数がBS/CS、奇数が地上波と交互になる。
$ ls /dev/dvb/ adapter0 adapter1 adapter2 adapter3
アンテナに電源供給が必要な場合、chardev版ドライバを導入した方がいい。今回は取り上げない。
何もしなくても認識されるが、ファームウェアを入れないと動作しない。
$ ls /dev/dvb/ adapter0 adapter1 adapter2 adapter3 adapter4
ファームウェアをダウンロードして、インストールする。モジュールをロードし直すと有効になる。
$ wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip $ unzip PX-S1UD_driver_Ver.1.0.1.zip $ sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware/ $ sudo modprobe -r smsusb $ sudo modprobe smsusb
adapterの番号を変更するには次のようにする。複数ある場合は「,」で区切る。認識できるadapterの数は8つまでなので、0~7の番号が指定できる(Linux 4.10以降は16個なので0~15)。
$ sudo modprobe -r smsdvb $ sudo modprobe smsdvb adapter_nr=4
他のDVBデバイスと区別するため、起動時に番号を固定する。他にDVBデバイスがない場合は必要ない。
$ sudo sh -c 'echo "options smsdvb adapter_nr=4" > /etc/modprobe.d/smsdvb.conf'
LinuxカーネルにPX-BCUDのドライバが組み込まれるのは4.7以上で、標準のカーネル(4.4)ではドライバが組み込まれていない。HWEカーネルを導入する。
$ uname -r 4.4.0-83-generic $ sudo apt install linux-generic-hwe-16.04 $ sudo reboot $ uname -r 4.8.0-58-generic $ ls /dev/dvb/ adapter0 adapter1 adapter2 adapter3 adapter4 adapter5
adapter番号の指定
$ sudo modprobe -r em28xx-dvb $ sudo modprobe em28xx-dvb adapter_nr=5 $ sudo sh -c 'echo "options em28xx-dvb adapter_nr=5" > /etc/modprobe.d/em28xx_dvb.conf'
KTV-FSMINIはドライバではなくコマンドを利用する。KTVWikiにあるrecfsusb2iをダウンロードして、ビルドする。
$ sudo apt install p7zip-full $ 7z x recfsusb2i-20160220.7z -orecfsusb2i $ cd recfsusb2i/src/ $ make $ sudo install recfsusb2i /usr/local/bin/
DVBデバイスをチューニングするにはdvbv5-zapが必要になる。dvbv5-zapはdvb-toolsに含まれている。
$ sudo apt install dvb-tools
チューニングに必要な設定をダウンロード
$ sudo apt install git $ cd /usr/local $ sudo git clone https://github.com/Chinachu/dvbconf-for-isdb.git
パッケージのインストール
$ sudo apt install pcscd libpcsclite1 libpcsclite-dev libccid pcsc-tools
動作確認
$ pcsc_scan | grep B-CAS Japanese Chijou Digital B-CAS Card (pay TV) ^C
最後に現在も販売されているチューナーを挙げておく。
Chinachuの実行ユーザー作成(既存のユーザーにする場合は不要)
$ sudo adduser chinachu
Chinachuの実行ユーザーをsudoグループに所属させる
$ sudo adduser chinachu sudo
Chinachuの実行ユーザーに切り替え
$ sudo -i -u chinachu
Node.jsをインストール
$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - $ sudo apt install -y nodejs $ sudo npm -g i npm@latest # NPMを更新する
PM2とMirakurunをインストール
$ sudo npm install pm2 -g $ sudo npm install mirakurun -g --unsafe --production
arib-b25-stream-testをインストール
$ sudo npm install arib-b25-stream-test -g --unsafe
Mirakurunの設定
$ sudo mirakurun config server
Mirakurunのチューナー設定
$ sudo mirakurun config tuners
設定ファイルやadapterの番号を間違えないように気を付けて編集する
Mirakurunのチャンネル設定
$ sudo mirakurun config channels
BS/CSのチャンネルだけ登録する
チャンネルスキャンで地上波のチャンネルを設定する
$ sudo mirakurun restart $ curl -X PUT "http://localhost:40772/api/config/channels/scan" $ sudo mirakurun restart
Chinachuのダウンロードとインストール
$ sudo apt install git $ git clone git://github.com/kanreisa/Chinachu.git ~/chinachu $ cd ~/chinachu/ u$ ./chinachu installer Chinachu Installer Menu: [!] These are installed under all /home/chinachu/chinachu/... [!] Recommend the Auto installation. 1) Auto (full) 3) Node.js Environment 5) ffmpeg 2) submodule 4) Node.js Modules what do you install? > 1
設定
$ cp config.sample.json config.json $ vi config.json
実行ユーザーを指定する
"uid": "chinachu",
別のマシンからアクセスされるIPアドレスを指定する
"wuiOpenHost": "192.168.60.10",
空の予約ルールを作成
$ echo [] > rules.json
動作チェック
$ ./chinachu service wui execute ^C $ ./chinachu update
サービスを登録
$ sudo pm2 start processes.json $ sudo pm2 save
以上でインストールは完了。
ドライバはなるべく標準ドライバで対応して手間を省いた。チャンネル設定はBS/CSの設定が決まっていて、地上波はチャンネルスキャンできるので手間取らなかった。以前に比べて簡単になったものの、まだ手間がかかるように思う。
takaaki 7月 19th, 2017
Posted In: ハードウェア
通知の必要なスクリプトとTwitterを連携するためにTTYtterを導入してみた。
aptでインストールできる。
$ sudo aptitude install ttytter
初めて使うときにOAuth認証が行われる。SSLが必須なのでsslオプションを指定する。
$ ttytter -ssl
URLが表示される
1. Visit, in your browser, ALL ON ONE LINE, https://api.twitter.com/oauth/authorize?oauth_token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ブラウザでURLに接続する。ログインして、連携アプリを認証すると、数字が表示される。この数字を入力する。
5. A PIN will appear. Enter it below. Enter PIN>0123456
認証は完了。もう一度実行するとタイムラインが表示される。
コマンドラインから簡単にツイートできる。
$ ttytter -ssl -status="<ツイートする内容>"
改行は使用できない。文字数を超えてしまうと失敗する。autosplitオプションで自動分割される。
$ ttytter -ssl -autosplit -status="<ツイートする内容>"
~/.ttytterrcで初期設定を保持できる。sslオプションを省略するには~/.ttytterrcを次のようにする。
vi ~/.ttytterrc ssl=1
sslオプションを指定しなくてもSSLで通信するようになる。
開発アカウント以外で面倒な別アカウントのアクセストークンの取得をttytterで行う。
$ ttytter -ssl -oauthwizard -keyf=./<出力先ファイル> -oauthkey=<ConsumerKey> -oauthsecret=<ConsumerSecret>
oauthwizardオプションでOAuth認証が行われる。オプションで出力先ファイル、ConsumerKey、ConsumerSecretを指定している。出力先にディレクトリが含まれないと~/.ttytterkey<ファイル名>に出力される。
アクセストークンを確認する。
$ cat <出力先ファイル> ck=X&cs=X&at=<AccessToken>&ats=<AccessTokenSecret>
takaaki 4月 12th, 2015
先月にDVB版PT3ドライバがLinuxカーネルに取り込まれた。PX-S1UDも今年取り込まれている。PX-S1UDのドライバは3.15以降で、PT3のDVB版ドライバは3.18以降で使えるようになる。
両方のドライバをDebianで使えるようにしてみた。
PX-S1UDには3.15以降のカーネルで対応するので、Debianのカーネルをアップグレードすればいい。
PX-S1UDの接続確認
$ lsusb | grep VidzMedia Bus 001 Device 002: ID 3275:0080 VidzMedia Pte Ltd
バックポートリポジトリの追加
$ sudo sh -c "echo 'deb http://http.debian.net/debian wheezy-backports main' > /etc/apt/sources.list.d/backports.list" $ sudo aptitude update
カーネルのインストール
$ sudo aptitude -t wheezy-backports install linux-image-3.16-0.bpo.2-amd64
unzipのインストール
$ sudo aptitude install unzip
Windows用ドライバからファームウェアを導入
$ cd /usr/local/src/ $ wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip $ unzip PX-S1UD_driver_Ver.1.0.1.zip $ sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware/
再起動
$ sudo reboot
ドライバを確認
$ lsmod | grep smsusb smsusb 17036 0 smsmdtv 47106 2 smsdvb,smsusb usbcore 199395 5 uhci_hcd,ehci_hcd,ehci_pci,smsusb,usbhid $ ls /dev/dvb/ adapter0
Linux3.18で対応するが、Wheezyではまだ使えないのでV4L-DVBドライバをインストールする。ビルドには3.8以降のカーネルが必要になる。カーネルのアップグレードまではPX-S1UDと共通。
PT3の確認
$ lspci | grep Multimedia 03:00.0 Multimedia controller: Altera Corporation Device 4c15 (rev 01)
バックポートリポジトリの追加
$ sudo sh -c "echo 'deb http://http.debian.net/debian wheezy-backports main' > /etc/apt/sources.list.d/backports.list" $ sudo aptitude update
カーネルのインストール
$ sudo aptitude -t wheezy-backports install linux-image-3.16-0.bpo.2-amd64
再起動して確認
$ sudo reboot $ uname -r 3.16-0.bpo.2-amd64
必要なパッケージのインストール
$ sudo aptitude install git build-essential patchutils libproc-processtable-perl linux-headers-3.16-0.bpo.2-amd64
ビルド
$ cd /usr/local/src/ $ git clone --depth=1 git://linuxtv.org/media_build.git $ cd media_build $ ./build
インストール
$ sudo make install
ドライバモジュールのロード
$ sudo modprobe earth-pt3
ドライバの確認
$ lsmod |grep earth_pt3 earth_pt3 21751 0 dvb_core 110088 1 earth_pt3 i2c_core 50108 4 drm,i2c_piix4,drm_kms_helper,earth_pt3 $ ls /dev/dvb/ adapter0 adapter1 adapter2 adapter3
Linux3.18以降を使う場合、DVB版ドライバをブラックリストに追加しておかないとDVB版ドライバが使われてしまう。PT3はearth-pt1ではなくearth-pt3を/etc/modprobe.d/blacklist.confに追加する。PT1/2を使っていない場合、earth-pt1を追加しても何の効果もない。
$ sudo sh -c "echo 'blacklist earth-pt3' >> /etc/modprobe.d/blacklist.conf
takaaki 10月 26th, 2014
Posted In: ハードウェア
PT1/PT2のDVBとMythTV @Wikiに置かれているパッチと修正版BSパッチをgithubにまとめてみた。パッチはgit-diffで作成した。Debian wheezyで軽く動作確認。
BS対応がたった1行移植し忘れてるだけとは思わなかった。これでGWに帰省したらOSのアップグレードができる。
takaaki 4月 26th, 2014
Posted In: ソフトウェア
Debianのパッケージでlibvirtdを導入している。libvirtグループに所属していれば一般ユーザーでもvirt-managerで仮想マシンの管理ができるが、virshでの操作が行えない。一般ユーザーにはデフォルトのホストが設定されていないからだ。
仮想マシンが稼働している環境でも一覧が表示されない。
$ virsh list Id Name State ----------------------------------------------------
接続先のURIが指定してみると表示される。
$ virsh -c qemu:///system list Id Name State ---------------------------------------------------- 1 www running
rootにはデフォルトの接続先が設定されている。これは/etc/libvirt/libvirt.confで設定できる。
$ cat /etc/libvirt/libvirt.conf | grep uri_default #uri_default = "qemu:///system"
これは一般ユーザーには適用されない。一般ユーザーは環境変数を設定する必要がある。
LIBVIRT_DEFAULT_URIにURIを設定すると接続先指定なしで接続できる。
$ export LIBVIRT_DEFAULT_URI="qemu:///system" $ virsh list Id Name State ---------------------------------------------------- 1 www running
.bashrcで常に適用されるようにする。
$ echo 'export LIBVIRT_DEFAULT_URI="qemu:///system"' >> ~/.bashrc
takaaki 4月 13th, 2014
Posted In: ソフトウェア
PLEXのUSBチューナーPX-S1UDがLinuxで使えるというので試してみた。標準ドライバに少し手を加えて使えるようにする。環境はDebian(wheezy)。
追記:ドライバがカーネルに組み込まれたのでこちらを参照。PX-S1UDとPT3のDVBドライバがLinux標準に – 底辺迷走
Debian(wheezy)に導入されているカーネル3.2に含まれているドライバはPX-S1UDに使えないので、新しいカーネルを導入しておく。カーネル3.10以降であればアップグレードは不要。
使われているカーネルを確認
$ uname -r 3.2.0-4-amd64
Backportsリポジトリを追加
$ sudo sh -c "echo 'deb http://ftp.debian.org/debian/ wheezy-backports main' > /etc/apt/sources.list.d/wheezy-backports.list" $ sudo aptitude update
カーネルのインストール
$ sudo aptitude -t wheezy-backports install linux-image-3.12-0.bpo.1-amd64
カーネルを入れ替えるために再起動
$ sudo reboot
カーネルを確認
$ uname -r 3.12-0.bpo.1-amd64
必要なパッケージのインストール
$ sudo aptitude install build-essential linux-source-3.12 linux-headers-3.12-0.bpo.1-amd64
カーネルソースの展開
$ cd /usr/local/src/ $ tar xvJf /usr/src/linux-source-3.12.tar.xz
ビルドの準備
$ cd linux-source-3.12/ $ cp /boot/config-`uname -r` .config $ make oldconfig $ make modules_prepare $ cp /lib/modules/`uname -r`/build/Module.symvers .
ドライバの階層に移動
$ cd drivers/media/usb/siano/
ソースを修正する
$ vi smsusb.c
usb_device_id smsusb_id_tableに次の2行を追加
{ USB_DEVICE(0x3275, 0x0080),
.driver_info = SMS1XXX_BOARD_SIANO_RIO },
変更内容
$ diff -u smsusb.c{.org,} --- smsusb.c.org 2014-01-26 02:18:00.000000000 +0900 +++ smsusb.c 2014-03-21 19:59:07.922682492 +0900 @@ -634,6 +634,8 @@ .driver_info = SMS1XXX_BOARD_ZTE_DVB_DATA_CARD }, { USB_DEVICE(0x19D2, 0x0078), .driver_info = SMS1XXX_BOARD_ONDA_MDTV_DATA_CARD }, + { USB_DEVICE(0x3275, 0x0080), + .driver_info = SMS1XXX_BOARD_SIANO_RIO }, { } /* Terminating entry */ };
ドライバモジュールのビルド
$ make -C /usr/local/src/linux-source-3.12 M=`pwd` modules
"make modules_install"ではうまくインストール出来ないのでcpでインストールする。Windows用ドライバに含まれるファームウェアも必要なので導入しておく。
元のモジュールを上書きするので、バックアップする
$ sudo mv /lib/modules/`uname -r`/kernel/drivers/media/usb/siano/smsusb.ko{,.org}
ドライバモジュールのインストール
$ sudo cp smsusb.ko /lib/modules/`uname -r`/kernel/drivers/media/usb/siano/
unzipのインストール
$ sudo aptitude install unzip
Windows用ドライバからファームウェアを導入
$ cd /usr/local/src/ $ wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip $ unzip PX-S1UD_driver_Ver.1.0.1.zip $ sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware/
PX-S1UDの接続確認
$ lsusb |grep VidzMedia Bus 002 Device 002: ID 3275:0080 VidzMedia Pte Ltd
ドライバモジュールのロード
$ sudo modprobe smsusb
デバイスの確認
$ ls /dev/dvb/ adapter0
ドライバモジュールを自動で読み込ませる
$ sudo sh -c "echo smsusb >> /etc/modules"
DVBデバイスとして認識されるので他のDVBデバイス同様に扱える。FUSE_b25を使えばMythTVでも使える。
参考:
takaaki 3月 21st, 2014
Posted In: ハードウェア
タグ: Debian, DVB, fuse_b25, LAN, Linux, MythTV, PT3, PX-S1UD, TV, Windows
DVB版ドライバがないPT3ではMythTVは使えなかった。最近DVB版PT3ドライバが公開されたので、導入してみる。環境はいつも通りDebianの安定版(wheezy)。
Debian(wheezy)に導入されているカーネル3.2ではビルドできないので、新しいカーネルを導入しておく。3.5でビルドできないことと3.8以降でビルドできることを確認している。新しいカーネルはbackportsリポジトリを使うと簡単に導入できる。
使われているカーネルを確認
$ uname -r 3.2.0-4-amd64
Backportsリポジトリを追加
$ sudo sh -c "echo 'deb http://ftp.debian.org/debian/ wheezy-backports main' > /etc/apt/sources.list.d/wheezy-backports.list" $ sudo aptitude update
カーネルのインストール
$ sudo aptitude -t wheezy-backports install linux-image-3.10-0.bpo.3-amd64
カーネルを入れ替えるために再起動
$ sudo reboot
カーネルを確認
$ uname -r 3.10-0.bpo.3-amd64
PT3ドライバのビルドに必要なV4L-DVBドライバを導入する。ビルドには少し時間がかかる。
必要なパッケージのインストール
$ sudo aptitude install build-essential patchutils libproc-processtable-perl l linux-headers-3.10-0.bpo.3-amd64
ビルド
$ cd /usr/local/src/ $ git clone git://linuxtv.org/media_build.git $ cd media_build $ ./build
インストール
$ sudo make install $ sudo make kernel-links #ヘッダーのインストール
事前準備は済んだのでドライバをインストールする。
ソースの取得
$ cd /usr/local/src/ $ git clone https://github.com/knight-rider/ptx.git $ cd ptx/pt3_dvb/
V4L-DVBからModule.symversをコピー
$ cp /usr/local/src/media_build/v4l/Module.symvers .
ビルド
$ make
インストール
$ sudo make install
ドライバモジュールのロード
$ sudo modprobe pt3_dvb
デバイスファイルの確認
$ ls /dev/dvb/ adapter0 adapter1 adapter2 adapter3
PT2のDVB版ドライバと同じように使えるが、デバイス番号が異なる。0,1が衛星波、2,3が地上波と、順番はChardev版と同じになる。
tuneコマンドやs2scanが付属しているのでビルドする。
tune.cのDTV_STREAM_IDをDTV_ISDBS_TS_IDに書き換える
$ vi tune.c $ git diff tune.c diff --git a/dvb_apps/cmds/tune.c b/dvb_apps/cmds/tune.c index 20178d0..a45ee08 100644 --- a/dvb_apps/cmds/tune.c +++ b/dvb_apps/cmds/tune.c @@ -100,7 +100,7 @@ static int search(int adapter_nr, int channel_id) prop[0].cmd = DTV_FREQUENCY; prop[0].u.data = channel->frequency; - prop[1].cmd = DTV_STREAM_ID; + prop[1].cmd = DTV_ISDBS_TS_ID; prop[1].u.data = channel->ts_id; prop[2].cmd = DTV_TUNE;
ビルド
$ make $ find . -perm +111 . ./restamp ./nitdump ./ptsdump ./tune ./dumpts ./dumpeid ./s2scan ./dumpts2
コマンドが生成される。コマンドの使い方やDVB版の使い方は以前の記事を参照。
予約機能が良くても、BSに対応できないとMythTVは導入できない。
PT3といえば、chardev版PT3の導入記事に/etc/modprobe.d/blacklist.confにearth-pt1を追加するように書いてあるのが気になる。earth-pt1はPT3には対応していないので、PT1/2を導入していない環境では効果が無い。
参考:
takaaki 11月 24th, 2013
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