Top > IEEE1394デバイスでデジタル録画

キーワード: Linux 録画 デジタル IEEE 1394 dv1394 law1394 CentOS カーネル モジュール


やりたいこと

  • IEEE1394(FireWire, iLINK)デバイスからデジタル(HDV)録画したい

必要なもの

  • CentOS 5 + CentOS Plusカーネル
  • liblaw1394
  • libavc1394
  • libiec61883
  • libdv
  • dvgrab
  • mencoder

必要なものをいれる

カーネル

CentOS5の標準カーネルには, IEEE1394ドライバは含まれないので, CentOS Plus リポジトリから導入してやる.

# yum -y --enablerepo=centosplus install kernel

ドライバを確認する

# find /lib |grep 1394
/lib/modules/2.6.18-128.1.6.el5.centos.plus/kernel/drivers/ieee1394
/lib/modules/2.6.18-128.1.6.el5.centos.plus/kernel/drivers/ieee1394/pcilynx.ko
/lib/modules/2.6.18-128.1.6.el5.centos.plus/kernel/drivers/ieee1394/sbp2.ko
/lib/modules/2.6.18-128.1.6.el5.centos.plus/kernel/drivers/ieee1394/video1394.ko
/lib/modules/2.6.18-128.1.6.el5.centos.plus/kernel/drivers/ieee1394/raw1394.ko
/lib/modules/2.6.18-128.1.6.el5.centos.plus/kernel/drivers/ieee1394/dv1394.ko
/lib/modules/2.6.18-128.1.6.el5.centos.plus/kernel/drivers/ieee1394/ohci1394.ko
/lib/modules/2.6.18-128.1.6.el5.centos.plus/kernel/drivers/ieee1394/eth1394.ko
/lib/modules/2.6.18-128.1.6.el5.centos.plus/kernel/drivers/ieee1394/ieee1394.ko
/lib/modules/2.6.18-128.1.6.el5.centos.plus/modules.ieee1394map
/lib/modules/2.6.18-128.el5/modules.ieee1394map
/lib/modules/2.6.18-128.1.6.el5/modules.ieee1394map

ちゃんと入ったようだ.
再起動して確認する.

# lsmod |grep 1394
raw1394                29753  0
dv1394                 22937  0
ohci1394               35717  1 dv1394
ieee1394              293625  3 raw1394,dv1394,ohci1394

libraw1394

CentOSでは, libraw1394のrpmがバンドルされるが正常に動作しなかった.
sourceパッケージを導入する.

# tar xfvz libraw1394-1.3.0
# ./configure
# make 
# make install

テスト

# testlibraw
successfully got handle
current generation number: 1
1 card(s) found
  nodes on bus:  2, card name: ohci1394
using first card found: 2 nodes on bus, local ID is 1, IRM is 1
-snip-

libavc1394

つづいてlibac1394をsourceパッケージから導入する.
これもrpmがバンドルされるが..(以下省略

# tar xfvz libavc1394-0.5.3.tar.gz
# LIBRAW1394_CFLAGS=-I/usr/local/include/libraw1394 \
  LIBRAW1394_LIBS=/usr/local/lib/libraw1394.so \
  ./configure
# make
# make install

libiec61883

つづいてlibiec61883を導入する.
これもrpm..(以下略

# tar xfvz libiec61883-1.1.0.tar.gz
# cd libiec61883-1.1.0
# LIBRAW1394_CFLAGS=-I/usr/local/lib/libraw1394 \
  LIBRAW1394_LIBS=/usr/local/lib/libraw1394.so \
  ./configure
# make
# make install

libdv

xv lib が無いと言われるので先にいれてやる.

# yum -y install libXv-devel

つづいてlibdvをインストールする.

# tar xfvz libdv-1.0.0.tar.gz
# cd libdv-1.0.0
# ./configure
# make

dvgrab

続いてdvgrabを導入する.

# tar xfvz dvgrab-3.4.tar.gz
# cd dvgrab-3.4
# LIBRAW1394_CFLAGS=-I/usr/local/include/liblaw1394 \
  LIBAVC1394_CFLAGS=-I/usr/local/include/libavc1394 \
  LIBIEC61883_CFLAGS=-I/usr/local/include/libiec61883 \
  LIBRAW1394_LIBS=/usr/local/lib/libraw1394.so \
  LIBAVC1394_LIBS=/usr/local/lib/libavc1394.so \
  LIBIEC61883_LIBS=/usr/local/lib/libiec61883.so \
  ./configure
# make

make の最後の方でrom1394がなんたら言われるので, モジュールを書き足してコンパイルしてやる.

# g++ -D_REENTRANT -D_FILE_OFFSET_BITS=64 -g -O2   \
  -o dvgrab \
     avi.o dvframe.o dvgrab.o error.o filehandler.o frame.o hdvframe.o \
     iec13818-1.o iec13818-2.o ieee1394io.o io.o main.o raw1394util.o \
     riff.o smiltime.o stringutils.o v4l2reader.o srt.o \
     /usr/local/lib/libraw1394.so \
     /usr/local/lib/libavc1394.so \
     /usr/local/lib/libiec61883.so \
     /usr/local/lib/librom1394.so \
  -lpthread
# make install

dvgrabを実行してもモジュールが無い言われるので見つけられるようにしてやる

# vi /etc/ld.so.conf
/usr/local/lib (追記)
# ldconfig

テスト

# dvgrab
Error: no camera exists

動かない.... →手持ちの機器がちゃんとしたHDV出力を出していないようだ。
→終了。


この記事は書きかけで挫折しました。完成することはありません。


memo

# ./plugreport
Host Adapter 0
==============

Node 0 GUID 0x004026010602522e
------------------------------
libiec61883 error: error reading oMPR
libiec61883 error: error reading iMPR

Node 1 GUID 0x0080459d00250c53
------------------------------
oMPR n_plugs=1, data_rate=2, bcast_channel=63
oPCR[0] online=1, bcast_connection=0, n_p2p_connections=1
        channel=0, data_rate=0, overhead_id=0, payload=146
iMPR n_plugs=1, data_rate=2
iPCR[0] online=1, bcast_connection=0, n_p2p_connections=1
        channel=0
# dmesg |grep 1394
ieee1394: Initialized config rom entry `ip1394'
ohci1394: fw-host0: OHCI-1394 1.0 (PCI): IRQ=[169]  MMIO=[ed000000-ed0007ff]
 Max Packet=[2048]  IR/IT contexts=[4/8]
ieee1394: Host added: ID:BUS[0-00:1023]  GUID[004026010602522e]
ieee1394: Node added: ID:BUS[0-01:1023]  GUID[0080459d00250c53]
ieee1394: raw1394: /dev/raw1394 device initialized
# modprobe video1394
# lsmod |grep 1394
video1394              21145  0
raw1394                29753  0
dv1394                 22937  0
ohci1394               35717  2 video1394,dv1394
ieee1394              293625  4 video1394,raw1394,dv1394,ohci1394
# find /dev |grep 1394
/dev/video1394
/dev/video1394/0
/dev/raw1394
/dev/dv1394
/dev/dv1394/0
/dev/.udev/db/class@ieee1394_protocol@video1394-0
/dev/.udev/db/class@ieee1394_protocol@dv1394-0
# dvconnect
...............................死ーん....
# testlibraw
successfully got handle
current generation number: 1
1 card(s) found
  nodes on bus:  2, card name: ohci1394
using first card found: 2 nodes on bus, local ID is 0, IRM is 1

doing transactions with custom tag handler
trying to send read request to node 0... completed with value 0x12ca5815
trying to send read request to node 1... completed with value 0x2d075915

using standard tag handler and synchronous calls
trying to read from node 0... completed with value 0x8a285915
trying to read from node 1... completed with value 0x63435915

testing FCP monitoring on local node
got fcp command from node 0 of 8 bytes: 01 23 45 67 89 ab cd ef
got fcp response from node 0 of 8 bytes: 01 23 45 67 89 ab cd ef
testing config rom stuff
get_config_rom returned 0, romsize 120, rom_version 4
here are the first 10 quadlets:
0. quadlet: 0x61b40404
1. quadlet: 0x34393331
2. quadlet: 0x32a264e0
3. quadlet: 0x01264000
4. quadlet: 0x2e520206
5. quadlet: 0x9ee40400
6. quadlet: 0x26400003
7. quadlet: 0x03000081
8. quadlet: 0x090000d1
9. quadlet: 0xc083000c
update_config_rom returned 0

↓:dmesg

ieee1394: hpsb_update_config_rom() is deprecated
ieee1394: Failed to generate Configuration ROM image for host 0

gscanbus というツールがあるらしいが, CentOS5でビルドが通らない.


新規 編集 添付 名前変更 バックアップ   ホーム バックアップ リンク元   最終更新のRSS