리눅스에서 스카이디지탈 USB TV수신기 사용하기

segfault의 이미지

스카이디지털의 SKY-TV USB는 USB 인터페이스를 이용한 휴대용 TV 수신기입니다. TV 뿐만 아니라 컴포지트와 S-Video 입력을 받을 수도 있습니다.

이 장치는 eMpia의 EM2861 칩셋을 사용하는데, 리눅스 커널 트리에 em28xx 드라이버가 있긴 하지만 아쉽게도 EM2840까지밖에 지원하지 못합니다. 다행히 mcentral.de의 Mercurial 저장소에 EM2880까지 지원하는 최신 드라이버가 있습니다.

hg clone http://mcentral.de/hg/~mrec/v4l-dvb-kernel/

하지만 이걸 그대로 사용할 수는 없습니다. 드라이버가 장치를 찾아내긴 하지만 엉뚱한 모델로 인식해버리기 때문입니다. 그래서 SKY-TV USB 장치를 제대로 인식할 수 있도록 패치를 만들어 보았습니다.
패치는 드라이버 메인테이너에게 보냈는데 아마 별 문제가 없다면 적용될 것입니다.

cd v4l-dvb-kernel
wget http://quicksilver.planetmono.org/works/em28xx-sky-tv-usb-patch.diff
patch -p1 > em28xx-sky-tv-usb-patch.diff
make
make install

참고로 이 드라이버를 컴파일하기 위해서는 커널 옵션에 I2C 지원을 추가해야 합니다.

Screenshot

댓글

litnsio2의 이미지


저도 같은 모델이 있거든요. 본체를 바꾸면서 OS도 바꿨는데, 비스타에서는
기존에 쓰던 TV카드가 작동이 안되었고 제조사측에서도 비스타용 드라이버 지원계획이
없다고 해서 요넘을 구입해서 쓰고있다가.. 우분투에서도 한번 써볼까 했는데...

참고로 이 드라이버를 컴파일하기 위해서는 커널 옵션에 I2C 지원을 추가해야 합니다.

-> I2C 지원은 따로 커널 컴파일을 해야합니까? 아님 부팅시에 옵션을 주어야하는지..? ^^a

지리즈의 이미지

그 부분은 신경 안쓰셔도 될 겁니다.

lsmod | grep i2c 로 확인하시면 됩니다.
제 기억이 맞다면, 캡쳐보드를 돌리려면 i2c-dev가 있어야 할 겁니다.
저는 gentoo인데, 전부 커널에 밖아 넣어 버려서... 확인 불가하네요.

그러나 어차피 위 본문 내용대로라면 커널을 재컴파일 하셔야 하니깐..
그때 옵션을 확인해 보시면 되겠군요. --;;

There is no spoon. Neo from the Matrix 1999.

There is no spoon. Neo from the Matrix 1999.

litnsio2의 이미지

일단 주말이 되기 전까지는 시간이 없을듯하니

주말에 시도해보고 막히면 다시 여쭤보겠습니다.~

litnsio2의 이미지

컴파일은 성공적으로 된듯하나.. 장치를 인식하지 못하는듯 하네요..;
tvtime을 설치해서 실행해봐도 파란화면만 나오고..-_-a

(그리고.. patch 하실때 꺽쇠방향이 반대가 아닌지..? ^.^a )

lsmod | i2c 하면

i2c_ec
i2c_core 이렇게 두개가 잡힙니다.

/dev/ 아래에 video로 시작하는 파일은 아무것도 없고요... -_-a
혹시 64비트 커널이라 그런 것일까요?

make install 시 메시지는 아래와 같습니다.

--------------------------------------------

thom@thomnote:~/v4l-dvb-kernel$ sudo make install

make -C /home/thom/v4l-dvb-kernel/v4l install

make[1]: Entering directory `/home/thom/v4l-dvb-kernel/v4l'

Stripping debug info from files

Installing kernel modules under /lib/modules/2.6.20-16-generic/kernel/drivers/media/:

dvb/dvb-usb/: dvb-usb-opera.ko dvb-usb-cxusb.ko dvb-usb-vp7045.ko

dvb-usb-af9005-remote.ko dvb-usb-ttusb2.ko dvb-usb-dib0700.ko

dvb-usb-a800.ko dvb-usb-gp8psk.ko dvb-usb-dibusb-common.ko

dvb-usb-au6610.ko dvb-usb-digitv.ko dvb-usb.ko

dvb-usb-dibusb-mc.ko dvb-usb-af9005.ko dvb-usb-nova-t-usb2.ko

dvb-usb-dtt200u.ko dvb-usb-vp702x.ko dvb-usb-umt-010.ko

dvb-usb-dibusb-mb.ko dvb-usb-gl861.ko dvb-usb-m920x.ko

dvb/ttpci/: dvb-ttpci.ko budget-patch.ko ttpci-eeprom.ko

budget-av.ko budget.ko budget-core.ko

budget-ci.ko

video/et61x251/: et61x251.ko

video/cpia2/: cpia2.ko

dvb/cinergyT2/: cinergyT2.ko

dvb/b2c2/: b2c2-flexcop-pci.ko b2c2-flexcop.ko b2c2-flexcop-usb.ko

video/ivtv/: ivtv.ko

dvb/frontends/: nxt6000.ko dib7000m.ko mt2060.ko

s5h1420.ko nxt200x.ko mt352.ko

tda827x.ko sp887x.ko dibx000_common.ko

isl6421.ko mt312.ko or51132.ko

dib3000mb.ko tda1004x.ko dib3000mc.ko

sp8870.ko l64781.ko dib7000p.ko

ves1x93.ko tda8083.ko ves1820.ko

stv0297.ko tda10086.ko cx22700.ko

zl10353.ko qt1010.ko cx24110.ko

stv0299.ko dvb-pll.ko lgdt330x.ko

cx24123.ko cx22702.ko lnbp21.ko

tda10023.ko tua6100.ko bcm3510.ko

tda10021.ko or51211.ko tda826x.ko

video/bt8xx/: bttv.ko

video/cx88/: cx8802.ko cx8800.ko cx88-blackbird.ko

cx88-alsa.ko cx88xx.ko cx88-vp3054-i2c.ko

cx88-dvb.ko

dvb/pluto2/: pluto2.ko

video/usbvideo/: ibmcam.ko usbvideo.ko vicam.ko

ultracam.ko konicawc.ko quickcam_messenger.ko

video/sn9c102/: sn9c102.ko

dvb/dvb-core/: dvb-core.ko

video/: vpx3220.ko bt856.ko upd64083.ko

stradis.ko tda9840.ko saa7191.ko

cx2341x.ko wm8775.ko w9968cf.ko

saa7185.ko tuner.ko zr364xx.ko

ks0127.ko stv680.ko tvaudio.ko

tea6420.ko bt866.ko cafe_ccic.ko

saa5246a.ko msp3400.ko video-buf.ko

zr36016.ko wm8739.ko dpc7146.ko

saa5249.ko cpia_pp.ko tda7432.ko

w9966.ko upd64031a.ko ir-kbd-i2c.ko

ov511.ko tuner-3036.ko tea6415c.ko

dabusb.ko bt819.ko cpia_usb.ko

videodev.ko zr36060.ko tda9875.ko

adv7175.ko mxb.ko video-buf-dvb.ko

vivi.ko cs53l32a.ko btcx-risc.ko

se401.ko saa7110.ko saa7115.ko

saa6588.ko saa7111.ko tvmixer.ko

v4l2-common.ko saa7114.ko hexium_orion.ko

hexium_gemini.ko tvp5150.ko adv7170.ko

videocodec.ko ov7670.ko saa7127.ko

zr36067.ko v4l1-compat.ko compat_ioctl32.ko

zr36050.ko c-qcam.ko tveeprom.ko

cpia.ko tlv320aic23b.ko bw-qcam.ko

video/usbvision/: usbvision.ko

common/: saa7146_vv.ko ir-common.ko saa7146.ko

tuners/: xc3028-tuner.ko

video/em28xx/: em2880-dvb.ko em28xx-audio.ko em28xx.ko

radio/: dsbr100.ko radio-maestro.ko radio-maxiradio.ko

radio-gemtek-pci.ko

video/pvrusb2/: pvrusb2.ko

dvb/bt8xx/: dst_ca.ko dvb-bt8xx.ko bt878.ko

dst.ko

video/cx25840/: cx25840.ko

dvb/ttusb-dec/: ttusbdecfe.ko ttusb_dec.ko

dvb/ttusb-budget/: dvb-ttusb-budget.ko

video/pwc/: pwc.ko

video/saa7134/: saa6752hs.ko saa7134-empress.ko saa7134-alsa.ko

saa7134-dvb.ko saa7134.ko

video/ovcamchip/: ovcamchip.ko

video/zc0301/: zc0301.ko

/sbin/depmod -a 2.6.20-16-generic

make[1]: Leaving directory `/home/thom/v4l-dvb-kernel/v4l'

thom@thomnote:~/v4l-dvb-kernel$

-------------------------------------------------------------------------------------

segfault의 이미지

tvp5150(ADC 모듈)과 em28xx 모듈을 로드하시고
dmesg 해서 나오는 메시지를 올려주실수 있으신가요?

----
http://www.planetmono.org

litnsio2의 이미지


대강 다음과 같은 메시지가 나오네요..
메시지를 보아하니 드라이버는 제대로 로드하는것 같은데. -_-a

----------------
[ 87.672438] Linux video capture interface: v2.00
[ 87.719950] em28xx v4l2 driver version 0.0.1 loaded
[ 87.720160] usbcore: registered new interface driver em28xx
[ 93.860580] usb 2-8: new high speed USB device using ehci_hcd and address 2
[ 93.905001] usb 2-8: configuration #1 chosen from 1 choice
[ 94.069370] usbcore: registered new interface driver snd-usb-audio
[ 105.499882] usb 2-8: USB disconnect, address 2

segfault의 이미지

이상하네요. 이런 메시지가 나와야 정상입니다.

usb 5-1: new high speed USB device using ehci_hcd and address 4
usb 5-1: configuration #1 chosen from 1 choice
em28xx new video device (eb1a:2861): interface 0, class 255
em28xx: device is attached to a USB 2.0 bus
em28xx: you're using the experimental/unstable tree from mcentral.de
em28xx: there's also a stable tree available but which is limited to
em28xx: linux <=2.6.19.2
em28xx: it's fine to use this driver but keep in mind that it will move
em28xx: to http://mcentral.de/hg/~mrec/v4l-dvb-kernel as soon as it's
em28xx: proved to be stable
em28xx #0: Alternate settings: 8
em28xx #0: Alternate setting 0, max size= 0
em28xx #0: Alternate setting 1, max size= 0
em28xx #0: Alternate setting 2, max size= 1448
em28xx #0: Alternate setting 3, max size= 2048
em28xx #0: Alternate setting 4, max size= 2304
em28xx #0: Alternate setting 5, max size= 2580
em28xx #0: Alternate setting 6, max size= 2892
em28xx #0: Alternate setting 7, max size= 3072
attach_inform: eeprom detected.
em28xx #0: i2c eeprom 00: 1a eb 67 95 1a eb 61 28 50 00 ff 03 6a 24 00 00
em28xx #0: i2c eeprom 10: 00 00 04 57 4e 03 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom 20: 06 00 01 01 f0 10 02 00 b8 00 00 00 5b 00 00 00
em28xx #0: i2c eeprom 30: 00 00 20 40 20 80 02 20 01 01 00 00 00 00 00 00
em28xx #0: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 24 03 53 00 4b 00
em28xx #0: i2c eeprom 70: 59 00 20 00 55 00 53 00 42 00 20 00 54 00 56 00
em28xx #0: i2c eeprom 80: 28 00 32 00 38 00 36 00 31 00 29 00 00 00 00 00
em28xx #0: i2c eeprom 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c4
EEPROM ID= 0x9567eb1a
Vendor/Product ID= eb1a:2861
AC97 audio (5 sample rates)
500mA max power
Table at 0x04, strings=0x246a, 0x0000, 0x0000
em28xx #0: V4L2 device registered as /dev/video1
em28xx #0: Found SKY-TV USB

혹시 리눅스 소스트리에 있는 em28xx 드라이버를 설치하신게 아닌가요?

----
http://www.planetmono.org

litnsio2의 이미지


제일 처음에 알려주신 방법대로 설치하였습니다.

아아.. 왜이러지..ㅠㅠ

아무튼 감사합니다.~

lucia의 이미지

참고로 제꺼는 vendor:product가 eb1a:04bb 더군요.
오래된 글이지만, 검색을 통해 오신분을 위해 참고글 남깁니다.

zerofly의 이미지


다른 저장소주소나 tarball주소 아시는분계시는지요??

///
hg clone http://mcentral.de/hg/~mrec/v4l-dvb-kernel/
destination directory: v4l-dvb-kernel
abort: error: Operation timed out

litnsio2의 이미지

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

이곳인듯 한데요. 소스구조가 많이 바뀌었는지 segfault 님의 patch를 소스에 적용할 수가 없네요;;

제 나름 소스를 수정해서 빌드를 해보고 모듈을 올리려고 해 보니 다음과 같은 메시지가 나옵니다.
아무래도 파라메터값을 제대로 주지 못해서인 듯 싶은데.. 후우.. ㅠㅠ

------------
bluedawn@bluedawn:~/tmp2/v4l-dvb-kernel$ sudo modprobe em28xx
[sudo] password for bluedawn:
FATAL: Error inserting em28xx (/lib/modules/2.6.27-7-generic/kernel/drivers/media/video/em28xx/em28xx.ko): Unknown symbol in module, or unknown parameter (see dmesg)
bluedawn@bluedawn:~/tmp2/v4l-dvb-kernel$
--------------

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.