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