본문 바로가기

이것저것

우분투+TVheadend+Hauppauge WinTV-dualHD 서버구축

몇주간의 삽질 끝에 우분투에 tvheadend와 Hauppauge  WinTV-dualHD 수신카드로 서버를 구축했습니다.

tvheadend 같은경우 인터넷에 설치방법이 여러가지가 있는데 어딜보고 설치 했는지 모르겠는데 명령어로 설치를 했고 최신버젼인 4.3으로 설치가 되었습니다.

epg연동은 유명한 자료인 https://github.com/wonipapa/epg2xml 를 활용했구요. IPTV용으로 만드셨지만 수신카드도 사용하기에 지장은 없었습니다. 다만 지역케이블방송에서 전송하는 채널이랑 다른관계로 자동으로 채널이랑 매칭이 안되는게 대부분입니다. 수동으로 선택해주어야 합니다. 내부XML방법은 여러차례 시도했지만 되지 않아서 외부XML방법으로 설정했고 crontab에 매일 한번 업데이트 되도록 설정했습니다.


수신카드 채널검색시에는 tvheadend의 DVB input - 네트워크 탭에서 ATSC-T로 하고 채널주파수 묶음 고를때 기본적으로 미국 ATSC-center로 시작하는걸 고르는게 맞습니다만 이렇게 하면 채널이 제대로 안잡히는경우가 많습니다. 저는 이미 윈도우에서 사용하다 넘어온것이므로 채널수가 대략 몇개쯤 잡히는지 알고 있기 때문이죠.

이게 미국과 한국이 원래 동일한 ATSC를 사용하지만 (이러한 이유로 TV직구가 유행했었죠) 주파수대역이 다르기 때문에 이러한 상황이 발생합니다. 따로 네이버카페 (http://cafe.naver.com/mk802) 여기서 미리 수정된 설정파일을 받아 /usr/share/tvheadend/data/dvb-scan/atsc/ 여기에 넣어주었습니다. 8VSB전환이 완료된 지역이라 약 130개의 채널이 잡혔습니다. (물론 일부는 SD채널이며 대역폭 부족으로 비트레이트가 낮은 채널도 많다는점)

tvheadend주소:9981/playlist 로 들어가시면 재생목록 형태의 m3u파일을 다운로드 하실수 있습니다.


이 서버를 구축하는데 제일큰 걸림돌이 있었고 몇주동안 애를 먹게 만든게 바로 수신카드를 리눅스에 인식 시키는 거였는데요. 리눅스 자격증이 있지만 실제론 아무것도 모르기 때문에 리눅스에서 인식될거란 정보만 대충 찾아보고 NAS를 구축 했는데요. (어차피 수신카드는 원래사용중이었고) 정보를 수집해보니

https://www.linuxtv.org/wiki/index.php/Hauppauge_WinTV-dualHD 이곳에 잘 정리 되어있습니다.

다만 정리가 되어있어도 떠먹여 주는데 먹지를 못했던거죠. 일단 결론만 말하면 2개튜너 모두 인식되고 잘 작동합니다.










기본적으로 리눅스 커널 4.11 이상으로 설치하시면 1개의 튜너는 나타나구요.

저는 우분투 16.04 LTS버젼 입니다만 인터넷에 존재하는 sudo apt-get install linux-image-generic-lts-saucy

 같은 명령어로는 4.10.8까지 밖에 안 올라가더군요. (여기까지만 3일넘게 걸렸습니다. 정확히 버젼보는 방법도 몰랐습니다.)

그 다음으로 http://kernel.ubuntu.com/~kernel-ppa/mainline/ 에서 파일을 받아 패키지로 설치하는방법 (거의 최신버젼까지 업데이트 가능합니다) 참고-http://ubuntuhandbook.org/index.php/2017/02/install-kernel-4-10-ubuntu-linux-mint/

제일 쉬운방법은 우분투 소프트웨어 센터에서 ukuu 검색하셔서 설치하시면 GUI형태로 설치하실수 있고 원터치로 설치가능합니다.

다만 사람이 사람인지라 2개튜너 제품을 사용하는데 1개만 사용하니 매우 아쉽더군요.

해당 튜너에 대한 정보를 열심히 구글링해보니 제조사인 하퍼지쪽 엔지니어도 메인커널에 정식적으로 올리려고 하고 있다고 적혀 있는게 꽤 오래됬는데 최신커널으로 설치해봤지만 튜너 지원은 1개밖에 하지 못했습니다.


어쩔수 없이 비공식으로 만든 패치를 적용해야되는데 이 패치를 적용할줄 몰라서 이것만 몇일을 공부하고 적용하지만 또 오류가 막나더군요. 그렇게 몇일이 또 흐르고 가만보니 패치라는 개념이 그냥 파일과 파일을 비교해서 다른부분을 수정해주는 개념이더군요. 그래서 텍스트에디터로 열어서 해당경로를 찾아가보니 파일이 없습니다.

알고보니 이건 당연한거죠. 위에서 커널을 업데이트 하는개념은 이미 컴파일된 커널을 사용하지만 패치는 컴파일 되지 않은 파일에 해야되더군요. 저도 프로그래밍 공부한 사람이지만 아무생각이 없어서,,, 결국 make 명령으로 한다는것과 여기저기 또 공부를 해서 3주만에 패치와 컴파일에 성공합니다.

대략적으로 커널이 공식적으로 가장먼저 올라오는 https://www.kernel.org/ 가셔서 커널 파일을 받구요. 적용하고자 하는 버젼으로 받으셔야 합니다. 해당 패치에 대한정보는 구글링이나 위에서 언급한 linuxtv링크에도 있습니다. 일단 커널 4.2.5버젼 용으로 된것도 설치해본결과 잘 작동하구요. 4.11버젼 이후로 적용되는 패치는 링크가 연결이 안되는데 https://github.com/b-rad-NDi/Ubuntu-media-tree-kernel-builder/tree/master/patches/ 여기 들어가셔서 mainline-extra/4.10.0/0001-em28xx-Hauppauge-DualHD-DVB-ATSC-second-tuner-suppor.patch 파일 찾으시면 됩니다.

구글에 찾아보면 라즈베리파이 사용하시는분들 위주로 토론이 많은데 위에 패치 말고 다른 패치 5개정도를 같이 적용해야 한다고 있던데 위에 1개파일만 적용해도 작동에 지장이 없더군요.

여튼 패치 적용하신후 커널 컴파일 하셔서 재부팅 하시면 아래와 같이 두개의 튜너가 잘나타납니다.


아마 추후에 업데이트되는 커널은 기본적으로 듀얼튜너를 지원할것으로 예상이 됩니다.