Ubuntu 12.04 64bitでPT2を使う(Ubuntu 10.10〜12.04対応)

この記事は,あくまで技術上可能なことを一般論として説明したもので,PT2,カードリーダー,その他のハードウェアおよびソフトウェアの使用を推奨するものではありません.
また,この記事を読んだことにより読者に生じた一切の損害を管理人soraochiは負わないものとします.

話題にするには遅すぎる感はありますが,PT2 とB-CAS カード買ってきました.
B-CASカードのオマケでKTV-FSUSB2が付いてきましたが,これはまた今度改造します.

追記 KTV-FSUSB2(殻のほう)は友人にあげてしまいました


今回,PT2 をUbuntu 10.1011.10 64bit12.04 64bit で使ってみました.同様の記事が他ブログでも盛んに書かれていますが,中には怪しいものもあるような気がします ((あまり余所を批判したくないのですが,無条件にLNB電源をオンにすることを推奨するのは如何なものか)).
このブログも知識,手順,解決方法の面で怪しい点が多々あることは自覚しておりますが,ここはひとつ,先人の言葉を引用させていただき,開会の言葉とさせていただきます.

このページに存在するすべての間違いは、意図されていたかいなかったかに関わらず、読者のための練習問題もしくは冗談である

まずは環境紹介から.

マシンスペック

OS Ubuntu 11.10 64bit Ubuntu 12.04 64bit
CPU Core2Duo E8400
マザーボード GA-P35-DS3
ビデオカード GV-NX96T512HP

今回追加するハードウェア

主役 PT2 Rev.B
ICカードリーダー SCR3310-NTTCom (+青CAS)
予備のカードリーダー Reflex USB v2

ICカードリーダーを使えるようにしましょう.

sudo apt-get install libccid pcsc-tools libpcsclite-dev pcscd

B-CASカードの裏表に注意してください.B-CASカードの裏面が見えるように差し込むのが正解です.
これは,住基カード等では表面,B-CASカードでは裏面にICチップの接点があるのが原因だと考えられます.

できたら

sudo pcsc_scan

を実行してください.ズラズラと文字が出て,最後に

Japanese Chijou Digital B-CAS Card (pay TV)

が出たら上手くいってます.確認できたらCtrl+C で終了します.
もしマイナーなカードリーダーを使っていて,「Waiting for the first reader...」で止まってしまった場合はいるかのさんの記事を参考に/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist を編集します.

編集したら

sudo /etc/init.d/pcscd restart

を忘れずに.

それでもダメな場合(うちがそうでした)諦めましょう・・・と言いたいところですが,昔アキバで100円で買ったカードリーダーReflex USB v2 があったので,試しに使ってみました.
買ってきたままの状態ではLinux 64bit では使えないので,ファームをアップデートしてやる必要がありました.ファームのアップデートはUbuntu 11.10 64bit からでも可能です.
Reflex v2購入->SCR331に書き換えてみるテストを参考にSCMのホームページからSCR331のファームをダウンロードして/home/user にでも展開します.ファームの当て方の例を書いておきます(バージョンによって違うと思う)

cd FWUpdate_SCR531_SCR331_linux_USB_V5.25
./install.sh
./fwupdate_v1.6

Browse からSCR531_V525.bin を選択.Reader はそれっぽいのを選択 -> Download

その後,Linux 64bit用ドライバをインストールします.ここからダウンロードできます.稀奇特にも同型のものをお持ちの場合ご利用ください.

SCMのカードリーダーは,カードが刺さった状態で正常動作しているとLEDが点滅するようです.LEDがつきっぱなしの場合,B25のデコードが上手く行かない可能性が高いです.
多くの場合,テスト録画の段階で気付くと考えられますので,対処法は後ほど書きます.

さて,次にARIB STD-B25 仕様確認テストプログラムをmake install します.
ttp://www.marumo.ne.jp/db2007_b.htm#25 から「ARIB STD-B25 仕様確認テストプログラム」の最新版をダウンロードしてコンパイルするのがスジですが,下記方法の方がmakefileが既に作られてるので楽です.
インストールされるバージョンも0.2.4 で同じですので,下記を薦めます.

sudo apt-get install build-essential
wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip
unzip c44e16dbb0e2.zip
cd pt1-c44e16dbb0e2/arib25
make
sudo make install

Ubuntu 11.10 ではカーネルのバージョンが異なるため,従来の方法ではchardev 版ドライバのコンパイルが通りません.また,recpt1 のBS新 チャンネルに対応させるため,sourceforge のepgrec 置き場からrecpt1 のtar.gz をダウンロードしましょう

(2011 年10 月にBS のチャンネルが再編成されました.詳しくはググってください).
2011年12月03日現在の最新版では,解凍するとディレクトリ「pt1-7662d0ecd74b」ができます.
Kernel3系だとdriverのコンパイルに失敗するため,パッチ済みのpt1_pci.c

も合わせてダウンロードしておきます.

$HOME に展開したと仮定すると

cd ~/pt1-7662d0ecd74b/recpt1
make
sudo make install
cd ../driver
make
sudo make install

これで/usr/local/bin/ にb25 およびrecpt1 がインストールされます.
PT2を刺すと,Ubuntu 10.10 からは標準ドライバ(DVB版)が使われるようになったそうです.詳しい方がDVB 版で試しているようですが

僕は成功例の多い「chardev版」を使いました.
Ubuntu 11.10 でも引き続き「chardev版」を使います.12.04でも同様にchardev版を使います。

/etc/modprobe.d/blacklist.confの最後の行にblacklist earth-pt1 を追記すればDVB版ドライバはロードされなくなります.

sudo apt-get install mercurial autoconf automake
hg clone http://hg.honeyplanet.jp/pt1 PT2
cd PT2/driver
make
sudo make install

ここで一回再起動します.既にPT2 を刺してるかたは,再起動でなく電源オフ→オンしたほうが良いです.僕はこれでハマりました.

PT2 が認識されているかは

$ lspci |grep Xilinx
06:01.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01)

chardev版ドライバが使用されているかは

$ ls -lart /dev/ |grep pt1
crw-rw-rw- 1 root video 250, 3 2011-03-03 20:58 pt1video3
crw-rw-rw- 1 root video 250, 2 2011-03-03 20:58 pt1video2
crw-rw-rw- 1 root video 250, 1 2011-03-03 20:58 pt1video1
crw-rw-rw- 1 root video 250, 0 2011-03-03 20:58 pt1video0

で確認ができます.「$ ls /dev/dvb/」でadapter0〜3が出てくるときは,DVB版ドライバがロードされています.

インストールできたら

recpt1 --b25 --strip 22 30 test.ts

を試してみましょう.SSD を使ってる等の理由で,カレントディレクトリに大きなサイズのファイルを作りたくない場合,予め適宜cd してください.
東京タワーから受信している場合,TBS(22ch)が30 秒録画されるはずです.

totem test.ts

再生できたら成功です.画質がとんでもなくショボいときは,アンテナの接続を疑いましょう.ワンセグで録画されている可能性があります.

もし下記のようなエラーが出たら

Recording...
b25->put failed
b25_decode failed (code=-4). fall back to encrypted recording.

B25 のデコードができていません.どうやらOneiric(Ubuntu 11.10)のスマートカード周りにバグがあるみたいです.Marverick(10.10) のものなら正常動作する可能性があります.(参考)Ubuntu11.10 で録画用サーバ

/etc/apt/sources.listの末尾に

deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu maverick main universe
deb-src http://ftp.jaist.ac.jp/pub/Linux/ubuntu maverick main universe
deb http://security.ubuntu.com/ubuntu maverick-security main universe
deb-src http://security.ubuntu.com/ubuntu maverick-security main universe

を追記後

sudo apt-get update
sudo apt-get remove pcscd libpcsclite-dev libpcsclite1 libccid libpcsc-perl pcsc-tools
sudo apt-get install pcscd=1.5.5-3ubuntu2.1 libpcsclite1=1.5.5-3ubuntu2.1 libccid=1.3.11-1

libpcsc-perl=1.4.8-1pcsc-tools=1.4.16-1 は,依存関係を解消できないらしく,簡単にはインストールできませんでした.

The following packages have unmet dependencies:
libpcsc-perl : Depends: perlapi-5.10.0

libpcsc-perl=1.4.8-1pcsc-tools=1.4.16-1 のLucid のdeb パッケージを拾ってきてインストールすると,動くには動くんですが依存関係が壊れてapt に叱られます.
それでは元も子もないので,次の方法を使いました.ただし,かなりゴリ押しな上に,メンテナに検証されていない組み合わせなのでお薦めはしません.

pcscd,libpcsclite1,libccidを,インストールしたバージョン(pcscd=1.5.5-3ubuntu2.1 libpcsclite1=1.5.5-3ubuntu2.1 libccid=1.3.11-1)で固定する.apt-get ならhold,Synaptic ならPackage -> Force version

apt-get install pcsc-tools=1.4.16-1

依存関係からlibpcsc-perl=1.4.12-1build1 がインストールされる

pcsc-tools とlibpcsc-perl のバージョンを固定する

ここで何をしているのかもう少し詳しく説明します.
まず,libpcsc-perl=1.4.8-1perlapi-5.10.0 に依存していて,pcsc-tools=1.4.16-1libpcsc-perl に依存しています.
Ubuntu 11.10 のperl5.12.4-4 なので,perl のバージョンを落とすという吹っ飛んだことをしない限りはlibpcsc-perl=1.4.8-1 はインストールできません.
しかし,pcsc-tools=1.4.16-1libpcsc-perl に依存しているにすぎず,libpcsc-perl=1.4.8-1 である必要は,少なくとも依存関係の上ではありません
ということで,libpcsc-perl のみをOneiric,他をMaverick でインストールするというゴリ押しをしたのでした.

以上の作業が終わったら,追加したmaverickのapt-lines はコメントアウトします.

次にepgrec

を使えるようにします.epgrec は,PHP で書かれた録画予約システムです.動かすには,PHP+Apache+MySQL が必要です.

sudo apt-get install apache2 php5 libapache2-mod-php5 php5-cli mysql-server php5-mysql

入っていなかった場合,インストールしたら念のため再起動しておいてください.
これでApacheがインストールされるのですが,もしセキュリティ的に気になるようであれば,/etc/apache2/apache2.conf,あるいは/etc/apache2/httpd.confにLocalからしかアクセスできない設定を記述してください.(まあ,ポートが野放しにでもなってない限り,外部からはアクセスできないと思いますが)

また,epgrec は「epgdumpr2」にも依存しています.epgdumpr2 は,「インストール前の準備」からepgdumpr2-utf8.tar.gz,あるいはepgdumpr2.tar.gzをダウンロードし,以下のようにインストールします.
epgrec およびepgdumpr2 はsourceforgeから最新版をダウンロードし,解凍しておきます.

cd epgdumpr2
make
sudo cp epgdump /usr/local/bin

test.tsのあるディレクトリで,$ epgdump test test.ts - | less を実行してズラーッっと番組名っぽいのが出てきたら成功です.

$ at を実行して The program 'at' is currently not installed が出てきたら,aptから入れてください.
また,上記サイト記載のとおり,apache2 からat を実行できるようにしておきます.

引用:

/etc/at.denyの設定
epgrecはWebサーバーのユーザーアカウント(Debian/Ubuntuはwww-data、RedHat?系ではapache)でatコマンドを実行しますが、セキュリティ上の配慮からatの使用禁止ユーザーリスト/etc/at.denyに、Webサーバーのアカウントが設定されている場合があります。
管理権限(root)で/etc/at.denyを開き、www-dataやapacheといった、Webサーバーのアカウントが含まれていないか調べ、含まれていたら、その行を必ず削除してください。

/etc/passwdの確認
一部のディストリビューションでは、セキュリティ上の配慮からWebサーバーのアカウントにnologin(ログイン不可)が設定されています。nologinのアカウントではatコマンドも利用できず、epgrecによる録画予約が機能しません。 rootアカウントで/etc/passwdを開き、Webサーバーのアカウント(apacheなど)のエントリを調べ、シェルの設定が/sbin/nologinに設定されているようなら、/bin/shに変更しておきましょう。

apache:x:48:48:Apache:/var/www:/sbin/nologin
↓下記のように変更
apache:x:48:48:Apache:/var/www:/bin/sh

以上の設定をしっかりと行っておかないと、録画予約に失敗します。

MySQLで,必要なテーブルを作っておきます.
この操作では,特段MySQLの設定をしていない場合MySQL のroot 権限が必要ですが,Ubuntu のroot 権限は要しません

mysql -u root -p

create database epg;
grant all privileges on *.* to [username]@localhost identified by '[Password]';
exit

username,password,データベース名(例ではepg)は,なんでも構いません.
よく分からなくなってしまったら,PHP もインストールしたことですし,PHPMyAdmin 使うといいです.

epgrec を

sourceforgeのreleaseページからダウンロードして展開,設定します.

tar zxvf epgrec-20100322.tar.gz -C /var/www/
cd /var/www/epgrec
cp config.php.sample config.php
cp do-record.sh.pt1 do-record.sh
gedit /var/www/epgrec/config.php

エディタでconfig.php 内のチャンネルマッピングを設定します.
物理チャンネルは,どの中継局から電波を取っているか(あるいはCATVのパススルーか,トランスモジュレーションか,集合住宅の場合U-U 変換,U-V 変換をしていないかetc・・・)によって異なります.東京タワーから電波を取っている場合,このページ記載の通りです物理チャンネルは,地上波デジタル/地上波アナログの場合,13ch〜62ch の間で設定されるチャンネルであり,リモコンのチャンネルとは一般に異なります.

設定できたら,ホームディレクトリ(あるいは大きいファイルが生成されても構わないディレクトリ)に移動し

OUTPUT=test.ts CHANNEL=22 DURATION=30 TUNER=0 MODE=0 TYPE=GR /var/www/epgrec/do-record.sh

を実行します.チャンネルは適宜変えてください.東京タワーから電波を取っている場合,上記コマンドでTBS が30 秒録画されたら成功です.上手くいかなければ,TUNER の番号(0〜3)を変えてみてください.
うまくいったら,http://localhost/epgrec/にアクセスします.言われるがままに設定してください.データベース名,パスワードはさっき設定したやつです.
もしなんらかの理由(SSD を使っている,他の大容量HDD に保存したい・・・等)で/var/www/epgrec/video/以下に録画したデータを直接置きたくない場合,この設定で相対パスを書いてもいいんですが,SimLink 貼っておくんでも大丈夫です.

ちゃんと設定したはずなのにEPG を受信できないチャンネルがある場合,電波の受信状態を確認してください.確認後,http://localhost/epgrec/getepg.phpにアクセスし,正常に取得できていればOKです.僕はここでハマりましたが,結局,分配器がショボかったのが原因でした.(分配器くらいケチらずいいものを買いましょう.あと,タコ足するならブースター付けましょう)

EPGを常に最新に保っておきたい場合,cronの設定が必要です.僕はいまのところ設定してません.必要になったらやればいいと考えてます.

EPG の自動更新は,例えば以下のように設定します.この場合,午前4時30分に更新されます.

crontab -e
30 4 * * * /var/www/epgrec/getepg.php

権限の与え方にもよるのですが,

sudo su
sudo www-data

を実行してからのほうが良いかもしれません.

あとはhttp://localhost/epgrec/にアクセスして録画予約するだけです.

・・・Ubuntu 10.10 よりはハードルが上がりましたが,できないことはないです.

参考URL
Ubuntu10.10を使って快適な地デジ録画環境を作る①〜④
epgrecのインストールと設定

追記(2012-05-05) カーネルのバージョンが変わったときは,ドライバの再インストールが必要です.aptからカーネルをアップデートした際にも必要です.

cd ~/pt1-7662d0ecd74b/driver
make
sudo make install

2011年3月  10.10版公開
2011年12月  11.10向けに全面改訂
2012年09月  12.04で動作確認.少しだけ改訂

Ubuntu 12.04 64bitでPT2を使う(Ubuntu 10.10〜12.04対応)” への9件のコメント

  1. はじめまして。当方はなんとかWindowsからの脱却を試みているubuntu Beginnerです。いろいろなところをさまよってようやくこちらの記事を参考しにておかげさまでようやくubuntu 11.10でpt2を認識させドライバを組み込むことができました。どうもありがとうございました。

  2. こちらこそご覧いただきありがとうございます.

    慣れてしまえばWindowsよりも格段に扱い易いOSだと思いますので,根気よく使い続けてみてください.

  3. ピンバック: Ubuntu 11.10 + PT2 で録画サーバを立ててみる » ORBIT SPACE

  4. お恥ずかしながら,まだ11.10を使ってますので未検証です
    時間があるときに試したいです

  5. ピンバック: 予約録画その2(epgrec for PT2) | オールウェイズ窮鼠

  6. ubntu 9でPT2+epgrecを3年ほど運用してきたのですが、MB不調で、PCを入れかえ
    OSもubntu 13に、epgrecも最新に替えました。
    64bit版ではNTTのカードリーダが調子よくなく、32bit版に替えたら問題ありませんでした。
    PT2のドライバはhttp://aqua-linux.blog.so-net.ne.jp/を参考にさせてもらい、他はこのページを参考にさせていただきました。
    ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です