요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
Module load와 예외
bt8xx.rst:65-110자동 load 동작과 EEPROM 없는 TwinHan·clone에 필요한 매개변수를 정리합니다.
다중 카드 구성
bt8xx.rst:111-143Card ID 순서와 여러 `card=` 값을 지정하는 방법을 설명합니다.
손상된 PCI ID 강제 probing
bt8xx.rst:144-157`new_id`로 Brooktree vendor·device ID와 subsystem ID를 강제 등록하는 절차입니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
.. SPDX-License-Identifier: GPL-2.0
==================================
How to get the bt8xx cards working
==================================
Authors:
Richard Walker,
Jamie Honan,
Michael Hunold,
Manu Abraham,
Uwe Bugla,
Michael Krufky
General information
-------------------
This class of cards has a bt878a as the PCI interface, and require the bttv
driver for accessing the i2c bus and the gpio pins of the bt8xx chipset.
Please see Documentation/admin-guide/media/bttv-cardlist.rst for a complete
list of Cards based on the Conexant Bt8xx PCI bridge supported by the
Linux Kernel.
In order to be able to compile the kernel, some config options should be
enabled::
./scripts/config -e PCI
./scripts/config -e INPUT
./scripts/config -m I2C
./scripts/config -m MEDIA_SUPPORT
./scripts/config -e MEDIA_PCI_SUPPORT
./scripts/config -e MEDIA_ANALOG_TV_SUPPORT
./scripts/config -e MEDIA_DIGITAL_TV_SUPPORT
./scripts/config -e MEDIA_RADIO_SUPPORT
./scripts/config -e RC_CORE
./scripts/config -m VIDEO_BT848
./scripts/config -m DVB_BT8XX
If you want to automatically support all possible variants of the Bt8xx
cards, you should also do::
./scripts/config -e MEDIA_SUBDRV_AUTOSELECT
.. note::
Please use the following options with care as deselection of drivers which
are in fact necessary may result in DVB devices that cannot be tuned due
to lack of driver support.
If your goal is to just support an specific board, you may, instead,
disable MEDIA_SUBDRV_AUTOSELECT and manually select the frontend drivers
required by your board. With that, you can save some RAM.
You can do that by calling make xconfig/qconfig/menuconfig and look at
the options on those menu options (only enabled if
``Autoselect ancillary drivers`` is disabled:
#) ``Device drivers`` => ``Multimedia support`` => ``Customize TV tuners``
#) ``Device drivers`` => ``Multimedia support`` => ``Customize DVB frontends``
Then, on each of the above menu, please select your card-specific
frontend and tuner modules.
Loading Modules
---------------
Regular case: If the bttv driver detects a bt8xx-based DVB card, all
frontend and backend modules will be loaded automatically.
Exceptions are:
- Old TV cards without EEPROMs, sharing a common PCI subsystem ID;
- Old TwinHan DST cards or clones with or without CA slot and not
containing an Eeprom.
In the following cases overriding the PCI type detection for bttv and
for dvb-bt8xx drivers by passing modprobe parameters may be necessary.
Running TwinHan and Clones
~~~~~~~~~~~~~~~~~~~~~~~~~~
As shown at Documentation/admin-guide/media/bttv-cardlist.rst, TwinHan and
clones use ``card=113`` modprobe parameter. So, in order to properly
detect it for devices without EEPROM, you should use::
$ modprobe bttv card=113
$ modprobe dst
Useful parameters for verbosity level and debugging the dst module::
verbose=0: messages are disabled
1: only error messages are displayed
2: notifications are displayed
3: other useful messages are displayed
4: debug setting
dst_addons=0: card is a free to air (FTA) card only
0x20: card has a conditional access slot for scrambled channels
dst_algo=0: (default) Software tuning algorithm
1: Hardware tuning algorithm
The autodetected values are determined by the cards' "response string".
In your logs see f. ex.: dst_get_device_id: Recognize [DSTMCI].
For bug reports please send in a complete log with verbose=4 activated.
Please also see Documentation/admin-guide/media/ci.rst.
Running multiple cards
~~~~~~~~~~~~~~~~~~~~~~
See Documentation/admin-guide/media/bttv-cardlist.rst for a complete list of
Card ID. Some examples:
=========================== ===
Brand name ID
=========================== ===
Pinnacle PCTV Sat 94
Nebula Electronics Digi TV 104
pcHDTV HD-2000 TV 112
Twinhan DST and clones 113
Avermedia AverTV DVB-T 77: 123
Avermedia AverTV DVB-T 761 124
DViCO FusionHDTV DVB-T Lite 128
DViCO FusionHDTV 5 Lite 135
=========================== ===
.. note::
When you have multiple cards, the order of the card ID should
match the order where they're detected by the system. Please notice
that removing/inserting other PCI cards may change the detection
order.
Example::
$ modprobe bttv card=113 card=135
In case of further problems please subscribe and send questions to
the mailing list: linux-media@vger.kernel.org.
Probing the cards with broken PCI subsystem ID
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
There are some TwinHan cards whose EEPROM has become corrupted for some
reason. The cards do not have a correct PCI subsystem ID.
Still, it is possible to force probing the cards with::
$ echo 109e 0878 $subvendor $subdevice > \
/sys/bus/pci/drivers/bt878/new_id
The two numbers there are::
109e: PCI_VENDOR_ID_BROOKTREE
0878: PCI_DEVICE_ID_BROOKTREE_878
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Bt8xx 카드 구동 안내
1-14이 문서는 Bt8xx 계열 카드를 동작시키는 방법을 설명합니다.
저자는 Richard Walker, Jamie Honan, Michael Hunold, Manu Abraham, Uwe Bugla, Michael Krufky입니다.
일반 정보
15-24이 계열 카드는 PCI interface로 `bt878a`를 사용하며, Bt8xx chipset의 I2C bus와 GPIO pin에 접근하려면 `bttv` 드라이버가 필요합니다.
Linux 커널이 지원하는 Conexant Bt8xx PCI bridge 기반 카드 전체 목록은 `Documentation/admin-guide/media/bttv-cardlist.rst`를 참조하십시오.
커널 설정
25-44커널을 compile하려면 다음 설정을 활성화해야 합니다.
./scripts/config -e PCI
./scripts/config -e INPUT
./scripts/config -m I2C
./scripts/config -m MEDIA_SUPPORT
./scripts/config -e MEDIA_PCI_SUPPORT
./scripts/config -e MEDIA_ANALOG_TV_SUPPORT
./scripts/config -e MEDIA_DIGITAL_TV_SUPPORT
./scripts/config -e MEDIA_RADIO_SUPPORT
./scripts/config -e RC_CORE
./scripts/config -m VIDEO_BT848
./scripts/config -m DVB_BT8XX
가능한 모든 Bt8xx 카드 변형을 자동 지원하려면 다음 설정도 활성화합니다.
./scripts/config -e MEDIA_SUBDRV_AUTOSELECT
Frontend 드라이버 수동 선택
45-64실제로 필요한 드라이버를 해제하면 드라이버 지원 부족으로 DVB 장치를 tuning하지 못할 수 있으므로 관련 option은 주의해서 사용해야 합니다.
특정 보드 하나만 지원하려면 `MEDIA_SUBDRV_AUTOSELECT`를 비활성화하고 보드에 필요한 frontend 드라이버를 직접 골라 RAM을 절약할 수 있습니다.
`make xconfig`, `make qconfig`, `make menuconfig` 가운데 하나를 실행하고 `Autoselect ancillary drivers`를 끈 상태에서 다음 menu를 확인합니다.
| Menu | 경로 |
|---|---|
| TV tuner | `Device drivers` → `Multimedia support` → `Customize TV tuners` |
| DVB frontend | `Device drivers` → `Multimedia support` → `Customize DVB frontends` |
각 menu에서 카드 전용 frontend와 tuner module을 선택합니다.
Module 자동 load와 예외
65-80일반적으로 `bttv` 드라이버가 Bt8xx 기반 DVB 카드를 감지하면 frontend와 backend module을 모두 자동으로 load합니다.
예외는 EEPROM이 없고 공통 PCI subsystem ID를 공유하는 오래된 TV 카드와, CA slot 유무와 관계없이 EEPROM이 없는 오래된 TwinHan DST 카드 또는 clone입니다.
이 경우 `modprobe` 매개변수를 전달하여 `bttv`와 `dvb-bt8xx` 드라이버의 PCI type 감지를 덮어써야 할 수 있습니다.
TwinHan과 clone 실행
81-110`Documentation/admin-guide/media/bttv-cardlist.rst`에 나온 것처럼 TwinHan과 clone은 `card=113` modprobe 매개변수를 사용합니다. EEPROM이 없는 장치를 정확히 감지하려면 다음 명령을 실행합니다.
$ modprobe bttv card=113
$ modprobe dst
`dst` module의 메시지 수준과 debugging에 유용한 매개변수는 다음과 같습니다.
verbose=0: messages are disabled
1: only error messages are displayed
2: notifications are displayed
3: other useful messages are displayed
4: debug setting
dst_addons=0: card is a free to air (FTA) card only
0x20: card has a conditional access slot for scrambled channels
dst_algo=0: (default) Software tuning algorithm
1: Hardware tuning algorithm
| 매개변수 | 의미 |
|---|---|
| `verbose=0` | 메시지를 비활성화합니다. |
| `verbose=1` | 오류 메시지만 표시합니다. |
| `verbose=2` | 통지를 표시합니다. |
| `verbose=3` | 그 밖의 유용한 메시지를 표시합니다. |
| `verbose=4` | Debug 설정입니다. |
| `dst_addons=0` | FTA(free-to-air) 전용 카드입니다. |
| `dst_addons=0x20` | Scrambled channel용 conditional access slot이 있습니다. |
| `dst_algo=0` | 기본 software tuning algorithm입니다. |
| `dst_algo=1` | Hardware tuning algorithm입니다. |
자동 감지 값은 카드의 `response string`으로 정합니다. 예를 들어 log에서 `dst_get_device_id: Recognize [DSTMCI]`를 확인할 수 있습니다.
Bug report에는 `verbose=4`를 활성화한 전체 log를 첨부해야 합니다. `Documentation/admin-guide/media/ci.rst`도 참조하십시오.
여러 카드 실행
111-143Card ID 전체 목록은 `Documentation/admin-guide/media/bttv-cardlist.rst`를 참조하십시오. 대표적인 예는 다음과 같습니다.
| Brand name | ID |
|---|---|
| Pinnacle PCTV Sat | 94 |
| Nebula Electronics Digi TV | 104 |
| pcHDTV HD-2000 TV | 112 |
| Twinhan DST and clones | 113 |
| Avermedia AverTV DVB-T 77: | 123 |
| Avermedia AverTV DVB-T 761 | 124 |
| DViCO FusionHDTV DVB-T Lite | 128 |
| DViCO FusionHDTV 5 Lite | 135 |
카드가 여러 개면 Card ID 순서를 system이 감지한 순서와 맞춰야 합니다. 다른 PCI 카드를 제거하거나 삽입하면 감지 순서가 바뀔 수 있습니다.
예를 들어 TwinHan DST 뒤에 DViCO FusionHDTV 5 Lite가 감지되면 다음과 같이 지정합니다.
$ modprobe bttv card=113 card=135
문제가 계속되면 `linux-media@vger.kernel.org` mailing list를 구독하고 질문을 보내십시오.
손상된 PCI subsystem ID probing
144-157일부 TwinHan 카드는 EEPROM이 손상되어 올바른 PCI subsystem ID가 없습니다. 그래도 다음 sysfs `new_id` 기록으로 카드 probing을 강제할 수 있습니다.
$ echo 109e 0878 $subvendor $subdevice > \
/sys/bus/pci/drivers/bt878/new_id
명령의 앞 두 번호는 다음 상수를 뜻합니다.
| 값 | 상수 |
|---|---|
| `109e` | `PCI_VENDOR_ID_BROOKTREE` |
| `0878` | `PCI_DEVICE_ID_BROOKTREE_878` |
109e: PCI_VENDOR_ID_BROOKTREE
0878: PCI_DEVICE_ID_BROOKTREE_878
커널과 frontend 설정
bt8xx.rst:1-64필수 Kconfig option과 특정 보드용 tuner·frontend 수동 선택 방법을 설명합니다.