· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Docbook Sgml/BTTV

The BTTV Mini-HOWTO

The BTTV Mini-HOWTO

Eric Sandeeneric

이승렬

v0.3, February 2000

이 문서는 리눅스에서 bt8x8 칩셋 기반의 프레임 캡쳐 카드나 TV튜너를 사용하는데 필요한 하드웨어, 소프트웨어와 그 절차를 설명한다.

고친 과정
고침 0.3.12002-01-21고친이 이 승렬
최초 번역
고침 0.3.22002-02-05고친이 이 승렬
링크 버그 수정

1. 소개

비디오 입력을 캡쳐하고 보여주는 기능은 리눅스의 좀더 흥미있는 멀티미디어 기능중에 하나다. Conexant사의 bt848과 bt878 칩셋 기반의 서로다른 TV튜너 카드들을 포함해서 많은 다른 타입의 비디오 캡쳐 디바이스가 video4linux API (http://roadrunner.swansea.uk.linux.org/v4l.shtml) 에 의해 지원된다. 이 문서는 리눅스에서 이러한 카드들을 사용하는 방법을 설명한다.


1.1. 이 문서의 저작권

This HOWTO is copyrighted 1999 Eric Sandeen.

Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.

All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO co-ordinator at the address given below.

In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs.

If you have questions, please contact Tim Bynum, the Linux HOWTO co-ordinator, at linux-howto@metalab.unc.edu via email.


1.2. 이 문서를 구할 수 있는 곳

이 문서의 좀더 최신의 공식 버전은 리눅스 문서 프로젝트 Linux Documentation Project http://metalab.unc.edu/LDP/에서 구할 수 있다.


1.3. 감사의 말

초기의 오리지널 bttv 드라이버를 작성한 Ralph Metzler와 Marcus Metzler에 감사한다. 또한, Video4Linux API를 만든 Alan Cox, 라디오 카드, 이후의 bttv 릴리즈와 xawtv 프로그램의 작업을 한 Gerd Knorr에게 감사한다. 그리고, 리눅스에서 이러한 카드들의 지원을 위해 힘쓴 다른 모든 이들에게도 감사한다. William Burrow에게 감사한다. 그도 또한 BTTV Howto를 썼다.(나는 이 문서를 쓴 후에 알았다) 내가 이 문서를 발전 시키는데 그의 작업에 감사한다.

이 HOWTO를 쓰는데 bttv와 xawtv 문서를 많이 참고했다.


1.4. 책임의 한계

Use the information in this document at your own risk. I disavow any potential liability for the contents of this document. Use of the concepts, examples, and/or other content of this document is entirely at your own risk.

All copyrights are owned by their owners, unless specifically noted otherwise. Use of a term in this document should not be regarded as affecting the validity of any trademark or service mark.

Naming of particular products or brands should not be seen as endorsements. You are strongly recommended to take a backup of your system before major installation and backups at regular intervals.


2. 하드웨어 요구사항

bttv의 README에서:

Bttv는 Conexant사 (http://www.conexant.com)의 Bt848 계열의 비디오 디코더 칩을 사용하는 프레임 캡쳐 카드를 위한 디바이스 드라이버다. 이러한 칩들로는 Bt848, Bt848A, Bt849, Bt878 과 Bt879가 있다. 서로 다른 제조사의 카드들 사이의 중요한 차이는 튜너의 타입과 보드에 있는 다른 구성요소들 뿐이다. 예를들어, Hauppauge사의 몇몇 카드는 부가적인 비디오 텍스트 디코더와/또는 사운드 디코더 칩을 가지고 있다. 이러한 부가적인 구성요소들 중 일부는 bttv에 의해서만 지원된다. 또한, 입력의 형태(복합 or S-Video)와 그 수에서 차이가 있을 수 있다.

아래의 카드들에서 작동한다:

여러분이 작동하는 또다른 카드를 알고 있다면, 나에게 메일을 보내달라. 그러면 내가 이 문서의 다음 버전에 그 카드를 추가할 것이다.


3. 소프트웨어 요구사항

리눅스에서 TV튜너 카드를 사용하려면, 그에 맞는 커널 드라이버가 필요할 것이다. bttv 드라이버는 커널 버전 2.2.0 이후로 커널의 한 부분으로 배포된다.

아니면, 드라이버 패키지의 최신 버전을 구해서 2.0.35 이후 버전의 커널과 함께 사용할 수도 있다. 그러나, 2.0.x 버전대의 오래된 커널에서도 작동된다는 보증은 하지 못한다. 업데이트된 bttv 패키지는 http://www.thp.uni-koeln.de/~rjkm/linux/bttv.html에서 구할 수 있고, 좀더 업데이트된 버전은 Gerd Knorr의 http://www.in-berlin.de/User/kraxel/xawtv.html에서 구할 수 있다. 이러한 패키지들은 TEA6300, TDA8425와 DPL3518을 포함하여 더 많은 오디오 칩들을 추가로 지원한다.

여러분이 bttv 드라이버의 세계에 처음 들어선다면, 최신 커널에 포함된 버전으로 시작하길 권한다. 그것으로 문제가 생기거나 여러분의 카드가 지원되지 않는다면, 위에 링크한 위치에서 업데이트된 0.6 버전대의 드라이버를 사용하는 모험을 해보라. 여러분이 정말로 모험을 좋아한다면, 2.4 버전의 커널에 포함될 예정인 Gerd Knorr의 0.7 버전대 드라이버를 사용해 보라. 0.7 버전대 드라이버는 http://www.in-berlin.de/User/kraxel/xawtv.html에서도 구할 수 있다.

이 문서는 대부분 2.2.14 커널 드라이버에 기초하고 있으며, 업데이트된 0.6 버전대 드라이버 패키지에서 가능한 기능들에 대해서도 약간의 언급을 한다. 이 글을 쓰는 동안 0.7 버전대의 드라이버는 한창 개발단계에 있기 때문에 지금은 다루지 않는다.


4. 시스템 설정

4.1. 하드웨어 설치

(이 섹션에 대해 William Burrow에게 감사드린다.)

여러분이 컴퓨터 케이스를 여는것에 자신이 없다면, 먼저 이 HOWTO 문서 전체를 확실히 읽고 카드의 튜너 타입, 집적회로 번호, 검파기 주파수와 같은 카드에 대한 노트를 만들어라. 그리고 나서, 여러분을 위해 카드를 설치해 줄 유능한 사람을 구하라.

그렇지 않으면, 케이스를 열고 비어있는 슬롯에 카드를 설치하라. 여러분의 메인보드가 PCI버스 전송과 PCI버스 마스터링에 대해(메인보드 메뉴얼을 보라) 까다롭다면, 그러한 기능이 지원되는 슬롯을 하나 신중히 선택하라. 오버레이 모드를 위해 이것이 필요할 것이다.

소리를 듣기위해, 여러분의 비디오 캡쳐 카드와 사운드 카드를 연결하는 서로다른 두가지 방법이 있다. 한가지 방법은 내부적인 연결이다. CD-ROM의 오디오 케이블을 비디오 캡쳐 카드의 사운드 입력 단자에 연결하고 비디오 캡쳐 카드의 출력을 사운드 카드의 CD-ROM이나 튜너의 오디오 입력 단자에 연결하라. 다른 방법은 외부 1/8'' 오디오 잭을 비디오 캡쳐 카드에서 오디오 카드의 1/8'' 라인 오디오로 연결하는 것이다. 오디오 카드가 없거나 사운드 카드를 통한 연결을 원하지 않는다면, 캡쳐 카드의 오디오 출력 단자에 증폭 스피커만을 연결할 수 있다.(신형 bt878 카드의 일부는 디지털 오디오 데이터를 PCI버스를 통해 전송하기 때문에 어떤 사운드 커넥터도 갖고있지 않다. 이 글을 쓰는 시점에서 이러한 카드에 대한 지원은 없다.)

비디오 소스는 특히 카드가 작동중인지 아닌지를 확인하는데 유용하다. 많은 카드들이 복합 비디오 입력, S-비디오 입력 그리고 튜너 장착하고 있다면 RF 입력들을 다룬다. 이러한 입력들을 위한 커넥터가 각각 따로 존재한다.


4.2. 커널 설정

여러분의 카드를 지원하기 위해서 커널은 정확하게 설정되어야 한다. 최근의 리눅스 배포본 대부분은 필요한 모듈들이 미리 컴파일되어 있다. 그래서, 여러분이 /lib/modules/2.x.x/misc에서 videodev.o, bttv.otuner.o를 찾을 수 있다면 계속 진행할 준비가 된 것이다.

그렇지 않다면,

CONFIG_VIDEO_DEV

CONFIG_VIDEO_BT848

옵션을 가능하면 모듈로 선택해서 커널을 재컴파일 해야한다. 커널 재컴파일에 관한 자세한 사항은 리눅스 커널 HOWTO (http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html)를 보라.


4.3. 업데이트된 0.6.x 패키지 사용하기

업데이트된 0.6.x 패키지를 사용하려면, 면저 위에 언급한 싸이트에서 드라이버를 받아와야 한다. 받아온 드라이버를

tar -xvzf bttv-0.6.x.tar.gz

로 압축을 풀고 압축을 풀어서 생긴 디렉토리로 이동하라. su 명령어고 root 권한을 획득하고, 드라이버를 만들기 위해 주 디렉토리에서

make

라는 커맨드를 입력한다. INSTALL 파일은 드라이버에게 필요한 정보를 make 파일에서 수정하는 방법을 설명하고 있다. 하지만, 우리는 그러한 정보를 모듈 파라메터를 사용해서 드라이버로 넘길 것이기 때문에 여러분은 안전하게 INSTALL 파일의 내용을 무시할 수 있다.) 그리고 나서,

make install

로 드라이버를 설치한다. 마지막으로,

/sbin/depmod -a

로 모듈의 의존성 정보를 업데이트 한다.


4.4. /dev 디렉토리의 특수 파일들

다음으로, /dev 디렉토리에 특수 캐릭터 파일을 만들어야 한다. 이러한 디바이스들이 이미 존재하는지 확인하기 위해 ls /dev/video*; ls /dev/radio* 커맨드를 입력한다. 존재하지 않는다면 그것들을 만들어야 한다. 이 파일들은 모두 주 장치 번호가 81이고, 부 장치 번호는 이러한 파일들의 다중 인스턴스 뿐만 아니라 특정 장치 (비디오, 라디오 등등)에 따라 다르다. 프로그래밍에 관한 자세한 사항은 Video4Linux API (http://roadrunner.swansea.uk.linux.org/v4lapi.shtml) 를 보라.

bttv 드라이버 패키지의 driver 디렉토리에는 네개의 비디오 디바이스 파일을 만들어 줄 MAKEDEV 스크립트가 있다. 또한, 한개의 비디오 캡쳐 카드만을 가지고 있다면 여러분 스스로도 꽤 쉽게 만들 수 있다. root로 다음의 커맨드를 입력하라:

mknod /dev/video0 c 81 0

chmod 666 /dev/video0

ln -s /dev/video0 /dev/video

mknod /dev/radio0 c 81 64

chmod 666 /dev/radio0

ln -s /dev/radio0 /dev/radio

또한, 여러분이 비디오 텍스트와 VBI 디바이스를 필요로 하는 어플리케이션 (현재, 극히 일부가 있다)을 가지고 있다면, 다음과 같이 디바이스 파일을 만들 수 있다:

mknod /dev/vtx0 c 81 192

chmod 666 /dev/vtx0

ln -s /dev/vtx0 /dev/vtx

mknod /dev/vbi0 c 81 224

chmod 666 /dev/vbi0

ln -s /dev/vbi0 /dev/vbi


4.5. 모듈 로딩

bttv 드라이버는 많은 다른 모듈과 이 문서의 부록에서 설명한 많은 다른 옵션을 제공한다. 많은 모듈과 옵션이 있기 때문에, 모든것이 작동할 때까지 수동으로 이 작업을 해야한다. 컴퓨터가 다운되거나 하는 일은 거의 없겠지만, 모듈을 로딩하기 전에 아래와 같이 dirty(미처 디스크에 저장되지 않고 버퍼에 남아있는 데이터) 디스크 버퍼를 강제로 저장하면 시스템이 손상되는 일은 없을 것이다.

sync; sleep 1; sync

그리고 나서, root로 insmod 커맨드를 사용해 모듈 로딩을 시도하라. 처음 두개의 모듈은 대부분 어떤 옵션도 필요치 않으므로 로딩이 쉽다:

insmod videodev

insmod i2c

이제 bttv 모듈을 로드할 준비가 된것이다:

modprobe bttv

디폴트로, bttv 모듈은 카드 타입을 자동으로 알아내려 한다. 어떤 것으로 인식했는지 확인하기 위해 /var/log/messages를 보라. 모듈이 여러분의 카드를 바르게 인식하지 못했다면, 카드 타입을 강제로 지정하기 위해 위의 커맨드 끝에 card=n 옵션을 추가할 수 있다. 여기서 n 은 아래의 목록에서 선택할 수 있다. (커널에 포함된 드라이버는 타입 0에서 19까지 지원하고, bttv-0.6.4h는 20에서 27번까지도 지원한다) 또한, 여러분의 카드에 FM 튜너 기능이 있다면 radio=1 옵션을 추가할 수 있다.

card=n		card type
		0:  Auto-Detect
		1:  Miro
		2:  Hauppauge (구형 bt848 보드)
		3:  STB
		4:  Intel
		5:  Diamond
		6:  AVerMedia
		7:  MATRIX Vision MV-Delta
		8:  FlyVideo
		9:  TurboTV
		10: Hauppauge (신형 bt878 보드)
		11: MIRO PCTV pro
		12: Terratec/Vobis TV-Boostar
		13: Newer Hauppauge WinCam (bt878)
		14: MAXI TV Video PCI2
		15: Terratec TerraTV+
		16: Aimslab VHX
		17: PXC200
		18: AVermedia98
		19: FlyVideo98 (FlyVideo 카드보다 좀더 신형이다)
		20: Zoltrix TV-Max
		21: iProTV
		22: ADS Technologies Channel Surfer TV
		23: Pixelview PlayTV (bt878)
		24: Leadtek WinView 601
		25: AVEC Intercapture
		26: LifeView FlyKit w/o Tuner
		27: Intel Create and Share PCI

다음으로, 아래와 같이 튜너 모듈을 로드한다.

modprobe tuner type=n

여러분은 아마도 튜너를 확인하기 위해 케이스를 열어야 할 지도 모른다. 일부 카드들은 (Miro와 Hauppauge) 튜너 타입을 자동으로 알아낼 수 있다. 그러나, 여러분은 튜너 타입을 지정해야 할 것이다. 튜너에는 상표(브랜드)명이 표기되어 있으며, 여러분이 NTSC나 PAL 튜너를 가지고 있다면 보드의 검파기(작은 알루미늄 캔)에서 이것을 확인할 수 있다. PAL 타입 튜너의 검파기는 28.xxxMHz (xxx는 세자리 숫자)이 표기되어 있다. NTSC 타입 튜너의 작은 상자에는 35.xxxMHz이 적혀있을 것이다. 튜너 타입을 알고 있다면, 아래의 목록(타입 8과 9는 bttv-0.6.4h 에만 있다)에서 n 값을 선택하라:

type=n		type of the tuner chip. n as follows:
		0: Temic PAL tuner
		1: Philips PAL_I tuner
		2: Philips NTSC tuner
		3: Philips SECAM tuner
		4: no tuner
		5: Philips PAL tuner
		6: Temic NTSC tuner
		7: Temic PAL tuner
		8: Alps TSBH1 NTSC tuner
		9: Alps TSBE1 PAL tuner

마지막으로, 여러분에게 필요한 사운드 모듈을 로드하라. 아마도 또다시 여러분이 가지고 있는 카드가 무엇인지 매우 가까이서 확인해야 할 필요가 있을 것이다. TEA6300, TDA8425, TDA9855와 DPL3518 칩의 드라이버는 0.6.4h 시리즈의 드라이버에만 포함되어 있고 현재 커널(2.2.14) 드라이버에는 포함되어 있지 않음을 명심하라.

modprobe msp3400tea3600tda8425tda9855dpl3518 (자세한 내용과 옵션은 부록을 보라)

좋아하는 video4linux 프로그램을 실행해서 잘 작동하는지 확인하라. 채널을 변경할 수 없다면, 알맞은 튜너 모듈을 로딩하라. 아무 소리도 들을 수 없다면, 다음의 두가지를 점검하라. 사운드 모듈의 확인과 사운드 카드를 통해 소리를 듣는다면, 채널의 볼륨이 작게되어 있지는 않은지를 확인한다.


4.6. 작업 자동화 하기

여러분에게 필요한 모듈과 옵션을 알았으면, /etc/conf.modules 파일에 그러한 정보를 기록해서 모듈 로딩 작업을 자동화 할 수 있다. 그렇게 하면, 그 드라이버를 필요로 하는 어플리케이션이 실행될 때, 자동으로 모듈이 로딩될 것이다. 필자는 다음과 같이 사용한다:

# TV
alias	char-major-81	bttv
pre-install bttv	modprobe -k tuner; modprobe -k msp3400
options	bttv		radio=1 card=3
options tuner		type=2
물론, 여러분의 카드에 맞는 모듈과 옵션을 적용하기 위해 위의 얘를 수정해야 할 것이다. (또한, /sbin/depmod -a 로 모듈 의존성 정보도 갱신하라)


5. 응용 프로그램

커널이 설정되었고, 장치들이 설정되었으며, 모듈도 로드되었다. 이제, 여러분은 실제로 여러분의 카드로 부터 이미지를 보여주거나 캡쳐하는 응용 프로그램이 필요할 것이다. 이런 응용 프로그램들은 여러가지가 있다:

또한, FlyVideo98 리모컨 카드를 위한 드라이버도 있다. http://wolf.ifj.edu.pl/~jochym/FlyVideo98/

여러분이 사용하려는 응용 프로그램의 문서를 반드시 읽어라. 많은 프로그램들이 실행하기 전에 바르게 수정된 자세한 설정파일을 필요로 한다. 다양한 종류의 카드들이 있기 때문에, 여러분의 카드에서 프로그램이 디폴트 설정으로는 십중팔구 작동하지 않을 것이다. 따라서, 프로그램에 있는 문서를 읽는데 반드시 시간을 할애해야 한다.


6. 부록 - 모든 모듈들의 옵션

앞에 "*"가 붙은 것들은 버전 0.6.4h 시리즈의 드라이버에서만 쓸수 있다.


videodev.o
	this is the basic video4linux module, all video 
	drivers (incl. bttv) register themselves here.

i2c.o
	the generic i2c module. It does much of the i2c bus
	management, all other modules (except videodev.o)
	use this one

	insmod args:
		scan=1		scan the bus for i2c devices
		verbose=0	shut up i2c
		i2c_debug=1	for debugging, it sticks the 
				whole (software) i2c bus 
				traffic to the syslog

bttv.o
	the bt848 (grabber chip) driver

	insmod args:
		remap=adr       remap Bt848 memory to adr<<20		
		vidmem=base	frame buffer address>>20 (of graphic card)
		triton1=0/1     for Triton1 compatibility
                                Triton1 is automatically recognized
                                but this might also help with other chipsets
		pll=0/1/2	pll settings
				0: don't use PLL
				1: 28 MHz crystal installed
				2: 35 MHz crystal installed
		radio=0/1	card supports radio
		card=n		card type
				0:  Auto-Detect
				1:  Miro
				2:  Hauppauge (old bt848 boards)
				3:  STB
				4:  Intel
				5:  Diamond
				6:  AVerMedia
				7:  MATRIX Vision MV-Delta
				8:  FlyVideo
				9:  TurboTV
 				10: Hauppauge (new bt878 boards)
				11: MIRO PCTV pro
				12: Terratec/Vobis TV-Boostar
				13: Newer Hauppauge WinCam (bt878)
				14: MAXI TV Video PCI2
				15: Terratec TerraTV+
				16: Aimslab VHX
				17: PXC200
				18: AVermedia98
				19: FlyVideo98 (newer FlyVideo cards)
				*20: Zoltrix TV-Max
				*21: iProTV
				*22: ADS Technologies Channel Surfer TV
				*23: Pixelview PlayTV (bt878)
				*24: Leadtek WinView 601
				*25: AVEC Intercapture
				*26: LifeView FlyKit w/o Tuner
				*27: Intel Create and Share PCI

	remap, card, radio and pll accept up to four comma-separted arguments
	(for multiple boards).  The CARD and PLL defines from the Makefile
	are used as defaults.

msp3400.o
	The driver for the msp34xx sound processor chips. If you have a
	stereo card, you probably want to insmod this one.

	insmod args:
		debug=1/2	print some debug info to the syslog,
				2 is more verbose.

*tea6300.o
	The driver for the tea6300 fader chip.  If you have a stereo
	card and the msp3400.o doesn't work, you might want to try this
	one.  This chip is seen on most STB TV/FM cards (usually from
	Gateway OEM sold surplus on auction sites).

	insmod args:
		debug=1		print some debug info to the syslog.

*tda8425.o
	The driver for the tda8425 fader chip.  This driver used to be
	part of bttv.c, so if your sound used to work but does not
	anymore, try loading this module.

	insmod args:
		debug=1		print some debug info to the syslog.

*tda9855.o
	The driver for the tda9855 stereo decoder / audio processor chip.
	
	insmod args:
		debug=1		print some debug info to the syslog.

*dpl3518.o
	Driver for the dpl3518a Dolby Pro Logic Processor
	
	insmod args:
		debug=1		print some debug info to the syslog.

tuner.o
	The tuner driver.  You need this unless you want to use only
	with a camera or external tuner ...

	insmod args:
		debug=1		print some debug info to the syslog
		type=n		type of the tuner chip. n as follows:
				0: Temic PAL tuner
				1: Philips PAL_I tuner
				2: Philips NTSC tuner
				3: Philips SECAM tuner
				4: no tuner
				5: Philips PAL tuner
				6: Temic NTSC tuner
				7: Temic PAL tuner
				*8: Alps TSBH1 NTSC tuner
				*9: Alps TSBE1 PAL tuner

i2c_chardev.o
	provides a character device for i2c bus access.  Works for 2.1.x
	only, not compiled by default.




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-08-10 11:52:29
Processing time 0.0028 sec