博通無線網卡 - Arch Linux 中文维基

跳至內容

# 博通無線網卡

出自 Arch Linux 中文维基

這篇文章詳細地介紹了如何安裝和設置博通（Broadcom）無線網卡。

## 1 歷史

博通（Broadcom）對於 GNU/Linux 的 Wi-Fi 設備支持方面有著悠久的歷史。在它最開始一段歷史的大部分時間裡，博通的設備要麼完全就不支持，要麼就得讓用戶修改固件才能用。有一些無線設備可以通過使用通過逆向工程的驅動程序來獲得支持。

2008年8月，博通官方發布了 802.11 Linux STA 驅動程序以在 GNU/Linux 上提供無線設備的驅動程序。儘管這是一個限制許可的驅動程序，也不適用於隱藏的 ESSID，但博通承諾未來將使用更開放的方法。

2010年9月，博通發布了完全開源的無線網卡硬體驅動。這個名為 brcm80211 的驅動程序已被列入到自2.6.37之後的內核中。隨著 Linux 內核 2.6.39 發布，這些驅動程以下是可用的驅動程序列表：序已被重新命名為`brcmsmac`和`brcmfmac`。

一

驅動 | 描述
--- | ---
bcrm80211 | n
主線（推薦使用）版本ub43 | 逆向工程內核驅動
broadcom-wl | 限制許可的 Broadcom STA 驅動

## 查看你可以使用何種驅動

首先，向你的終端輸入以下內容來檢測網卡的 PCI-ID:

    $ lspci -vnn | grep 14e4:

然後在以下列表中檢查 b43的支持設備列表以及 brcm80211的支持設備列表.

## 獲取驅動

### brcm80211

Kernel內建了兩個開源驅動: brcmfmac 提供原生硬MAC支持， brcmsmac 提供基於mac80211的軟MAC支持。 它們應該會在啟動時自行加載。

注意：

- brcmfmac 提供較新的晶片支持，並且支持AP模式，P2P模式，高級加密。
- brcmsmac 僅提供對於較老晶片的支持，例如BCM4313, BCM43224, BCM43225。

### b43/b43legacy

b43 以及 b43legacy兩個逆向工程驅動已經被內建在Kernel中。b43支持大部分的博通無線晶片組，而b43legacy驅動僅支持早期的BCM4301以及BCM4306 rev.2 晶片組。為了避免與別的驅動造成衝突，請 blacklist 未使用的驅動。

這些驅動的運行都需要安裝閉源固件，請從AUR安裝b43-firmwareAUR， b43-firmware-classicAUR 或者 b43-firmware-legacyAUR[損壞的連結：package not found] 。

注意：

- BCM4306 rev.3, BCM4311, BCM4312 與 b43-firmware 固件不能良好的工作。對於這些晶片組請使用 b43-firmware-classicAUR 代替。
- BCM4331 與 b43-firmware-classic 固件不能良好的工作。 對於這些晶片組請使用 b43-firmwareAUR 代替。

### broadcom-wl

AUR 中有兩個版本的Broadcom STA閉源驅動：

- 通常的 broadcom-wl包
- 以及 DKMS 版本 broadcom-wl-dkms包

提示：DKMS版本 broadcom-wl-dkms包

- 可以在不同的Kernel中工作 (例如 linux-ckAUR).
- 每次安裝新的Kernel時，dkms都會重新構建驅動，如果你使用 broadcom-wl包 或者其他依賴於單個Kernel版本的驅動 (例如 broadcom-wl-ckAUR), 那麼在更新Kernel或者使用新的Kernel時都有可能使驅動崩潰。

#### 加載broadcom-wl的內核模塊

`wl` 模塊可能會與其他模塊衝突而無法加載。加載`wl`模塊之前， 請移除`b43`或者其他可能造成衝突的模塊：

    # rmmod b43

如果 `ssb` 加載了，也請一併移除:

    # rmmod ssb

注意：錯誤的加載 `ssb` 可能導致無線界面無法被創建。

加載 `wl` 模塊：

    # modprobe wl

加載 `wl` 模塊的同時 `lib80211` 或者 `lib80211_crypt_tkip` 應該也會被自動加載。 使用 `lsmod` 來進行檢查，如果沒有，請手動加載二者之一；

    # modprobe lib80211

或

    # modprobe lib80211_crypt_tkip

如果你直接從博通官方網站下載驅動並安裝，你可能同時需要更新依賴模塊:

    # depmod -a

如果模塊無法在啟動時加載，請將 `wl` (以及 `lib80211`/`lib80211_crypt_tkip`如果需要) 到 `/etc/rc.conf`的MODULES列：

    # MODULES=(... wl...)

你也可以Blacklist掉可能衝突的模塊，在 `/etc/modprobe.d/modprobe.conf`中加入:

    # blacklist b43
    # blacklist ssb

警告：Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] 在Blacklist `b43` 以及 `ssb`後可能不工作。

## 加載多博通網卡的內核驅動模塊

b43的博通無線網卡驅動與b44博通有線網卡驅動可能產生衝突，因此建議您使用broadcom-wl驅動

- Put "lib80211_crypt_tkip" and "wl" at the BEFORE b44 (if you have it) position in MODULES= 在 /etc/rc.conf 模塊部分，b44(如果你需要這個驅動的話)之前加入lib80211_crypt_tkip wl
- 不要忘記把 b43 模塊加入黑名單
- 您的無線網卡設備為eth0
- 您的有線網卡設備為eth1
- 兩者能同時正常工作

## 故障排除

各種可以糾正的錯誤。

### 更新 Kernel 後設備無法訪問

如果您使用 brcm80211 請確保沒有被 blacklisted。如果你使用 b43 驅動確保它在工作。如果你使用Broadcom STA驅動的broadcom-wl包包，請重新安裝或一勞永逸地切換成broadcom-wl-dkms包。

### 使用 broadcom-wl 驅動的設備不工作/不顯示

請查看dmesg是否存在報錯信息，broadcom-wl經常發生奇怪的問題，重新加載Kernel模塊或者重啟一般能解決問題

### 使用 broadcom-wl 驅動時接口交換

使用 broadcom-wl 驅動也許會發現它們的以太網和 Wi-Fi 接口交換了。查看這裡（reverting to traditional interface names）的解決方案。

### 接口顯示正常但是不能連接

加入以下內核參數:

    b43.allhwsupport=1

### 奇怪的報錯信息

你可能會在啟動時接收到奇怪的報錯信息，類似於：

    phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
    phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
    phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
    enabled, active

一般情況下這並不影響驅動的正常工作，如果你想不想收到這些信息，可以提高printk的日誌級別。

在`/etc/sysctl.d/`中創建一個`printk.conf`或者類似的配置文件:

    printk.conf

    kernel.printk = 3 3 3 3

最後`sysctl -p`確保配置被成功寫入。

### 不能檢測到設備 BCM43241

無論是 `lspci` 還是 `lsusb` 都不能檢測到設備。這個問題目前無法解決。 請在解決後刪除此部分。

### 在連接到某些路由器時可能不穩定

如果沒有其他的解決方法，安裝linux-lts包，或者使用低版本的驅動。

分類：​

- 無線網絡
- 包含損壞的軟體包連結的頁面

博通無線網卡
新增話題