8.2. 如何使 bt8xx 卡工作

作者

Richard Walker、Jamie Honan、Michael Hunold、Manu Abraham、Uwe Bugla、Michael Krufky

8.2.1. 一般信息

此类卡具有 bt878a 作为 PCI 接口,并且需要 bttv 驱动程序来访问 bt8xx 芯片组的 i2c 总线和 gpio 引脚。

请参阅 BTTV 卡列表,其中包含 Linux 内核支持的基于 Conexant Bt8xx PCI 桥的卡的完整列表。

为了能够编译内核,应启用一些配置选项

./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

注意

请小心使用以下选项,因为取消选择实际需要的驱动程序可能会导致由于缺少驱动程序支持而无法调整的 DVB 设备。

如果您的目标只是支持特定的板卡,则可以改为禁用 MEDIA_SUBDRV_AUTOSELECT 并手动选择您的板卡所需的前端驱动程序。 这样,您可以节省一些 RAM。

您可以通过调用 make xconfig/qconfig/menuconfig 并查看那些菜单选项上的选项来实现(仅在禁用 自动选择 辅助驱动程序 时启用)

  1. 设备驱动程序 => 多媒体支持 => 自定义电视调谐器

  2. 设备驱动程序 => 多媒体支持 => 自定义 DVB 前端

然后,在上述每个菜单上,请选择您的卡特定的前端和调谐器模块。

8.2.2. 加载模块

通常情况:如果 bttv 驱动程序检测到基于 bt8xx 的 DVB 卡,则会自动加载所有前端和后端模块。

例外情况是

  • 没有 EEPROM、共享通用 PCI 子系统 ID 的旧电视卡;

  • 带有或不带有 CA 插槽且不包含 Eeprom 的旧 TwinHan DST 卡或克隆卡。

在以下情况下,可能需要通过传递 modprobe 参数来覆盖 bttv 和 dvb-bt8xx 驱动程序的 PCI 类型检测。

8.2.2.1. 运行 TwinHan 和克隆卡

BTTV 卡列表所示,TwinHan 和克隆卡使用 card=113 modprobe 参数。 因此,为了正确检测没有 EEPROM 的设备,您应该使用

$ modprobe bttv card=113
$ modprobe dst

用于详细级别和调试 dst 模块的有用参数

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

自动检测到的值由卡的“响应字符串”确定。

在您的日志中,请参阅,例如:dst_get_device_id: Recognize [DSTMCI]。

对于错误报告,请发送激活 verbose=4 的完整日志。另请参阅 数字电视条件访问接口

8.2.2.2. 运行多张卡

有关卡 ID 的完整列表,请参阅 BTTV 卡列表。一些例子

品牌名称

ID

品尼高 PCTV Sat

94

星云电子 Digi TV

104

pcHDTV HD-2000 TV

112

Twinhan DST 和克隆卡

113

Avermedia AverTV DVB-T 77

123

Avermedia AverTV DVB-T 761

124

DViCO FusionHDTV DVB-T Lite

128

DViCO FusionHDTV 5 Lite

135

注意

当您有多张卡时,卡 ID 的顺序应与系统检测到它们的顺序匹配。 请注意,移除/插入其他 PCI 卡可能会更改检测顺序。

示例

$ modprobe bttv card=113 card=135

如果出现其他问题,请订阅并将问题发送到邮件列表:linux-media@vger.kernel.org

8.2.2.3. 探测 PCI 子系统 ID 损坏的卡

有些 TwinHan 卡的 EEPROM 由于某种原因已损坏。 这些卡没有正确的 PCI 子系统 ID。 尽管如此,仍然可以使用以下命令强制探测卡

$ echo 109e 0878 $subvendor $subdevice > \
        /sys/bus/pci/drivers/bt878/new_id

那里的两个数字是

109e: PCI_VENDOR_ID_BROOKTREE
0878: PCI_DEVICE_ID_BROOKTREE_878