仙石浩明の日記

2006年6月4日

Wチューナ&ビデオキャプチャ カード GV-MVP/RX2W を使って Linux でテレビ録画

Linuxでテレビ録画を行なう方法は、多くの Web ページで紹介されているが、 ビデオキャプチャ カードによっては、 Linux カーネルのバージョンが変わると一筋縄にはいかなかったりするので、 現時点での Linux カーネル安定版の最新バージョン 2.6.16.19 で、 I-O DATA 製 ハードウェア MPEG-2 エンコーダ搭載TVキャプチャボード GV-MVP/RX2Wを使う方法をメモ (2.6.24.4 で使う方法)。

まず、 LinuxTVプロジェクトから V4L ドライバの最新版を取得する。 Mercurial (a fast, lightweight Source Control Management system) が インストール済であれば、

hg clone http://linuxtv.org/hg/v4l-dvb

を実行する。Mercurial が無い場合は、 MASTER v4l-dvb development repository から最新版を選んで「tree」をクリックし、 「gz」ないし「bz2」をクリックして tar ball をダウンロード。

そのまま make install してインストールしてもよいが、 make release VER=2.6.16.19 などと実行して、 現在使っているカーネルとは別のカーネルへインストールすることもできるし、 make menuconfig を実行して インストールするモジュールを選択してもよい。

私は、以下のモジュールのみ make した:

Multimedia devices  --->
  Video Capture Adapters  --->
    V4L USB devices  --->
      Hauppauge WinTV-PVR USB2 support

# Hauppauge 以外でも tveeprom.ko を用いるドライバであれば何でもよい

次に、ぱ研「LinuxでITVC16-STVLP」の ページに登録されている 0.6_svn3233-paken060421.tar.gz をダウンロード。 これをそのまま make すると version_check でひっかかるので、 Makefile の一行目を、

all clean install: version_check

となっているのを

all clean install:

に変更して make install する。 make KVER=2.6.16.19 install などと実行して、 現在使っているカーネルとは別のカーネルへインストールすることもできる。

/etc/modprobe.conf に以下の行を追加:

alias char-major-81 videodev
alias char-major-81-0 ivtv
alias char-major-81-1 ivtv
options ivtv ntsc=j tuner=46,46

チューナの video standard の設定を変更すると、 正しい選局ができなくなるようなので、 チャンネルを設定するプログラム等で video standard の設定を行なわないようにしておく必要がありそう。

私は録画 perl スクリプトを 自作して使っている (Video::ivtv & Video::Frequencies が必要)。

senri:/home/sengoku % tv -h
Unknown option: h
Usage: tv <opt>
opt:   -x               ; xine
       -X               ; mplayer YUV
       -u               ; ptune-ui
       -P <port>        ; TV server (http)
       -U <host>:<port> ;           (udp)
       -c <channel>     ; change channel
       -f <freq>        ; chage frequency
       -l               ; input from S-Video
       -r <sec>         ; mpeg to stdout
       -o <file>        ;      to file
       -t <time>        ; record at <time>
       -j               ; start at 0 sec
       -0               ; use video0
       -1               ; use video1
       -v               ; verbose

このスクリプトは予約録画 (-t オプション) もサポートしている他、 tv -P 1234 などと実行すると、 TVサーバとして利用することもできる。 つまり LAN 内の任意のマシンで、 VLC media playerを使って http://senri:1234/?c=1 などとチャンネル指定付で tv サーバへ接続し、 TVを視聴できる。

(ビデオキャプチャ・カード GV-MVP/RX2W を使って Linux 2.6.24.4 でテレビ録画)

Filed under: ハードウェアの認識と制御 — hiroaki_sengoku @ 12:45

3 Comments »

  1. 貴重な情報ありがとうございます。
    Debian の sid 環境 (2.6.16.19) で試してみました。すると、
    # modprobe ivtv ntsc=j
    FATAL: Error inserting ivtv (/lib/modules/2.6.16.19/ivtv/ivtv.ko): Unknown symbol in module, or unknown parameter (see dmesg)
    となり、dmesg の出力は、
    ivtv: Unknown symbol release_firmware
    ivtv: Unknown symbol request_firmware
    ivtv: Unknown symbol tveeprom_read
    ivtv: Unknown symbol tveeprom_hauppauge_analog
    となっています。ファームウェア関連のファイルは、
    /usr/lib/hotplug/firmware# dir
    v4l-cx2341x-dec.fw v4l-cx2341x-init.mpg v4l-pvrusb2-24xxx-01.fw
    v4l-cx2341x-enc.fw v4l-cx25840.fw v4l-pvrusb2-29xxx-01.fw
    のように配置してあります。
    何か小生がミスしているのでしょうか?

    Comment by denson — 2006年7月30日 @ 05:04

  2. ご存知かもしれませんが、Unknown symbol というエラーメッセージは、モジュールをロードしようとした際、必要とする関数が見つからなかった(ために、ロードに失敗した)という意味です。つまり ivtv 固有の話ではなくて、Linux カーネル一般の問題です。おそらく必要なモジュールがインストールされていないのでしょう。
    release_firmware 等の関数は、firmware_class.c つまり firmware_class.ko モジュールで定義されている関数です。このモジュールをインストールするには、「Userspace firmware loading support」を選択する必要があります。
    また、tveeprom_read は tveeprom.ko モジュールで定義されている関数ですね。本記事でも書いたように Hauppauge など tveeprom.ko モジュールを用いるドライバを選択してください。
    # もちろん、モジュールとしてインストールする代わりにカーネルに組み込んでも構いません

    Comment by 仙石浩明 — 2006年7月30日 @ 23:11

  3. ビデオキャプチャ・カード GV-MVP/RX2W を使って Linux 2.6.22.10 でテレビ録画

    Linux でテレビ録画を行なう方法は、
    多くの Web ページで紹介されているが、
    ビデオキャプチャ・カードによっては、
    Linux カーネルのバージョンが変わると一筋縄にはいかなかったりするので、
    現時点での Linux カーネル安定版の最新バージョン 2.6.22.10 で、
    I-…

    Comment by 仙石浩明の日記 — 2007年10月15日 @ 07:14

RSS feed for comments on this post.

Leave a comment