Broadcom wireless: Difference between revisions

From ArchWiki
(→‎Loading the wl kernel module: Rename section "Manual ly", touch-ups, note about unpackaged installations are dangerous.)
(→‎Troubleshooting: Gestalt edit, running out of time. My bad.)
Line 80: Line 80:


== Troubleshooting ==
== Troubleshooting ==
=== Wi-Fi card does not seem to even exist ===


{{Expansion|no solution provided}}
Various bugs that can be remedied.


Some users with newer cards like the Broadcom BCM43241 will experience an issue where lspci or lsusb will not show any trace of the card. A solution to this will be posted when found.
=== Device inaccessible after kernel upgrade ===


=== Wi-Fi card does not work or show up after kernel upgrade (brcmsmac) ===
Since the 3.3.1 kernel the '''bcma''' module was introduced. If using a '''brcm80211''' driver be sure it hasn't been [[Kernel_modules#Blacklisting|blacklisted]]. If using a '''b43''' driver be sure the it has been.


This is caused by the kernel using the {{ic|bcma}} module instead of the {{ic|brcmsmac}} module. The solution is to blacklist the {{ic|bcma}} module. For instructions, see [[Kernel_modules#Blacklisting]].
=== Device with broadcom-wl driver not working/showing ===
{{Note|This affects only Linux kernels 3.0, 3.1, and 3.2. Since kernel 3.3, the {{ic|brcmsmac}} module actually uses {{ic|bcma}}, so {{ic|bcma}} needs to be unblacklisted or the Wi-Fi interface will not appear.}}


=== Wi-Fi card does not work/show up (broadcom-wl) ===
Be sure the correct modules are blacklisted and occasionally it may be necessary to blacklist the '''brcm80211''' drivers if accidentally detected before the '''wl''' driver is loaded. Furthermore, update the modules dependencies {{ic|depmod -a}}, verify the wireless interface with {{ic|ip addr}}, kernel upgrades will require an upgrade of the non-[[DKMS]] package.
Check if you are loading the correct modules. You may need to blacklist the {{ic|brcm80211}}, {{ic|b43}}, and {{ic|ssb}} kernel modules to prevent them from loading automatically. For instructions, see [[Kernel_modules#Blacklisting]].


{{Note|You may not have to blacklist the {{ic|brcm80211}} driver; although as of 2011-06-20, it will still default to loading the {{ic|brcm80211}} module before the {{ic|wl}} driver, which prevents {{ic|wl}} from being used.}}
=== Interfaces swapped with broadcom-wl ===


Check if you updated your module dependencies:
Users of the broadcom-wl driver may find their Ethernet and Wi-Fi interfaces have been swapped. See [[Network configuration#Device names|device naming]] for an answer.
# depmod -a


* Verify that your wireless interface(s) appear using {{ic|ip addr}}.
=== Interface is showing but not allowing connections ===
* You may need to restart your machine to see the device appear in {{ic|iwconfig}} or {{ic|ip addr}}.
* If you have recently upgraded your kernel, you need to rebuild the {{ic|broadcom-wl}} package with the new kernel installed to update the module.


=== Interfaces swapped (broadcom-wl) ===
Append the following [[kernel parameter]]:
Users of the {{ic|broadcom-wl}} driver may find their Ethernet and Wi-Fi interfaces have been swapped. See [[Network configuration#Device_names]] for solution.
 
b43.allhwsupport=1


=== Suppressing console messages ===
=== Suppressing console messages ===


You may continuously get some verbose and annoying messages during the boot, similar to
leavebe
 
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
 
To disable those messages, increase the loglevel of printk messages that get through to the console.
 
Create a file in {{ic|/etc/sysctl.d/}} called {{ic|printk.conf}} or something similar:
{{hc|printk.conf|
<nowiki>
kernel.printk = 3 3 3 3
</nowiki>
}}
 
Refere to [http://unix.stackexchange.com/questions/44999/how-can-i-hide-messages-of-udev/45525#45525|this StackExchange thread] for an explanation of this variable.
 
=== Interface is showing but does not allow connections ===
 
Append the following to your [[Kernel parameters|kernel command line]]:
b43.allhwsupport=1


=== Miscellaneous user notes ===
=== Device BCM43241 non-detected ===


See [[Talk:Broadcom wireless]].
This device will not display with either {{ic|lspci}} nor {{ic|lsusb}} there is not a solution. Please remove this section when resolved.

Revision as of 18:07, 23 February 2015

zh-CN:Broadcom wireless This article details how to install and setup a Broadcom wireless network device.

History

Broadcom has a noted history with its support for Wi-Fi devices regarding GNU/Linux. For a good portion of its initial history, Broadcom devices were either entirely unsupported or required the user to tinker with the firmware. The limited set of wireless devices that were supported were done so by a reverse-engineered driver. The reverse-engineered b43 driver was introduced in the 2.6.24 kernel.

In August 2008, Broadcom released the 802.11 Linux STA driver officially supporting Broadcom wireless devices on GNU/Linux. This is a restrictively licensed driver and it does not work with hidden ESSIDs, but Broadcom promised to work towards a more open approach in the future.

In September 2010, Broadcom released a fully open source driver. The brcm80211 driver was introduced in the 2.6.37 kernel and in the 2.6.39 kernel it was sub-divided into the brcmsmac and brcmfmac drivers.

The types of available drivers are:

Driver Description
brcm80211 Kernel driver open-source version
b43 Kernel driver reverse-engineered version
broadcom-wl Broadcom driver restricted-license

Driver selection

To know what driver(s) are operable on the computer's Broadcom wireless network device, the device ID and chipset name will need to be detected. Cross-reference them with the driver list of supported brcm80211 and b43 devices.

$ lspci -vnn | grep 14e4:

Installation

brcm80211

Included in the kernel, the open source drivers are named brcmsmac for PCI backends and brcmfmac for SDIO/USB backends. Upon boot they should be detected and the driver Kernel_modules#Loading loaded.

b43

Included in the kernel, the reverse-engineered drivers are named b43 and b43legacy (supports the BCM4301 and early BCM4306 chipsets). For these to work the firmware is required to be installed. To avoid possible driver collisions, blacklist the non-used driver.

Install b43-firmwareAUR or b43-firmware-legacyAUR from the AUR.

Low-power support

Warning: The validity/safety of this method is questioned. Why aren't these additions part` of the package?

If the Broadcom wireless model has low-power support, a special firmware can be to be installed to utilize it. It can be detected by doing:

$ lspci | grep Broadcom | grep LP-PHY

For supported models download the necessary firmware and follow these directions (requires b43-fwcutter:

$ curl -LO http://downloads.openwrt.org/sources/broadcom-wl-4.178.10.4.tar.bz2
$ tar xjf broadcom-wl-4.178.10.4.tar.bz2
$ cd broadcom-wl-4.178.10.4/linux
# b43-fwcutter -w /lib/firmware wl_apsta.o

broadcom-wl

Install broadcom-wlAUR or its DKMS variant broadcom-wl-dkmsAUR from the AUR for the restrictively licensed driver.

Manually

Warning: This method is not recommended. Drivers that are un-tracked can become problematic or nonfunctional on system updates.

Install the driver from a download on the Broadcom web page. After this, to avoid driver/module collisions with similar modules, and to make the driver available do:

# rmmod b43
# rmmod ssb
# modprobe wl

The wl module should automatically loal lib80211 or lib80211_crypt_tkip otherwise they will have to be manually loaded.

If the driver doesn't work at this point, it may be needed that the dependencies are updated:

# depmod -a

To make the module load at boot, refer to Kernel_modules#Loading loaded. Upon boot to have the driver Kernel_modules#Loading loaded and to blacklist conflicting modules is recommended.

Troubleshooting

Various bugs that can be remedied.

Device inaccessible after kernel upgrade

Since the 3.3.1 kernel the bcma module was introduced. If using a brcm80211 driver be sure it hasn't been blacklisted. If using a b43 driver be sure the it has been.

Device with broadcom-wl driver not working/showing

Be sure the correct modules are blacklisted and occasionally it may be necessary to blacklist the brcm80211 drivers if accidentally detected before the wl driver is loaded. Furthermore, update the modules dependencies depmod -a, verify the wireless interface with ip addr, kernel upgrades will require an upgrade of the non-DKMS package.

Interfaces swapped with broadcom-wl

Users of the broadcom-wl driver may find their Ethernet and Wi-Fi interfaces have been swapped. See device naming for an answer.

Interface is showing but not allowing connections

Append the following kernel parameter:

b43.allhwsupport=1

Suppressing console messages

leavebe

Device BCM43241 non-detected

This device will not display with either lspci nor lsusb there is not a solution. Please remove this section when resolved.