私をペロペロするがよい

lazy_dog のブログです。

Ubuntu 14.04 + Chinachu で録画環境を作った (ACPI を利用して shutdown 状態から自動起動)

空いていたデスクトップマシンを 40 インチのテレビに HDMI で繋いで、テレビ録画環境にした。その時の構築ログ。

環境

  • メモリが DDR2 世代のちょっと古い PC
    • ただし、CPU は Q9550 で、メモリ 8GB なのでリソースは割と潤沢。
    • 割と新しめの AMD の安いグラボも積んでる。
    • 普段は Youtube とか Hulu を夫婦で見る用。
  • Ubuntu 14.04 64bit
    • PT3 を購入当時、まだ 15 系がリリースされてなかった。本当は systemd で管理したいので、こちらに移行したいのだが。。。

パーツ

PT3 と Gemalto のカードリーダを使用した。Gemalto のカードリーダは、当時 NTTcom のカードリーダがどこも品切れの状態で、しょうがなくこちらを選択した。

 # すさまじく、PT3 が値上りしている。。。

ちなみに、この Gemalto が結構くせもの。後述するように、安定稼動のためにはカードリーダのアプリケーションやライブラリに一手間を加える必要がある。

分配器とテレビケーブルは、適当に家電量販店で購入した。Amazon でも評判が良さそうなのが買えるので、こっちで購入することをオススメする。店で買うより安いし。注意しないといけないのは、部屋のテレビ出力口がテレビと BS 混在なのかそうでないかで分配器の種類が違うようだ。事前によく調べておかないと損するので注意。

1, 電源の自動起動と停止をできるように

Ubuntu が起動していないともちろん録画もできないので、自動で電源を起動させる仕組みにした。テレビの録画時間によって自動起動も考えたが、Chinachu との連携がめんどくさそうだったのと、録画したい番組は大抵 18 時以降のものが多いと考えて、指定した時間(18:00)に起動するような簡易な設定にした。

仕組みとしては、ACPI の機能を使用して電源を自動起動する。/sys/class/rtc/rtc0/wakealarm に起動したい時間をリダイレクトすると、その時間に shutdown 状態から電源が入る。ただし、BIOS が対応していることが必須。

wakePower.sh

このスクリプトを cron で 0:00 に実行するという、とっても簡素な仕組みだ。
シャットダウンも同じように時間決め打ちで、自動で電源が落ちるようにした。cron で shutdown -h now を走らせるというだけの愚直なもの。

shutdown.sh

これを毎日 1:15 に実行している。時間になったらテレビ見てないで、早く寝ろ、という心遣いを感じて欲しい。

2, ハードウェアアクセラレーションを効かして動画再生をできるように

録画した番組は VLC で見ている。しかし、普通に再生すると全て CPU 処理となってしまうので負荷が高い。具体的には 1 core をまるっと使いきる程度。せっかくグラフィックボードを積んでいるので、GPU ハードウェアアクセラレータを有効にした。

手順としては、

  1. プロプライエタリ版の AMD Catalyst Drive をインストール。Ubuntu の設定ダイアログから簡単にインストールできる。
  2. ハードウェアアクセラレータを有効にする AMD 向け VDPAU のライブラリをインストールする。ついでに Info を表示するツールも。
# apt-get install vdpauinfo libvdpau-va-gl1
  1. VLC の設定で、ハードウェアアクセラレータを有効にする。GUI で設定するか、 ${HOME}/.config/vlc/vlcrc の設定を下記のように変更する。
# Hardware decoding (string)
avcodec-hw=any

3. 普通に PT3 and Chinachu 環境を構築する

その辺のサイトをご覧ください。特別な設定なく、recpt1 コマンドが実行できるようにする。

4. pcsc-tools の最新版をソースコードからインストールする

NTTcom のカードリーダでは問題ないと思うが、Gemalto のカードリーダーでは Chinachu で録画すると、下記エラーが出て録画データが正常に再生できない現象が頻発する。apt-get でインストールできる pcsc-tools でも最初は問題なくても、そのうち変になる。

20 Dec 18:30:05 - #recpt1: b25->put failed b25_decode failed (code=-9). fall back to encrypted recording.

Gemalto のカードリーダーが B-CAS カードの読み込みに失敗して、デコードに失敗するようだ。その際、 pcsc_scan をすると、上手くカードを認識していない状態が確認できる。そのため、apt-get からインストールできる pcsc-tools ではなく公式サイトからソースコードを直接ダウンロードしてインストールしたほうがいい。

pcsc-tools http://ludovic.rousseau.free.fr/softwares/pcsc-tools/

普通に ./configure して make && make install すれば OK。"libusb.h" が見つからない、というエラーが出たら apt-get install libusb-dev で "libusb-dev" をインストールすればいけた。

5. あとは適当に cron

に登録する。