'BTTV'에 해당되는 글 1건
- 2006/07/16 TV 카드 설치 (리눅스 데비안) (1)
- TV 카드 설치 (리눅스 데비안)
- CS&E/운영체제
- 2006/07/16 01:42
- BTTV, Linux Configuration, TV 카드 설치, 데비안 리눅스
한창 리눅스에 빠져있던 작년 여름에 썻던 글인데 간만에 가보니 아직도 있더라구요. 리눅스를 데탑으로 쓰는 것이 우분투라는 패키지가 나오면서 결코 먼산이 아닌 시대가 되었죠? 뭐 아직 리눅스라는 OS의 특징상 단일한 표준을 가지고 개발되지 않는 부분들이 존재하는 것 같아서 좀처럼 잘 안되는 부분도 있고, 제조업체에서 리눅스를 지원하지 않는 경우도 있지만요.
당시에 데비안으로 데탑을 거의 2달여간 썼었는데... 가장 힘들었던 것이 TV 수신 카드를 쓸 수 없다는 것이었습니다. 리눅스 생 초보가 커널 모듈 올려가면서, 잘 찾지도 못하겠는 관련 문서 뒤져가면서 이걸 해결했던 기억이 납니다.
덕분에 딱 TV 를 리눅스에서 보게되면서 아 이제 리눅으로 데탑을 써도 되겠구나 했던 기억이 납니다. 개학하면서 어쩔 수 없는 VC를 써야했기 때문에 포기했지만... -_-;; 왜 우리과에서는 오로지 MFC일까요? Qt, GTk도 뭐 딱히 나쁘지 않아보이는데... -_- 하여간 뭐 그랬습니다.
1 TV 카드 설치하기
저의 경우 리눅스를 이용해서 TV만 설치하면 리눅스만 쓰면서 컴퓨터를 쓸 수 있겠다는 일념으로 TV카드 설치에 노력했습니다.
그래서 이래저래 알아볼것도 많이 알아보았고, 많은 시행착오를 격었는데 저같은 시행착오를 격는 분이 적기를 바라는 마음으로 적습니다.
1.1 kernel module
2.6 커널이 도입되면서 흔히 쓰는 아날로그 TV카드의 칩인 bttv 계열의 모듈을 대부분의 배포판이 설치시 기본으로 잡기 때문에 크게 문제가 없습니다.
또한 최신의 bttv 모듈은 자동적으로 bttv 모듈이 올라가면서 tuner 모듈을 올리기 때문에 튜너모듈을 bttv와 따로 설정할 필요가 없습니다.
대신에 bttv 모듈에 옵션을 주어서 설정이 가능합니다.
이때 기본설치만으로는 모듈설정이 tv카드의 설정과 맞지않는 경우가 있기 때문에 약간의 조절이 필요합니다.
보통은 튜너 모듈이 안잡히는데 이는 auto detection 이 안되기 때문입니다.
상기의 명령어로 커널 모듈의 옵션을 지정해주는 파일을 만들어줍니다.
''kldp 를 찾아보니까 /etc/modprobe.conf 를 만들라고하는데 저의 경우에는 이렇게 만들경우 .conf 파일을 읽고 실제로 /etc/modprobe.d/에 있는 다른 장치에 대한 설정값을 읽지 않기때문에 alsa-base 가 올라오지 않는 문제가 있었습니다.
.conf로 만들기 위해서는 데비안에서 기본적으로 쓰는 파일을 분할해서 설정하는 방식이 아니라 한개의 파일에 모든 설정을 넣는 방법을 취해야 하기 때문에 후에 패키지 관리에서 문제가 발생할 소지가 많아 보입니다.''
그리고 다음의 문장을 입력합니다.
상기는 bttv 모듈의 설정값을 입력해주는 역할을 합니다.
bttv 모듈의 소스 헤더 파일에 존재하는데 다음과 같습니다. 다음 챕터에 첨부합니다.
값를 10진수로 변환하여 놓어주시면 됩니다.
자신의 TV카드의 칩을 모르는 경우에는 일일이 대입을 해보거나 TV카드 제조 업체에 문의를 하셔야합니다.
''저의경우는 onair-2를 사용하는데 0x2b(43)으로 설정을 하면 사운드가 나오질 않았습니다.
onair-2 사용자 분들은 참조하세요. 온에어의 경우 튜너값을 2(Philips NTSC)입니다.''
options bttv card=0 tuner=2 radio=1 # Onair 2의 설정, 자동 카드 설정, 라디오 지원, Philips NTSC 튜너
위와 같은 설정을 마치셨다면 reboot 명령으로 재부팅을 합니다.
재부팅을 한뒤 dmesg | grep bt 명령으로 커널 모듈이 재대로 올라왔는지 확인합니다.
bttv: driver version 0.9.15 loaded
bttv: using 8 buffers with 2080k (520 pages) each for capture
bttv: Bt8xx card found (0).
bttv0: Bt878 (rev 17) at 0000:02:06.0, irq: 209, latency: 32, mmio: 0xf4000000
bttv0: using: *** UNKNOWN/GENERIC *** [card=0,autodetected]
bttv0: gpio: en=00000000, out=00000000 in=00ffffff [init]
tveeprom(bttv internal): Huh, no eeprom present (err=-121)?
bttv0: using tuner=2
bttv0: i2c: checking for MSP34xx @ 0x80... found
bttv0: i2c: checking for TDA9875 @ 0xb0... not found
bttv0: i2c: checking for TDA7432 @ 0x8a... not found
bttv0: i2c: checking for TDA9887 @ 0x86... not found
tuner 2-0060: chip found @ 0xc0 (bt878 #0 [sw])
bttv0: registered device video0
bttv0: registered device vbi0
bttv0: registered device radio0
bt878: AUDIO driver version 0.0.0 loaded
bt878: Bt878 AUDIO function found (0).
bt878(0): Bt878 (rev 17) at 02:06.1, irq: 209, latency: 32, memory: 0xf4001000
상기의 보기에서
bttv0: using tuner=2
tuner 2-0060: chip found @ 0xc0 (bt878 #0 [sw])
이렇게 3가지를 확인하시면 됩니다.
만약 bttv 모듈은 올라왔는데 tuner 모듈이 올라오지 않았다면 TV는 나오지 않습니다.
tuner가 실질적으로 채널의 변경과 tv stream을 제어하는 모양입니다.
1.2 bttv 설정값 표
card_number
/* exported by bttv-cards.c */
#define BTTV_UNKNOWN 0x00
#define BTTV_MIRO 0x01
#define BTTV_HAUPPAUGE 0x02
#define BTTV_STB 0x03
#define BTTV_INTEL 0x04
#define BTTV_DIAMOND 0x05
#define BTTV_AVERMEDIA 0x06
#define BTTV_MATRIX_VISION 0x07
#define BTTV_FLYVIDEO 0x08
#define BTTV_TURBOTV 0x09
#define BTTV_HAUPPAUGE878 0x0a
#define BTTV_MIROPRO 0x0b
#define BTTV_ADSTECH_TV 0x0c
#define BTTV_AVERMEDIA98 0x0d
#define BTTV_VHX 0x0e
#define BTTV_ZOLTRIX 0x0f
#define BTTV_PIXVIEWPLAYTV 0x10
#define BTTV_WINVIEW_601 0x11
#define BTTV_AVEC_INTERCAP 0x12
#define BTTV_LIFE_FLYKIT 0x13
#define BTTV_CEI_RAFFLES 0x14
#define BTTV_CONFERENCETV 0x15
#define BTTV_PHOEBE_TVMAS 0x16
#define BTTV_MODTEC_205 0x17
#define BTTV_MAGICTVIEW061 0x18
#define BTTV_VOBIS_BOOSTAR 0x19
#define BTTV_HAUPPAUG_WCAM 0x1a
#define BTTV_MAXI 0x1b
#define BTTV_TERRATV 0x1c
#define BTTV_PXC200 0x1d
#define BTTV_FLYVIDEO_98 0x1e
#define BTTV_IPROTV 0x1f
#define BTTV_INTEL_C_S_PCI 0x20
#define BTTV_TERRATVALUE 0x21
#define BTTV_WINFAST2000 0x22
#define BTTV_CHRONOS_VS2 0x23
#define BTTV_TYPHOON_TVIEW 0x24
#define BTTV_PXELVWPLTVPRO 0x25
#define BTTV_MAGICTVIEW063 0x26
#define BTTV_PINNACLE 0x27
#define BTTV_STB2 0x28
#define BTTV_AVPHONE98 0x29
#define BTTV_PV951 0x2a
#define BTTV_ONAIR_TV 0x2b
#define BTTV_SIGMA_TVII_FM 0x2c
#define BTTV_MATRIX_VISION2 0x2d
#define BTTV_ZOLTRIX_GENIE 0x2e
#define BTTV_TERRATVRADIO 0x2f
#define BTTV_DYNALINK 0x30
#define BTTV_GVBCTV3PCI 0x31
#define BTTV_PXELVWPLTVPAK 0x32
#define BTTV_EAGLE 0x33
#define BTTV_PINNACLEPRO 0x34
#define BTTV_TVIEW_RDS_FM 0x35
#define BTTV_LIFETEC_9415 0x36
#define BTTV_BESTBUY_EASYTV 0x37
#define BTTV_FLYVIDEO_98FM 0x38
#define BTTV_GMV1 0x3d
#define BTTV_BESTBUY_EASYTV2 0x3e
#define BTTV_ATI_TVWONDER 0x3f
#define BTTV_ATI_TVWONDERVE 0x40
#define BTTV_FLYVIDEO2000 0x41
#define BTTV_TERRATVALUER 0x42
#define BTTV_GVBCTV4PCI 0x43
#define BTTV_VOODOOTV_FM 0x44
#define BTTV_AIMMS 0x45
#define BTTV_PV_BT878P_PLUS 0x46
#define BTTV_FLYVIDEO98EZ 0x47
#define BTTV_PV_BT878P_9B 0x48
#define BTTV_SENSORAY311 0x49
#define BTTV_RV605 0x4a
#define BTTV_WINDVR 0x4c
#define BTTV_GRANDTEC 0x4d
#define BTTV_KWORLD 0x4e
#define BTTV_HAUPPAUGEPVR 0x50
#define BTTV_GVBCTV5PCI 0x51
#define BTTV_OSPREY1x0 0x52
#define BTTV_OSPREY1x0_848 0x53
#define BTTV_OSPREY101_848 0x54
#define BTTV_OSPREY1x1 0x55
#define BTTV_OSPREY1x1_SVID 0x56
#define BTTV_OSPREY2xx 0x57
#define BTTV_OSPREY2x0_SVID 0x58
#define BTTV_OSPREY2x0 0x59
#define BTTV_OSPREY500 0x5a
#define BTTV_OSPREY540 0x5b
#define BTTV_OSPREY2000 0x5c
#define BTTV_IDS_EAGLE 0x5d
#define BTTV_PINNACLESAT 0x5e
#define BTTV_FORMAC_PROTV 0x5f
#define BTTV_EURESYS_PICOLO 0x61
#define BTTV_PV150 0x62
#define BTTV_AD_TVK503 0x63
#define BTTV_IVC200 0x66
#define BTTV_XGUARD 0x67
#define BTTV_NEBULA_DIGITV 0x68
#define BTTV_PV143 0x69
#define BTTV_IVC100 0x6e
#define BTTV_IVC120 0x6f
#define BTTV_PC_HDTV 0x70
#define BTTV_TWINHAN_DST 0x71
#define BTTV_WINFASTVC100 0x72
#define BTTV_SIMUS_GVC1100 0x74
#define BTTV_NGSTV_PLUS 0x75
#define BTTV_LMLBT4 0x76
...
tuner_number
#define TUNER_TEMIC_PAL 0 /* 4002 FH5 (3X 7756, 9483) */
#define TUNER_PHILIPS_PAL_I 1
#define TUNER_PHILIPS_NTSC 2
#define TUNER_PHILIPS_SECAM 3 /* you must actively select B/G, L, L` */
#define TUNER_ABSENT 4
#define TUNER_PHILIPS_PAL 5
#define TUNER_TEMIC_NTSC 6 /* 4032 FY5 (3X 7004, 9498, 9789) */
#define TUNER_TEMIC_PAL_I 7 /* 4062 FY5 (3X 8501, 9957) */
#define TUNER_TEMIC_4036FY5_NTSC 8 /* 4036 FY5 (3X 1223, 1981, 7686) */
#define TUNER_ALPS_TSBH1_NTSC 9
#define TUNER_ALPS_TSBE1_PAL 10
#define TUNER_ALPS_TSBB5_PAL_I 11
#define TUNER_ALPS_TSBE5_PAL 12
#define TUNER_ALPS_TSBC5_PAL 13
#define TUNER_TEMIC_4006FH5_PAL 14 /* 4006 FH5 (3X 9500, 9501, 7291) */
#define TUNER_ALPS_TSHC6_NTSC 15
#define TUNER_TEMIC_PAL_DK 16 /* 4016 FY5 (3X 1392, 1393) */
#define TUNER_PHILIPS_NTSC_M 17
#define TUNER_TEMIC_4066FY5_PAL_I 18 /* 4066 FY5 (3X 7032, 7035) */
#define TUNER_TEMIC_4006FN5_MULTI_PAL 19 /* B/G, I and D/K autodetected (3X 7595, 7606, 7657)*/
#define TUNER_TEMIC_4009FR5_PAL 20 /* incl. FM radio (3X 7607, 7488, 7711)*/
#define TUNER_TEMIC_4039FR5_NTSC 21 /* incl. FM radio (3X 7246, 7578, 7732)*/
#define TUNER_TEMIC_4046FM5 22 /* you must actively select B/G, D/K, I, L, L` ! (3X 7804, 7806, 8103, 8104)*/
#define TUNER_PHILIPS_PAL_DK 23
#define TUNER_PHILIPS_FQ1216ME 24 /* you must actively select B/G/D/K, I, L, L` */
#define TUNER_LG_PAL_I_FM 25
#define TUNER_LG_PAL_I 26
#define TUNER_LG_NTSC_FM 27
#define TUNER_LG_PAL_FM 28
#define TUNER_LG_PAL 29
#define TUNER_TEMIC_4009FN5_MULTI_PAL_FM 30 /* B/G, I and D/K autodetected (3X 8155, 8160, 8163)*/
#define TUNER_SHARP_2U5JF5540_NTSC 31
#define TUNER_Samsung_PAL_TCPM9091PD27 32
#define TUNER_MT2032 33
#define TUNER_TEMIC_4106FH5 34 /* 4106 FH5 (3X 7808, 7865)*/
#define TUNER_TEMIC_4012FY5 35 /* 4012 FY5 (3X 0971, 1099)*/
#define TUNER_TEMIC_4136FY5 36 /* 4136 FY5 (3X 7708, 7746)*/
#define TUNER_LG_PAL_NEW_TAPC 37
#define TUNER_PHILIPS_FM1216ME_MK3 38
#define TUNER_LG_NTSC_NEW_TAPC 39
#define TUNER_HITACHI_NTSC 40
#define TUNER_PHILIPS_PAL_MK 41
#define TUNER_PHILIPS_ATSC 42
#define TUNER_PHILIPS_FM1236_MK3 43
#define TUNER_PHILIPS_4IN1 44 /* ATI TV Wonder Pro - Conexant */
#define TUNER_MICROTUNE_4049FM5 45
...
1.3 tvtime
상기의 과정을 무사히 마쳤다면 tv를 보신다고 생각하셔도 좋습니다. -_-; 만약 안된다면 상당한 삽질을 하셔야할 듯합니다.
일단 정상적인 설치가 된 상황이라는 가정하에서 이야기 하도록 하겠습니다.
root@dandelion:~# apt-get tvtime
.
.
Gnome 환경으로 들어가서 프로그램 - 멀티미디어 - tvtime을 통해서 TV시청이 가능합니다.
ps. 기타 프로그램으로 xawtv, kdetv 이런것들이 있는데 tvtime이 요즘 추세로 보입니다.
2 FAQ
Q: 만약 배포판을 설치했는데 채널이 하나밖에 나오지 않습니다.
A: 다행입니다.
다행이 모듈은 올라간 생태입니다. 현재나오는 채널은 윈도우를 쓰시던 시절에 TV프로그램으로 튜너에
설정된 값을 기본으로 채널이 나오는 상황입니다.
튜너와 관련된 설정의 변경으로 정상적인 동작이 가능합니다.
TV카드 제조사에 문의셔서 튜너에 관한 정보를 얻으시고 상기의 표를 참조해서 설정을 해보시면 좋은 결과
있으실듯합니다.
Q tvtime 에서 볼륨 조절바가 움직이지 않고 설정파일을 만들었는데 그 때부터 gnome 세션이 뜨면 볼륨의 조절이 안됩니다.
A: 저의경우 /etc/modprobe.conf 로 설정을 했을 경우에 이런 현상이 발생하였습니다.
이 파일을 만들면 기본적으로 설정된 /etc/modprobe.d/ 내부에 존재하는 파일이 무시되어서 폴더안의 alsa에 관한 설정을
무시하고 넘기는 것으로 보입니다.
따라서 modprobe.conf 를 이용해서 설정하지 마시고 /etc/modprobe.d/bttv.modprobe 파일을 만들어서 설정하시면 좋은 결과
얻으실 수 있으실 듯합니다.





Recent comment