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 并查看这些菜单选项中的选项来做到这一点(仅在 Autoselect ancillary drivers 被禁用时启用)

  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. 运行多张网卡

请参阅 BTTV 网卡列表 获取完整的网卡 ID 列表。一些例子

品牌名称

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

注意

当您有多张网卡时,网卡 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