Linux活用レシピ > 家電 > 地デジ録画サーバ
Ubuntu 9.10デスクトップ版での作り方

4. OSと地デジチューナーカードの設定

4-1. 設定の開始

    PCの電源を入れOSを起動します。

  • 作業はapt-getコマンドで実施しますので、ブロードバンドルータなどでインターネットに 接続できる環境で実施してください。

  • ※実際にLANケーブルをネットワーク機器に接続した状態で設定してください。
  1. OS起動すると、ここまでのレシピにありました「ユーザアカウントとホスト名を設定 」の工程で、「自動的にログインする」を選んだ場合は、デスクトップ画面が一気に表示されますが、「ログイン時にパスワードを要求する」を選択した場合はログイン画面が表示されていますので、設定したアカウントとパスワードでログインし、デスクトップ画面を表示してください。

  2. ここの工程では、設定にコンソールを利用します。デスクトップ画面からは画面右上の「アプリケーション」メニューの中に「アクセサリ」があり、その中に「端末」というアイコンがありますので、これをクリックするとコンソールが起動します。

    コンソールはUbuntuデスクトップから起動する方法と、Windowsクライアントなどからターミナルソフトを使ってsshで接続して利用する方法がありますので、使いやすい方を利用ください。

    なお、コマンド入力の説明にはカーソルも入れて表現していますので、実際にはカーソルの部分は入力不要です。
    例)
    $ ls -al
    ^一般ユーザの場合のカーソル
    # ls -al
    ^rootユーザの場合のカーソル
    

4-2. sshサーバ設定

  1. 早速設定に入りますが、Windowsクライアントなどからターミナルソフトを使ってsshで接続して利用する場合のことを考え、sshサーバのインストールから説明します。
    ubuntuデスクトップ画面からは画面右上の「アプリケーション」メニューの中の「アクセサリ」、その中の「端末」というアイコンをクリックしてとコンソールを起動します。
    以下の通りコマンドを入力します。
    $ sudo apt-get update
    Password: ←ここでユーザのパスワードを入力して下さい(表示はされません)
    $ sudo apt-get install ssh
    続行しますか [Y/n]? y   <---「y」を入力
    

  2. 固定IPアドレス設定 サーバのIPアドレスは固定されていた方が都合がよいので、手動でIPを設定します。
    $ sudo vi /etc/network/interfaces
    
    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet static        <-- 固定に変更
    address 192.168.1.200         <-- IPアドレス追加
    netmask 255.255.255.0         <-- サブネットマスク追加
    gateway 192.168.1.1           <-- デフォルトゲートウェイ追加
    
    ※家庭内や会社のネットワーク環境にあわせて設定してください。

  3. DNSサーバの設定を/etc/resolv.confに記載
    $ sudo vi /etc/resolv.conf
    
    nameserver 192.168.1.1        <-- DNSサーバのアドレス追記
    

  4. 設定を反映します。
    $ sudo /etc/init.d/networking restart
    

4-3. sshでクライアントから接続するための設定

    Windowsクライアントなどからターミナルソフトを使って接続しコンソールを利用する場合のことを考慮し、以下のセキュリティ設定を行います。

    sshサーバセキュリティ設定
    $ sudo vi /etc/ssh/sshd_config
    
    PermitRootLogin no      ← noにしておく
    
    sshサーバ再起動
    $ sudo /etc/init.d/ssh restart
    
    これでWindowsクライアントからputty等で接続する場合は、文字コードを(UTF8(CJK))でssh接続します。その際Ubuntuインストール時に最初に作成したユーザアカウントとパスワードを入力してログインしてください。


4-4. PT2ドライバ設定

  1. 一番重要な工程に入ります。コンソールをそのまま利用される場合は、続行し、Windowsクライアントからターミナルソフトで接続する場合は文字コードを(UTF8(CJK))でssh接続します。

  2. rootに切り替えます。
    $ sudo su
    Password: ←ここでユーザのパスワードを入力(表示はされません)
    
    ※できればrootユーザで作業をしないほうがよいのですが、多数の作業ステップでいちいちパスワードを入力する手間を省くため特別です。

  3. 取得に必要なパッケージをインストールします。
    # apt-get install mercurial
    

  4. ドライバを取得します。
    # cd /usr/local/src
    # hg clone http://hg.honeyplanet.jp/pt1/ PT2
    # ls PT2
    driver  recpt1 
       ※arib25がないので旧バージョン取得
    
       ※現在のチェンジセット確認
    # cd PT2
    # hg parents -v
    
    チェンジセット:   78:5a0126d8af17
    ・
    ・
       ※いつのチェンジセットで削除か確認
    # hg log -v | less
    
       ※確認できたら削除
    # cd ..
    # rm -rf PT2
    
       ※削除される前のチェンジセット「73:c44e16dbb0e2」取得
    # hg clone --rev 73 http://hg.honeyplanet.jp/pt1/ PT2
    # ls PT2
    arib25  b25_docs  driver  recpt1
       ※OK
    
    

    なお、上記「arib25」が含まれているソースがどうしても取得できない場合、以下のコマンドで当サイトからダウンロードして解凍してください。

      # cd /usr/local/src
      # wget http://linux-memo.net/kaden/src/PT2--rev73.tar.gz
      # tar zxvf PT2--rev73.tar.gz
      

  5. ドライバをビルドするパッケージを取得。
    # apt-get -y install build-essential linux-headers-`uname -r`
    
    パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 linux-headers-2.6.31-14-generic はすでに最新バージョンです。 linux-headers-2.6.31-14-generic は手動でインストールしたと設定されました。 以下の特別パッケージがインストールされます: dpkg-dev fakeroot g++ g++-4.4 libstdc++6-4.4-dev patch 提案パッケージ: debian-keyring debian-maintainers g++-multilib g++-4.4-multilib gcc-4.4-doc libstdc++6-4.4-dbg libstdc++6-4.4-doc diff-doc 以下のパッケージが新たにインストールされます: build-essential dpkg-dev fakeroot g++ g++-4.4 libstdc++6-4.4-dev patch アップグレード: 0 個、新規インストール: 7 個、削除: 0 個、保留: 136 個。 6,999kB のアーカイブを取得する必要があります。 この操作後に追加で 23.5MB のディスク容量が消費されます。 取得:1 http://jp.archive.ubuntu.com karmic/main libstdc++6-4.4-dev 4.4.1-4ubuntu8 [1,490kB] 取得:2 http://jp.archive.ubuntu.com karmic/main g++-4.4 4.4.1-4ubuntu8 [4,701kB] 取得:3 http://jp.archive.ubuntu.com karmic/main g++ 4:4.4.1-1ubuntu2 [1,446B] 取得:4 http://jp.archive.ubuntu.com karmic/main patch 2.5.9-5 [100kB] 取得:5 http://jp.archive.ubuntu.com karmic/main dpkg-dev 1.15.4ubuntu2 [573kB] 取得:6 http://jp.archive.ubuntu.com karmic/main build-essential 11.4 [7,172B] 取得:7 http://jp.archive.ubuntu.com karmic/main fakeroot 1.12.4ubuntu1 [126kB] 6,999kB を 1s で取得しました (4,808kB/s) 未選択パッケージ libstdc++6-4.4-dev を選択しています。 (データベースを読み込んでいます ... 現在 114940 個のファイルとディレクトリがインストールされています。) (.../libstdc++6-4.4-dev_4.4.1-4ubuntu8_i386.deb から) libstdc++6-4.4-dev を展開しています... 未選択パッケージ g++-4.4 を選択しています。 (.../g++-4.4_4.4.1-4ubuntu8_i386.deb から) g++-4.4 を展開しています... 未選択パッケージ g++ を選択しています。 (.../g++_4%3a4.4.1-1ubuntu2_i386.deb から) g++ を展開しています... 未選択パッケージ patch を選択しています。 (.../patch_2.5.9-5_i386.deb から) patch を展開しています... 未選択パッケージ dpkg-dev を選択しています。 (.../dpkg-dev_1.15.4ubuntu2_all.deb から) dpkg-dev を展開しています... 未選択パッケージ build-essential を選択しています。 (.../build-essential_11.4_i386.deb から) build-essential を展開しています... 未選択パッケージ fakeroot を選択しています。 (.../fakeroot_1.12.4ubuntu1_i386.deb から) fakeroot を展開しています... man-db のトリガを処理しています ... patch (2.5.9-5) を設定しています ... dpkg-dev (1.15.4ubuntu2) を設定しています ... fakeroot (1.12.4ubuntu1) を設定しています ... update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode. libstdc++6-4.4-dev (4.4.1-4ubuntu8) を設定しています ... g++-4.4 (4.4.1-4ubuntu8) を設定しています ... g++ (4:4.4.1-1ubuntu2) を設定しています ... update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode. build-essential (11.4) を設定しています ...

  6. ドライバをビルド。

  7. # cd ./PT2/driver/
    # make -C /lib/modules/`uname -r`/build M=`pwd` V=1
    
    make: ディレクトリ `/usr/src/linux-headers-2.6.31-14-generic' に入ります test -e include/linux/autoconf.h -a -e include/config/auto.conf || ( \ echo; \ echo " ERROR: Kernel configuration is invalid."; \ echo " include/linux/autoconf.h or include/config/auto.conf are missing."; \ echo " Run 'make oldconfig && make prepare' on kernel src to fix it."; \ echo; \ /bin/false) mkdir -p /usr/local/src/PT2/driver/.tmp_versions ; rm -f /usr/local/src/PT2/driver/.tmp_versions/* ・


    make: ディレクトリ `/usr/src/linux-headers-2.6.31-14-generic' から出ます

  8. ドライバをインストール。

  9. # make -C /lib/modules/`uname -r`/build M=`pwd` V=1 modules_install
    

  10. モジュールを有効にします。

  11. # depmod -a
    

  12. ルールファイルをコピーします。

  13. # cp -ip etc/99-pt1.rules /etc/udev/rules.d/
    

  14. Ubuntu再起動します。

  15. # reboot
    

  16. 再起動後、再度Ubuntuのコンソールを表示します。ubuntuデスクトップ画面からは画面右上の「アプリケーション」メニューの中の「アクセサリ」、その中の「端末」というアイコンをクリックしてとコンソールを起動、Windows等からターミナルソフトでssh接続する場合は文字コード(UTF8(CJK)でssh接続し、Ubuntuインストール時に最初に作成したユーザとパスワードを入力してコンソールを表示します。

  17. rootに切り替えます。

  18. # sudo su
    Password: ←ここでユーザのパスワードを入力(表示はされません)
    

  19. 起動時にドライバがロードされ、PT2の地デジチューナーカードが認識されているか確認します。

  20. # dmesg | grep "\] [pP][tT]1"
    
    [   10.104200] pt1-pci.c:v1.00 11/28/2008
    [   10.104347] pt1-pci 0000:00:03.0: enabling device (0004 -> 0006)
    [   10.509107] PT1:ISDB-S Sleep
    [   10.567059] PT1:ISDB-S Sleep
    [   10.620065] PT1:ISDB-T Sleep
    [   10.676056] PT1:ISDB-T Sleep
    [   10.740065] PT1: device[0]=(null)
    [   10.740656] PT1: card_number = 0
    [   10.741479] PT1: card_number = 0
    [   10.741873] PT1: card_number = 0
    [   10.742232] PT1: card_number = 0
    [   12.009596] pt1_thread run
      ※「PT1」と表示されていればPT2は認識されている。
    
    以上でPT2ドライバのインストールは完了です。

4-5. カードリーダーの設定

    次にカードリーダの設定を行います。

  1. カードリーダ(SCR3310-NTTCom)をUSBに接続します。

  2. B-CASカード挿入します。
  3. 通常白地に注意事項がたくさん書かれている側が、LEDランプ側に来るように挿します。また金色の接触部分がリーダの中に入っている状態が正しい挿し方です。

  4. 必要なパッケージをインストールします。
    # apt-get -y install libccid pcsc-tools
    
    パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の特別パッケージがインストールされます: libpcsc-perl pcscd 以下のパッケージが新たにインストールされます: libccid libpcsc-perl pcsc-tools pcscd アップグレード: 0 個、新規インストール: 4 個、削除: 0 個、保留: 136 個。 307kB のアーカイブを取得する必要があります。 この操作後に追加で 1,110kB のディスク容量が消費されます。 取得:1 http://jp.archive.ubuntu.com karmic/universe libpcsc-perl 1.4.7-1 [58.9kB] 取得:2 http://jp.archive.ubuntu.com karmic/universe libccid 1.3.10-1 [104kB] 取得:3 http://jp.archive.ubuntu.com karmic/universe pcsc-tools 1.4.15-1 [63.5kB] 取得:4 http://jp.archive.ubuntu.com karmic/universe pcscd 1.5.3-1ubuntu1 [80.1kB] 307kB を 0s で取得しました (380kB/s) 未選択パッケージ libpcsc-perl を選択しています。 (データベースを読み込んでいます ... 現在 115911 個のファイルとディレクトリがインストールされています。) (.../libpcsc-perl_1.4.7-1_i386.deb から) libpcsc-perl を展開しています... 未選択パッケージ libccid を選択しています。 (.../libccid_1.3.10-1_i386.deb から) libccid を展開しています... 未選択パッケージ pcsc-tools を選択しています。 (.../pcsc-tools_1.4.15-1_i386.deb から) pcsc-tools を展開しています... 未選択パッケージ pcscd を選択しています。 (.../pcscd_1.5.3-1ubuntu1_i386.deb から) pcscd を展開しています... man-db のトリガを処理しています ... desktop-file-utils のトリガを処理しています ... sreadahead のトリガを処理しています ... sreadahead will be reprofiled on next reboot libpcsc-perl (1.4.7-1) を設定しています ... libccid (1.3.10-1) を設定しています ... pcsc-tools (1.4.15-1) を設定しています ... pcscd (1.5.3-1ubuntu1) を設定しています ...

  5. カードリーダのサーバを起動します。
  6. # /etc/init.d/pcscd start
    
    ここで、正常にカードが読み込まれれば、カードリーダのLEDランプが点滅しはじめます。

  7. では実際に認識されたか確認します。
  8. # pcsc_scan
    
    PC/SC device scanner
    V 1.4.15 (c) 2001-2009, Ludovic Rousseau 
    Compiled with PC/SC lite version: 1.4.102
    Scanning present readers...
    0: SCM SCR 3310 NTTCom (????????????) 00 00
    
    Wed Dec  2 23:30:05 2009
     Reader 0: SCM SCR 3310 NTTCom (????????????) 00 00
      Card state: Card inserted,
      ATR: 3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99
        :
        :
            Japanese Chijou Digital B-CAS Card (pay TV)
      ※[CTRL]+[c]キーで、コンソールが戻ります。
    
    以上の表示が確認できれば正常に読まれています。

      なお、このコマンドの結果が
        Card state: Card inserted, Unresponsive card,
      
      などと表示されて止まってしまう場合は、B-CASカードの挿入の裏表が逆になっていないか確認してください。
      通常白地に注意事項がたくさん書かれている側が、LEDランプ側に来るように挿します。また正常に挿されている場合は緑のLEDランプが点滅します。LEDランプが点灯(ついたまま)になっている場合は読めていません。


4-6. 録画ツールのインストール。

  1. 必要なパッケージをインストールします。
  2. # apt-get install pkg-config
    
    パッケージリストを読み込んでいます... 完了
    依存関係ツリーを作成しています
    状態情報を読み取っています... 完了
    pkg-config はすでに最新バージョンです。
    アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 136 個。
    

    # apt-get install libpcsclite-dev
    
    パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが新たにインストールされます: libpcsclite-dev アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 136 個。 62.1kB のアーカイブを取得する必要があります。 この操作後に追加で 205kB のディスク容量が消費されます。 取得:1 http://jp.archive.ubuntu.com karmic/main libpcsclite-dev 1.5.3-1ubuntu1 [62.1kB] 62.1kB を 0s で取得しました (98.2kB/s) 未選択パッケージ libpcsclite-dev を選択しています。 (データベースを読み込んでいます ... 現在 115995 個のファイルとディレクトリがインストールされています。) (.../libpcsclite-dev_1.5.3-1ubuntu1_i386.deb から) libpcsclite-dev を展開しています... libpcsclite-dev (1.5.3-1ubuntu1) を設定しています ...

  3. arib25をコンパイル・インストールします。
  4. # cd /usr/local/src/PT2/arib25/src
    # make
    
    gcc -MM arib_std_b25.c b_cas_card.c multi2.c ts_section_parser.c -Wall `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 > Makefile.dep gcc -O2 -g -fPIC -Wall `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c -o arib_std_b25.o arib_std_b25.c gcc -O2 -g -fPIC -Wall `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c -o b_cas_card.o b_cas_card.c gcc -O2 -g -fPIC -Wall `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c -o multi2.o multi2.c gcc -O2 -g -fPIC -Wall `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c -o ts_section_parser.o ts_section_parser.c gcc -O2 -g -fPIC -Wall `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c -o td.o td.c gcc -o b25 arib_std_b25.o b_cas_card.o multi2.o ts_section_parser.o td.o `pkg-config libpcsclite --libs` -lm gcc -shared -o libarib25.so arib_std_b25.o b_cas_card.o multi2.o ts_section_parser.o `pkg-config libpcsclite --libs` -lm -Wl,-soname,libarib25.so.0

    # make install
    
    mkdir -p /usr/local/include/arib25
    
    install -m644 arib_std_b25.h b_cas_card.h portable.h /usr/local/include/arib25
    install -m755 b25 /usr/local/bin
    install -m755 libarib25.so /usr/local/lib/libarib25.so.0.2.4
    ln -sf /usr/local/lib/libarib25.so.0.2.4 /usr/local/lib/libarib25.so.0
    ln -sf /usr/local/lib/libarib25.so.0 /usr/local/lib/libarib25.so
    ldconfig
    

  5. さらにrecpt1をコンパイル・インストールします。
  6. # cd ../../recpt1
    # make
    
    revh=`hg parents --template 'const char *version = "r{rev}:{node|short} ({date|isodate})";\n' 2>/dev/null`; \ if [ -n "$revh" ] ; then \ echo "$revh" > version.h; \ else \ echo "const char *version = \"'1.0.0'\";" > version.h; \ fi gcc -MM recpt1.c decoder.c mkpath.c -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DB25 > .deps gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DB25 -c -o recpt1.o recpt1.c gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DB25 -c -o decoder.o decoder.c gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DB25 -c -o mkpath.o mkpath.c gcc -o recpt1 recpt1.o decoder.o mkpath.o `pkg-config libpcsclite --libs` -larib25 -lm -lpthread

    # cp -ip ./recpt1 /usr/local/bin
    

4-7. 録画確認

  1. ※地元の放送局と物理チャネル番号の対応表を確認。
  2. http://www.maspro.co.jp/contact/bro/bro_ch.html

  3. 録画テスト
  4. # cd /tmp
    # recpt1 --b25 --strip 17 30 test.ts
      ※17番の物理チャネル番号を30秒間録画しtest.tsに保存する。
    
    using B25...
    enable B25 strip
    Signal=30.438297dB
    Recording...
    

    コンソールかえると録画完了。
    とりあえずできた「test.ts」を「VLC」やWindowsの「MediaPlayer」等で閲覧して、非常にきれいに撮れていることをかくにんしましょう。

      ここで、以下のように表示されてしまう場合は、地デジチューナーカードにアンテナが接続できていない可能性があります。4つ挿すところがありますが、地デジの録画ではとりあえずT1と書かれているところにしっかり接続してください。
      using B25...
      enable B25 strip
      Cannot tune to the specified channel
      

続いて「予約録画システム」のステップで予約録画システムを構築していきます。


ハードは安価に入手しよう!