요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
.. SPDX-License-Identifier: GPL-2.0
FAQ
===
.. note::
1. With Digital TV, a single physical channel may have different
contents inside it. The specs call each one as a *service*.
This is what a TV user would call "channel". So, in order to
avoid confusion, we're calling *transponders* as the physical
channel on this FAQ, and *services* for the logical channel.
2. The LinuxTV community maintains some Wiki pages with contain
a lot of information related to the media subsystem. If you
don't find an answer for your needs here, it is likely that
you'll be able to get something useful there. It is hosted
at:
https://www.linuxtv.org/wiki/
Some very frequently asked questions about Linux Digital TV support
1. The signal seems to die a few seconds after tuning.
It's not a bug, it's a feature. Because the frontends have
significant power requirements (and hence get very hot), they
are powered down if they are unused (i.e. if the frontend device
is closed). The ``dvb-core`` module parameter ``dvb_shutdown_timeout``
allow you to change the timeout (default 5 seconds). Setting the
timeout to 0 disables the timeout feature.
2. How can I watch TV?
Together with the Linux Kernel, the Digital TV developers support
some simple utilities which are mainly intended for testing
and to demonstrate how the DVB API works. This is called DVB v5
tools and are grouped together with the ``v4l-utils`` git repository:
https://git.linuxtv.org/v4l-utils.git/
You can find more information at the LinuxTV wiki:
https://www.linuxtv.org/wiki/index.php/DVBv5_Tools
The first step is to get a list of services that are transmitted.
This is done by using several existing tools. You can use
for example the ``dvbv5-scan`` tool. You can find more information
about it at:
https://www.linuxtv.org/wiki/index.php/Dvbv5-scan
There are some other applications like ``w_scan`` [#]_ that do a
blind scan, trying hard to find all possible channels, but
those consumes a large amount of time to run.
.. [#] https://www.linuxtv.org/wiki/index.php/W_scan
Also, some applications like ``kaffeine`` have their own code
to scan for services. So, you don't need to use an external
application to obtain such list.
Most of such tools need a file containing a list of channel
transponders available on your area. So, LinuxTV developers
maintain tables of Digital TV channel transponders, receiving
patches from the community to keep them updated.
This list is hosted at:
https://git.linuxtv.org/dtv-scan-tables.git
And packaged on several distributions.
Kaffeine has some blind scan support for some terrestrial standards.
It also relies on DTV scan tables, although it contains a copy
of it internally (and, if requested by the user, it will download
newer versions of it).
If you are lucky you can just use one of the supplied channel
transponders. If not, you may need to seek for such info at
the Internet and create a new file. There are several sites with
contains physical channel lists. For cable and satellite, usually
knowing how to tune into a single channel is enough for the
scanning tool to identify the other channels. On some places,
this could also work for terrestrial transmissions.
Once you have a transponders list, you need to generate a services
list with a tool like ``dvbv5-scan``.
Almost all modern Digital TV cards don't have built-in hardware
MPEG-decoders. So, it is up to the application to get a MPEG-TS
stream provided by the board, split it into audio, video and other
data and decode.
3. Which Digital TV applications exist?
Several media player applications are capable of tuning into
digital TV channels, including Kaffeine, Vlc, mplayer and MythTV.
Kaffeine aims to be very user-friendly, and it is maintained
by one of the Kernel driver developers.
A comprehensive list of those and other apps can be found at:
https://www.linuxtv.org/wiki/index.php/TV_Related_Software
Some of the most popular ones are linked below:
https://kde.org/applications/multimedia/org.kde.kaffeine
KDE media player, focused on Digital TV support
https://www.linuxtv.org/vdrwiki/index.php/Main_Page
Klaus Schmidinger's Video Disk Recorder
https://linuxtv.org/downloads and https://git.linuxtv.org/
Digital TV and other media-related applications and
Kernel drivers. The ``v4l-utils`` package there contains
several swiss knife tools for using with Digital TV.
http://sourceforge.net/projects/dvbtools/
Dave Chapman's dvbtools package, including
dvbstream and dvbtune
http://www.dbox2.info/
LinuxDVB on the dBox2
http://www.tuxbox.org/
the TuxBox CVS many interesting DVB applications and the dBox2
DVB source
http://www.nenie.org/misc/mpsys/
MPSYS: a MPEG2 system library and tools
https://www.videolan.org/vlc/index.pt.html
Vlc
http://mplayerhq.hu/
MPlayer
http://xine.sourceforge.net/ and http://xinehq.de/
Xine
http://www.mythtv.org/
MythTV - analog TV and digital TV PVR
http://dvbsnoop.sourceforge.net/
DVB sniffer program to monitor, analyze, debug, dump
or view dvb/mpeg/dsm-cc/mhp stream information (TS,
PES, SECTION)
4. Can't get a signal tuned correctly
That could be due to a lot of problems. On my personal experience,
usually TV cards need stronger signals than TV sets, and are more
sensitive to noise. So, perhaps you just need a better antenna or
cabling. Yet, it could also be some hardware or driver issue.
For example, if you are using a Technotrend/Hauppauge DVB-C card
*without* analog module, you might have to use module parameter
adac=-1 (dvb-ttpci.o).
Please see the FAQ page at linuxtv.org, as it could contain some
valuable information:
https://www.linuxtv.org/wiki/index.php/FAQ_%26_Troubleshooting
If that doesn't work, check at the linux-media ML archives, to
see if someone else had a similar problem with your hardware
and/or digital TV service provider:
https://lore.kernel.org/linux-media/
If none of this works, you can try sending an e-mail to the
linux-media ML and see if someone else could shed some light.
The e-mail is linux-media AT vger.kernel.org.
5. The dvb_net device doesn't give me any packets at all
Run ``tcpdump`` on the ``dvb0_0`` interface. This sets the interface
into promiscuous mode so it accepts any packets from the PID
you have configured with the ``dvbnet`` utility. Check if there
are any packets with the IP addr and MAC addr you have
configured with ``ifconfig`` or with ``ip addr``.
If ``tcpdump`` doesn't give you any output, check the statistics
which ``ifconfig`` or ``netstat -ni`` outputs. (Note: If the MAC
address is wrong, ``dvb_net`` won't get any input; thus you have to
run ``tcpdump`` before checking the statistics.) If there are no
packets at all then maybe the PID is wrong. If there are error packets,
then either the PID is wrong or the stream does not conform to
the MPE standard (EN 301 192, http://www.etsi.org/). You can
use e.g. ``dvbsnoop`` for debugging.
6. The ``dvb_net`` device doesn't give me any multicast packets
Check your routes if they include the multicast address range.
Additionally make sure that "source validation by reversed path
lookup" is disabled::
$ "echo 0 > /proc/sys/net/ipv4/conf/dvb0/rp_filter"
7. What are all those modules that need to be loaded?
In order to make it more flexible and support different hardware
combinations, the media subsystem is written on a modular way.
So, besides the Digital TV hardware module for the main chipset,
it also needs to load a frontend driver, plus the Digital TV
core. If the board also has remote controller, it will also
need the remote controller core and the remote controller tables.
The same happens if the board has support for analog TV: the
core support for video4linux need to be loaded.
The actual module names are Linux-kernel version specific, as,
from time to time, things change, in order to make the media
support more flexible.
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
용어와 LinuxTV 자료
1-22이 문서는 GPL-2.0 라이선스를 따르는 Linux Digital TV 자주 묻는 질문입니다.
Digital TV에서는 하나의 물리 채널 안에 서로 다른 콘텐츠가 들어갈 수 있습니다. 규격에서는 각각을 `service`라고 부르지만 TV 사용자는 보통 이를 채널이라고 부릅니다. 혼동을 피하기 위해 이 FAQ에서는 물리 채널을 `transponder`, 논리 채널을 `service`라고 부릅니다.
LinuxTV 커뮤니티는 media subsystem과 관련된 많은 정보를 Wiki에 관리합니다. 여기서 필요한 답을 찾지 못했다면 Wiki에서 유용한 내용을 찾을 가능성이 큽니다.
다음은 Linux Digital TV 지원에 관해 매우 자주 묻는 질문입니다.
튜닝 뒤 신호가 사라지는 경우
23-31튜닝한 지 몇 초 뒤 신호가 사라지는 것은 버그가 아니라 의도된 기능입니다. Frontend는 전력 소모가 크고 매우 뜨거워지므로 사용하지 않을 때, 즉 frontend device가 닫혀 있을 때 전원을 끕니다.
`dvb-core` module의 `dvb_shutdown_timeout` parameter로 timeout을 바꿀 수 있습니다. 기본값은 5초이며, 0으로 설정하면 timeout 기능을 비활성화합니다.
Digital TV 시청과 service 검색
32-94Linux kernel과 함께 Digital TV 개발자들은 주로 테스트하고 DVB API의 동작을 보여 주기 위한 간단한 utility들을 지원합니다. 이들은 DVB v5 tools라고 하며 `v4l-utils` git repository에 함께 들어 있습니다.
- v4l-utils git repository
https://git.linuxtv.org/v4l-utils.git/ - LinuxTV DVBv5 Tools 안내
https://www.linuxtv.org/wiki/index.php/DVBv5_Tools
첫 단계는 전송 중인 service 목록을 얻는 것입니다. 여러 기존 도구로 할 수 있으며, 예를 들어 `dvbv5-scan`을 사용할 수 있습니다.
`w_scan`처럼 가능한 모든 채널을 찾기 위해 적극적으로 blind scan을 수행하는 다른 application도 있지만, 실행 시간이 매우 오래 걸립니다.
`kaffeine` 같은 application에는 service를 검색하는 자체 코드가 있으므로 이 목록을 얻기 위해 외부 application을 사용할 필요가 없습니다.
이러한 도구 대부분은 현재 지역에서 사용할 수 있는 channel transponder 목록 파일을 필요로 합니다. LinuxTV 개발자들은 Digital TV channel transponder table을 관리하며, 최신 상태를 유지하기 위해 커뮤니티의 patch를 받습니다.
이 목록은 여러 distribution에서도 package로 제공합니다.
Kaffeine은 일부 지상파 표준에 대한 blind scan도 지원합니다. DTV scan table에 의존하지만 내부에 복사본을 포함하며, 사용자가 요청하면 더 최신 버전을 내려받습니다.
운이 좋다면 제공된 channel transponder 중 하나를 그대로 사용할 수 있습니다. 그렇지 않다면 Internet에서 정보를 찾아 새 파일을 만들어야 할 수도 있습니다. 여러 사이트가 물리 채널 목록을 제공합니다. Cable과 satellite에서는 보통 한 채널의 tuning 방법만 알아도 scan 도구가 다른 채널을 식별하기에 충분합니다. 일부 지역에서는 지상파 전송에도 이 방법이 통할 수 있습니다.
Transponder 목록을 얻은 뒤에는 `dvbv5-scan` 같은 도구로 service 목록을 생성해야 합니다.
현대의 Digital TV card에는 내장 hardware MPEG decoder가 거의 없습니다. 따라서 application이 board에서 제공하는 MPEG-TS stream을 받아 audio, video 및 기타 data로 나누고 decode해야 합니다.
Digital TV application
95-150Kaffeine, VLC, mplayer, MythTV를 비롯한 여러 media player application이 Digital TV 채널 tuning을 지원합니다. Kaffeine은 사용 편의성을 목표로 하며 kernel driver 개발자 중 한 명이 관리합니다.
널리 쓰이는 application과 자료는 다음과 같습니다.
- Kaffeine - Digital TV 지원에 초점을 맞춘 KDE media player
https://kde.org/applications/multimedia/org.kde.kaffeine - VDR - Klaus Schmidinger의 Video Disk Recorder
https://www.linuxtv.org/vdrwiki/index.php/Main_Page - LinuxTV downloads - Digital TV 및 media application
https://linuxtv.org/downloads - LinuxTV git - application, kernel driver와 v4l-utils 도구
https://git.linuxtv.org/ - dvbtools - dvbstream과 dvbtune을 포함한 Dave Chapman의 package
http://sourceforge.net/projects/dvbtools/ - dBox2 - dBox2의 LinuxDVB
http://www.dbox2.info/ - TuxBox - 여러 DVB application과 dBox2 DVB source
http://www.tuxbox.org/ - MPSYS - MPEG2 system library와 도구
http://www.nenie.org/misc/mpsys/ - VLC
https://www.videolan.org/vlc/index.pt.html - MPlayer
http://mplayerhq.hu/ - Xine project
http://xine.sourceforge.net/ - Xine HQ
http://xinehq.de/ - MythTV - analog TV 및 Digital TV PVR
http://www.mythtv.org/ - dvbsnoop - DVB/MPEG/DSM-CC/MHP stream(TS, PES, SECTION)을 감시·분석·debug·dump·표시하는 sniffer
http://dvbsnoop.sourceforge.net/
신호를 제대로 tuning하지 못하는 경우
151-176원인은 다양합니다. 경험상 TV card는 TV 수상기보다 강한 신호를 요구하고 noise에도 더 민감합니다. 더 나은 antenna나 cabling이 필요할 수 있으며, hardware 또는 driver 문제일 수도 있습니다.
예를 들어 analog module이 없는 Technotrend/Hauppauge DVB-C card를 사용한다면 `dvb-ttpci.o`의 module parameter를 `adac=-1`로 지정해야 할 수 있습니다.
LinuxTV FAQ에 유용한 정보가 있을 수 있으므로 먼저 확인하십시오.
해결되지 않으면 linux-media mailing list archive에서 같은 hardware나 Digital TV service provider에 관한 비슷한 문제가 있었는지 확인하십시오.
그래도 해결되지 않으면 linux-media mailing list로 도움을 요청할 수 있습니다. 주소는 `linux-media AT vger.kernel.org`입니다.
dvb_net packet이 전혀 없는 경우
177-193`dvb0_0` interface에서 `tcpdump`를 실행하십시오. 그러면 interface가 promiscuous mode로 바뀌어 `dvbnet` utility로 설정한 PID의 모든 packet을 받아들입니다. `ifconfig` 또는 `ip addr`로 설정한 IP address와 MAC address에 해당하는 packet이 있는지 확인하십시오.
`tcpdump` 출력이 없다면 `ifconfig` 또는 `netstat -ni`가 보여 주는 통계를 확인하십시오. MAC address가 잘못되면 `dvb_net`은 입력을 전혀 받지 못하므로 통계를 보기 전에 `tcpdump`를 실행해야 합니다.
Packet이 전혀 없다면 PID가 잘못되었을 수 있습니다. Error packet이 있다면 PID가 잘못되었거나 stream이 MPE 표준 EN 301 192를 따르지 않는 것입니다. Debug에는 `dvbsnoop` 등을 사용할 수 있습니다.
dvb_net multicast packet이 없는 경우
194-201Route에 multicast address range가 포함되어 있는지 확인하십시오. 또한 reversed path lookup을 이용한 source validation이 비활성화되어 있는지 확인하십시오.
$ "echo 0 > /proc/sys/net/ipv4/conf/dvb0/rp_filter"
필요한 media module
202-216서로 다른 hardware 조합을 유연하게 지원할 수 있도록 media subsystem은 modular 방식으로 작성되었습니다.
주 chipset용 Digital TV hardware module 외에도 frontend driver와 Digital TV core를 불러와야 합니다. Board에 remote controller가 있다면 remote controller core와 remote controller table도 필요합니다. Analog TV를 지원한다면 video4linux core support도 불러와야 합니다.
실제 module 이름은 Linux kernel version에 따라 다릅니다. Media 지원을 더 유연하게 만들기 위해 때때로 구성이 바뀌기 때문입니다.
Digital TV 문제 해결
faq.rst:1-216Transponder와 service 용어부터 channel scan, 시청 application, 신호와 dvb_net 진단, 필요한 kernel module까지 일곱 가지 실무 질문을 정리합니다.