安装Broadcom无线驱动程序

我在安装Ubuntu的Broadcom驱动程序时遇到了严重的问题。它在我之前的版本上完美运行,但现在却不可能。
安装BCM43xx卡的Broadcom无线驱动程序的步骤是什么?
我是一个对Linux没有先进知识的用户,所以我需要关于如何制作、编译等的清晰解释。

lspci -vnn | grep Network显示:

Broadcom Corporation BCM4322 802.11a/b/g/n Wireless LAN Controller [14e4:432b] 

iwconfig显示:

lo        no wireless extensions.
eth0      no wireless extensions.

注意:下面的答案每次添加和确认工作时都会更新。

1请点击此链接查看:https://help.ubuntu.com/community/WifiDocs/Driver/bcm43xx - 在那里您可以看到Broadcom STA驱动程序应该与BCM4313(: BCM4311,BCM4312,BCM4313,BCM4321,BCM4322,BCM43224,BCM43225)兼容。您使用的是哪个版本的Ubuntu? - Hillar
顺便说一下,我之前尝试过这些步骤,卡安装成功了,但是速度很慢。 - Ataraxio Panzetta
这里有一个关于Natty中那个类似于你所经历的Broadcom芯片的错误报告(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/732038)。我不确定这个问题是否已解决。 - boehj
你可以尝试使用带补丁的Broadcom混合驱动程序。希望这篇来自mindwerks的文章能够帮助你解决问题。 - neyz
Ask Ubuntu的目的是收集答案,而不是链接到答案。我只会手动授予悬赏给提供逐步解决BCM4313工作问题的问题(如果对于类似芯片组也有效,那就很好并应该被记录下来)。此外,请确保您自己测试了答案,而不仅仅是从网络上复制粘贴。谢谢! - htorque
我也有相同的问题。我不知道如何解决它,但一个变通方法是使用旧版本的内核启动Ubuntu。在GNU Grub菜单中,选择“Previous linux versions”(或类似的选项),然后选择一个较旧的内核版本。之后,Ubuntu应该正常启动,并且你的无线网络应该可以在这个旧版本中工作。 - Thomas
你看过Ubuntu社区维基吗?这里有一个适用于Broadcom无线网卡的好的故障排除步骤。谢谢。 - NickTux
我在我的D630笔记本电脑上遇到了同样的问题,我安装了全新的Ubuntu 13.10版本,但无法使用无线网络。 lspci -vnn|grep Network显示: 0c:00.0 网络控制器 [0280]: Broadcom Corporation Bcm4311 802.11b/g WLAN [14e4:4311] (rev 01)iwconfig显示: `eth0 没有无线扩展。lo 没有无线扩展。` - PHP Learner
对于那些想知道如何从lspci -vnn | grep Network命令中输出不含有Network一词的行的人来说,这里是实际输出的样子:03:00.0 网络控制器 [0280]: Broadcom Corporation BCM4322 802.11a/b/g/n 无线局域网控制器 [14e4:432b] - n611x007
在我的情况下,执行lspci -vnn | grep Network命令没有显示任何内容。有什么建议吗?如果我漏掉了什么。我使用的是更新的15.10版本。 - CoDe
在Ubuntu 16.04上,使用BCM4312芯片,打开系统设置->软件和更新->附加驱动程序,选择专有驱动程序。 - Michael Kohne
43个回答

0. 简介和背景

这个答案是基于广大Ubuntu用户的广泛研究成果,他们在与Broadcom相关的几乎所有问题上进行了合作。特别感谢chili555在Ubuntu论坛和本站上对无线设备相关问题提供的帮助,以及其他通过电子邮件、聊天、IRC等方式为测试多种最流行的Broadcom无线网卡驱动程序做出贡献的人(真的非常感谢Chili555,这家伙真懂行)。

总体而言,我们希望提供一个易于理解并涵盖大多数Broadcom网卡/驱动程序的答案。在按照本指南操作后,您需要至少使用另一台设备在Ad-Hoc模式、基础设施模式或两者中进行至少2小时(我实际上建议8小时)的无线连接测试。除了解决驱动程序未安装的问题外,还将解决以下常见问题:

  • 几分钟或几个小时后连接超时
  • 停止搜索其他设备(看不到任何其他设备)
  • 即使AP没有密码,仍然持续要求密码
  • 停止接收/发送流量(需要重新启动才能暂时修复)
  • dmesg错误日志中系统崩溃(链接1)
  • 系统完全冻结(只能按重启/电源按钮)(链接1)
  • 创建大量日志报告以尝试正确配置或连接
  • 通过“附加驱动程序”/“附加硬件”安装失败(链接3)
  • 每隔X秒钟不断连接和断开
  • 在网络管理器上显示已连接但无法接收互联网
  • 尝试多次连接而未能正确完成连接
  • 连接时间过长
  • 从以前的版本升级后(例如:从12.04升级到12.10),停止工作
  • 无线网卡无法打开、启用或禁用(链接2)
  • 无线网卡被硬件阻止
  • 在Launchpad、Ubuntu论坛和Askubuntu中发现更多问题

链接1 - https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1060268
链接2 - https://bugs.launchpad.net/ubuntu/+source/bcmwl/+bug/732677
链接3 - 出现类似于“抱歉,安装此驱动程序失败”的错误。

所以考虑到这一点,以下是我们目前的简化步骤:

1. 确定您拥有的Broadcom无线网卡型号

有数十种Broadcom无线网卡型号,而且似乎每天都会出现更多。找到正确的网络卡驱动程序的关键是所谓的PCI ID(PCI.ID)。要找出您的PCI.ID,我们打开终端,按下CTRL+ALT+T(应该会打开一个带有空白背景的窗口),然后在终端中运行以下命令:

lspci -nn -d 14e4:

如果您使用的是Broadcom无线适配器(上面示例中使用的ID 14e4在大多数情况下是Broadcom无线网卡),您将会得到类似以下的内容:
Broadcom Corporation BCM4306 802.11bgn Wireless Network Adapter [14e4:4320] (rev 03)

在这个示例中,PCI.ID 是 14e4:4320,如方括号 [...] 中所见。在某些情况下,对于一些特殊情况,您还需要版本修订号(如果有)。在这种情况下,版本修订号是 rev 03,如括号 (...) 中所示。因此,在进行此搜索后,您将需要以下内容:
[14e4:4320] (rev 03)

有了这些新的信息,您可以查看下面的表格,并选择适当的方法来安装您的驱动程序。例如,在这种情况下,由于您拥有14e4:4320 rev 03,如果我们在列表中找到显示完全相同的PCI.ID的那个,您将会看到在Ubuntu 18.04或20.04的列中显示了firmware-b43-installer软件包驱动程序。这意味着您只需要安装这个特定的软件包,因为它出现在所有Ubuntu版本的列中。 注意 - 在继续之前,如果您以前安装过任何驱动程序,已经将任何驱动程序文件或配置文件加入黑名单或取消注释,或者对系统进行了任何更改以使驱动程序在以前的尝试中工作,您需要撤销这些更改以便按照本指南操作。我们假设您是从头开始进行此操作,并且没有以任何方式更改系统中的任何配置文件、模块或驱动程序(除了更新系统)。这包括使用apt-get、aptitude、synaptic、dpkg、软件中心或手动编译和安装软件包的任何安装。系统必须从头开始才能正常工作,并避免可能出现的任何冲突,如果之前有其他操作的话。
例如,如果您之前安装了bcmwl-kernel-source软件包,您需要使用清除方法将其删除:
sudo apt-get purge bcmwl-kernel-source

2. 准备系统

如果您刚刚安装了Ubuntu,您需要在安装驱动程序之前构建一个可用软件包的索引,如果您还没有这样做:

sudo apt update

我甚至会进一步更新Ubuntu的PCI.IDs列表。
sudo update-pciids

以防万一,你正在使用的某个新的Broadcom设备的ID刚刚出现。

现在,根据你在上面步骤中找到的PCI.ID,我们在下面的列表中搜索匹配的PCI.ID和安装与之相关的驱动程序的简单正确方法。为了避免任何与图形用户界面相关的问题,我们将使用终端。除非另有说明,否则所有情况都适用此安装过程。安装过程仅通过终端进行,并且在连接到临时有线以太网连接、USB调制解调器或任何可以为您的计算机提供网络访问的方式时进行。在下面的列表中找到正确的软件包后,我们将继续进行安装。

3. 安装软件包(在线)

假设你在上面的搜索中使用了PCI.ID 14e4:4320 rev 03,然后查看下面的表格并发现要安装的正确软件包是firmware-b43-installer(特定于Broadcom)和linux-firmware(包含Broadcom相关驱动程序以及其他类型的驱动程序),那么我们只需在终端中安装这个软件包:

sudo apt install firmware-b43-installer

sudo apt install linux-firmware

然后重新启动
sudo reboot

安装的格式非常简单,只需要:
sudo apt install <PACKAGE_NAME>

在上面的例子中,PACKAGE_NAMEfirmware-b43-installer

BROADCOM 无线电表(更新于2022年12月5日)

PCI.ID              18.04 LTS                        20.04+
------------------------------------------------------------------------------------
14e4:0576           Special Case #1                   UNKNOWN      
14e4:165f           UNKNOWN                           UNKNOWN
14e4:1713           firmware-b43-installer            firmware-b43-installer / linux-firmware      
14e4:4301           firmware-b43-installer            firmware-b43-installer / linux-firmware      
14e4:4306           firmware-b43-installer            firmware-b43-installer / linux-firmware      
14e4:4306 rev 02    firmware-b43-installer            firmware-b43-installer / linux-firmware      
14e4:4306 rev 03    firmware-b43-installer            firmware-b43-installer / linux-firmware      
14e4:4307           firmware-b43-installer            firmware-b43-installer / linux-firmware      
14e4:4311           firmware-b43-installer            firmware-b43-installer / linux-firmware      
14e4:4311 rev 01    firmware-b43-installer            firmware-b43-installer / linux-firmware      
14e4:4312           firmware-b43-installer            firmware-b43-installer / linux-firmware      
14e4:4313           firmware-b43-installer            firmware-b43-installer / linux-firmware              
14e4:4315           firmware-b43-installer            firmware-b43-installer / linux-firmware      
14e4:4315 rev 01    firmware-b43-installer            firmware-b43-installer / linux-firmware
14e4:4318           firmware-b43-installer            firmware-b43-installer / linux-firmware               
14e4:4318 rev 02    firmware-b43-installer            firmware-b43-installer / linux-firmware               
14e4:4319           firmware-b43-installer            firmware-b43-installer / linux-firmware              
14e4:4320 rev 02    firmware-b43-installer            firmware-b43-installer / linux-firmware              
14e4:4320 rev 03    firmware-b43-installer            firmware-b43-installer / linux-firmware           
14e4:4321           firmware-b43-installer            firmware-b43-installer / linux-firmware  
14e4:4322 rev 01    firmware-b43-installer            firmware-b43-installer / linux-firmware
14e4:4324           firmware-b43-installer            firmware-b43-installer / linux-firmware       
14e4:4325           firmware-b43-installer            firmware-b43-installer / linux-firmware      
14e4:4328           firmware-b43-installer            firmware-b43-installer / linux-firmware
14e4:4328 rev 03    bcmwl-kernel-source               bcmwl-kernel-source      
14e4:4329           bcmwl-kernel-source               bcmwl-kernel-source        
14e4:432a           bcmwl-kernel-source               bcmwl-kernel-source        
14e4:432b           bcmwl-kernel-source               bcmwl-kernel-source        
14e4:432c           bcmwl-kernel-source               bcmwl-kernel-source        
14e4:432d           bcmwl-kernel-source               bcmwl-kernel-source       
14e4:4331           firmware-b43-installer            firmware-b43-installer / linux-firmware          
14e4:4331 rev 02    firmware-b43-installer            firmware-b43-installer / linux-firmware          
14e4:4335           firmware-b43-installer            firmware-b43-installer / linux-firmware      
14e4:4350           firmware-b43-installer            firmware-b43-installer / linux-firmware  
14e4:4353           Special Case #1                   UNKNOWN        
14e4:4353 rev 01    Special Case #1                   UNKNOWN                 
14e4:4357           Special Case #1                   UNKNOWN        
14e4:4358           bcmwl-kernel-source               bcmwl-kernel-source
14e4:4359           firmware-b43-installer            firmware-b43-installer / linux-firmware       
14e4:4360           firmware-b43-installer            firmware-b43-installer / linux-firmware    
14e4:4365           firmware-b43-installer            firmware-b43-installer / linux-firmware      
14e4:4365 rev 01    bcmwl-kernel-source               bcmwl-kernel-source      
14e4:43a0           bcmwl-kernel-source               bcmwl-kernel-source
14e4:43a3           UNKNOWN                           firmware-b43-installer / linux-firmware
14e4:43ae rev 02    UNKNOWN                           UNKNOWN     
14e4:43ba rev 01    UNKNOWN                           firmware-b43-installer / linux-firmware
14e4:43b1           bcmwl-kernel-source               bcmwl-kernel-source        
14e4:43b1 rev 03    bcmwl-kernel-source               bcmwl-kernel-source              
14e4:43c3 rev 04    UNKNOWN                           firmware-b43-installer / linux-firmware / Special Case #2                     
14e4:4727           bcmwl-kernel-source               bcmwl-kernel-source        
14e4:4727 rev 01    Special Case #1                   firmware-b43-installer        
14e4:a962           firmware-b43-installer            firmware-b43-installer / linux-firmware      
------------------------------------------------------------------------------------

对于所有情况,始终安装linux-firmware软件包。该软件包将始终与最新的Broadcom驱动程序以及根据驱动程序PCIID可能需要的其他二进制文件保持最新。 特殊情况#1 - 使用bcmabrcmsmac驱动程序组合。所需的固件已默认安装在linux-firmware软件包中。 特殊情况#2 - 对于ASUS PCE-AC88 AC3100,步骤如下:
  1. 下载此文件并解压缩后,将其放入/lib/firmware/brcm目录下
    sudo cp brcmfmac4366c-pcie.bin /lib/firmware/brcm/brcmfmac4366c-pcie.bin
  2. 然后执行sudo nano /etc/rc.local,添加modprobe brcmfmac并保存
  3. sudo reboot
在像联想S10-2这样的硬件上,如果您的无线网卡在尝试连接到一个SSID时出现卡住的情况(一直在尝试连接),那么让它正常工作的替代方法是安装bcmwl-kernel-source软件包(删除与之相关的任何其他已安装的软件包)。有关此无线设备的更多信息,请阅读下面的调试部分。 重要提示 - 2014年9月之后,如果您按照此答案仍然遇到安装正确驱动程序的问题,请尝试firmware-b43-installer软件包和linux-firmware软件包,并通过评论通知我们。发生了一些变化,某些驱动程序只能与此软件包配合使用。在安装之前,请确保系统干净无误。
sudo apt install firmware-b43-installer

sudo apt install linux-firmware

在某些特定情况下,在安装firmware-b43-installer后,您需要移除b43模块,再次启用它甚至进行rfkill解锁。
 sudo modprobe -r b43
 sudo modprobe b43    
 sudo rfkill unblock all  

如果您有一张具有不同pci.id的Broadcom卡,请提出一个新问题。一旦解决,解决方案将被添加到本教程中。

4.安装软件包(离线)

4.1 安装firmware-b43-installer

要离线安装firmware-b43-installer,请参见this answer

4.2 安装bcmwl-kernel-source

对于需要安装bcmwl-kernel-source但没有联网的情况,here是一个关于此的优秀答案。 但基本上按照以下步骤操作:

  1. Ubuntu软件包仓库中搜索所需的软件包。
  2. 确保选择正确的架构(32位、64位等)。
  3. 下载软件包及其相关的依赖包到同一个文件夹中。
  4. 当你拥有所有所需的软件包(以及它们的依赖项)后,进入包含所有软件包的文件夹,并运行sudo dpkg -i *.deb。这将安装该文件夹中的所有软件包。如果出现任何错误,请阅读错误信息并按照提示进行操作。

举个例子,在上述第1点之后,如果你有Broadcom 14e4:43a0,你可以搜索bcmwl-kernel-source软件包,并选择相应的Ubuntu版本(例如我的情况是16.04或Xenial),然后你会进入以下页面:

http://packages.ubuntu.com/xenial/bcmwl-kernel-source

在这个页面上,我会选择相应的架构(32位或64位),但还需要下载该页面上提到的3个软件包依赖项,如下图所示。

enter image description here

在下载所有软件包和依赖项之后,您可以将所有软件包复制到一个文件夹中,并按照上述第4步中提到的方式运行dpkg命令。

注意

在某些计算机上,在执行这些命令之前,您需要在BIOS中禁用安全引导选项。这适用于例如bcmwl-kernel-source已经安装但驱动程序尚未正常工作的情况。您可以通过重新安装或进入BIOS设置来禁用安全引导:

sudo apt-get install --reinstall bcmwl-kernel-source

调试

以下信息是关于解决与无线管理和其他网络设备冲突相关的各种问题的额外材料。请注意,在某些情况下,您需要拥有更新的内核版本,因为每个新版本的内核都会引入新的网络驱动程序,改进现有驱动程序或解决与其相关的错误。

在阅读下面提到的要点之前,请确保在您的Ubuntu系统上启用了所有软件源。要检查,请在终端上运行software-properties-gtk并确保Ubuntu软件选项卡上的所有选项都已启用。

确保无线网卡未被硬件禁用。例如,在某些笔记本电脑上,您需要同时按下Fn + F2
要通过终端配置您的无线设备,我建议使用如何在终端中手动连接和断开网络?
如果您的连接经常中断,一些用户建议将IPv6设置为忽略。只需打开网络管理器(位于顶部面板的网络图标),点击它,然后选择编辑设置。接下来,选择您正在使用的无线连接。现在转到最后一个选项卡,其中提到IPv6设置。在方法字段中选择忽略
如果您的笔记本电脑无法检测到无线网卡,一些用户提到使用rfkill unblock all可以解决问题。其他人只需关闭然后再次打开笔记本电脑上的WiFi开关(此类笔记本电脑上有物理开关)。有关rfkill的更多信息,请阅读rf kill unblock all DOES NOT WORK!
如果您遇到b43-phy0 ERROR: Fatal DMA error / b43-phy0 warning: Forced PIO错误,请执行以下操作:
sudo rmmod b43 sudo modprobe b43 pio=0 qos=0
如果它起作用,那么将其添加到您的RC文件中,这样每次启动时都会执行。如果需要,您可以将PIO更改为1。
- 如果在安装DKMS模块(如Nvidia、Broadcom或其他模块)时出现“所需密钥不可用”的错误,请访问Pilot's Answer Here。 - 如果您的无线网卡无法看到路由器,并且陷入无尽的“正在尝试连接(尝试1/3)”循环中,解决方法可能是正确配置您的路由器或无线SSID设备。

对于所有无线网卡来说,同时考虑您使用的网络设备(路由器、交换机、无线信道和无线频段等)非常重要。有了这些信息,当您陷入困境时,您将能够更好地评估问题的根源所在。一个例子是使用14e4:4315 rev 01 PCIID的联想S10-2。即使安装了正确的驱动程序,用户也会陷入“尝试连接”的循环中。它会看到无线SSID,但在尝试连接时,会进入重新连接的循环。

解决方案是这个特定的无线设备不支持40 Mhz信道,也不支持802.11N。在这种情况下,路由器实际上是强制使用40 Mhz和仅WiFi-N进行广播。当将路由器设置为自动模式和20/40 Mhz信道时,无线网卡正常工作。这是一种在其他情况下也重复出现的情况,因此对网络设备进行适当评估将会有很大帮助。

对于出现重复错误的情况:

ERROR @wl_cfg80211_get_station : Wrong Mac address...

当执行 dmesg 进程时,如果你的无线连接经常断开(每小时或每天多次),问题可能是因为你在一个被用作无线桥接的无线信号范围内(两个路由器共享相同的SSID和连接)。现代路由器具有扩展无线连接的功能,通过提供相同的SSID来实现。你的无线连接可能会断开,因为你可能位于两个路由器之间,而两者之间的信号强度几乎相同。
如果你的连接经常断开,这意味着你几乎处在两个路由器设备中间。为了降低或消除无线设备的断开率,请尽量将自己的位置调整到你的无线网卡只能看到一个路由器,或者至少其中一个路由器的信号强度高于另一个路由器。
还有一些技术可以通过将BSSID设置为你希望连接的路由器的MAC地址,强制无线设备仅连接到特定的路由器。这将强制你的无线设备仅连接到该路由器。

enter image description here

安全启动问题

在某些特定情况下,如果未禁用安全启动,则无论是通过各种DEB软件包的离线模式安装驱动程序,还是通过具有互联网访问权限的apt-get安装驱动程序,都将无法正常工作。

这是因为安全启动拒绝了所需的访问权限,因此驱动程序看起来已经正确安装,但实际上并没有。因此,在非常特殊的情况下,您需要暂时禁用安全启动以使驱动程序正常工作。

Linux固件更新

在其他情况下,寻找并安装最新的Linux固件可能会解决问题。它可以解决与工作卡发生的一些小问题,或者使卡片首次正常工作。

挂起/休眠问题

用户@oligotren在这里提到了一个不错的提示

每次我的4350卡恢复运行时,它都会出现段错误,因此wifi失败。只需指示pm-*命令卸载和加载驱动程序即可解决所有问题!对我来说,修复方法如下:

echo 'SUSPEND_MODULES="brcmfmac"' | sudo tee -a /etc/pm/config.d/config

最后记住,在某些笔记本电脑上按下 Fn + F2 可以解决问题,因为无线网卡可能被禁用了。

非常感谢,这对我很有帮助。'sudo apt-get install --reinstall bcmwl-kernel-source' - Manish
在Debian Jessie上,bcmwl-kernel-source对于 14e4:4360 对我来说很有效。 - Tristan
@TristanT - 做得好!更新的清单。谢谢。 - Luis Alvarado
尽管我严格按照维基百科和您的指示操作,但出于某种原因,b43模块仍然不存在。$ sudo modprobe b43 modprobe: FATAL: Module b43 not found in directory /lib/modules/4.4.0-79-generic 这似乎是一个很简单的问题,但我完全被困住了。如果这应该是一个独立的问题,请原谅... - gcode
嗨 @TGP1994,请为此创建一个新问题,因为我刚在16.04上测试过,它是正常工作的。另外,在你的问题中提供你正在使用的无线网卡以及任何其他信息,以帮助任何愿意回答的人。 - Luis Alvarado
1@LuisAlvarado 好的,谢谢你,对于我试图劫持的行为表示抱歉。无论如何,我的问题最终是因为我缺少一个重要的元包 - 我相信是 linux-image-extras。结果发现该驱动程序在那个特定内核版本的元包中。 - gcode
没有网络连接,就无法简单地安装firmware-b43-installer_019-3_all.deb,因为它会尝试下载这个文件。我将尝试手动按照这个脚本的步骤进行操作... 是否还有其他解决方案? - Atcold
好的,我必须按照这个链接进行操作。我正在更新上面的答案。 - Atcold
@Atcold 朋友,你的工作真是太棒了。 - Luis Alvarado
有没有其他人遇到过这样的问题,适配器在大多数连接上都正常工作,但就是无法共享呢? - jeteon
你们知道在 Fedora 上如何获取 bcmwl-kernel-source 软件包吗? - jayarjo
很抱歉,但是这些步骤都不适用于Dell XPS 13 + Ubuntu 16.x或17.x或18.x。这些指令存在一个进退两难的情况:它们都假设你在无线网络关闭时有网络连接,这意味着你没有在线上。非常奇怪,因为XPS是预装了Ubuntu的... - SLS
@SLS XPS 9350的Ubuntu版本采用了英特尔芯片组,而不是Broadcom芯片组(至少在一段时间内是这样)。这可能是为什么这些说明对您不起作用的原因... - oligofren
@LuisAlvarado 这里没有详细说明的一个解决方案是处理挂起/休眠问题。每次我的4350显卡恢复运行时,都会出现段错误,导致无线网络失效。只需指示pm-*命令卸载和加载驱动程序即可解决所有问题!对我来说,修复方法是:echo 'SUSPEND_MODULES="brcmfmac"' | sudo tee -a /etc/pm/config.d/config - oligofren
还有一个有用的链接:https://joshschertz.com/2017/08/06/Wireless-Issues-with-Ubuntu-on-the-Dell-XPS-13/ - Nic Wortel
2在我的情况下,安装firmware-b43-installer适用于14e4:4727 rev 01。 我的PCI.ID是09:00.0 网络控制器 [0280]: Broadcom Inc. and subsidiaries BCM4313 802.11bgn 无线网络适配器 [14e4:4727] (rev 01) - Niroshan
@Niroshan 谢谢,你用的是哪个Ubuntu版本? - Luis Alvarado
1这是Ubuntu 16.04.5 LTS版本。每次启动机器时,我仍然需要断开并重新连接,但与完全没有连接相比,这只是小问题而已。 - Niroshan
你有没有机会测试18.04版本? - Luis Alvarado
很遗憾,在Ubuntu 18.04全新安装下,这与Broadcom BCM43602无法正常工作。我尝试了此教程中的所有方法,但都没有成功。使用bcmwl-kernel-source后,我的wifi适配器根本无法被检测到,而使用firmware-b43-installer后,适配器可以看到无线网络,但无法连接其中任何一个。在我安装18.04之前,从U盘启动时也存在类似的wifi问题 - 它只能在3次尝试中的2次中工作,并且我必须重新启动才能连接上。在我安装18.04后,wifi工作了6个小时,然后我暂停了我的电脑,之后就没有wifi信号了,令我感到非常沮丧。 - Bridge
听起来像是一个与电源相关的问题。 - Luis Alvarado
2这个答案帮了我很多。我需要的是firmware-b43-installer,但Ubuntu安装程序却为我选择了bcmwl-kernel-source。我不明白如果这个表格已经可以随时查阅,为什么安装程序会选择错误的选项。我的意思是,如果我能在表格中查找,安装程序也应该能做到... - marcus
我有适配器的问题...我的情况是14e4:4727 rev 01...自从最近一次更新以来,我无法看到WiFi网络并连接。以太网是正常的。目前我安装了Broadcom STA。在Windows中,正确的驱动程序是WLAN DW1501...我该怎么解决? - Claudia
你使用的是哪个版本的Ubuntu? - Luis Alvarado
在我的旧MacBook Pro(2010年中期)上,完美地运行在ElementaryOS 5.1上。给了这个老家伙一个新的生命。再次感谢你! - Daywalker
2我在BCM43228 802.11a/b/g/n [14e4:4359]上遇到了很多问题,上面的列表中说我应该使用bcmwl-kernel-source,但它非常卡顿,经常掉线。安装firmware-b43-installer解决了这个问题,现在WiFi运行得非常好。 - Jakuje
1我仍然在我的4366c Rev 04上遇到一些问题,但是这个答案多年来都很有帮助,很棒能看到它仍然被维护。注意 - 现在应该很准确,但如果你正在运行20.04 focal,并且安装了最新的Linux固件,那么4366c.bin已经包含在内,所以不需要下载特例#2。 - noybman
这是个好消息,@noybman。谢谢你提供的信息。 - Luis Alvarado
这是行号:14e4:43c3 版本 04 - noybman
1非常好的指南!我的pci.id在列表中没有显示出来 - BCM43142在Ubuntu 14.04(4.4.0-148-generic)上运行。按照这些步骤,我完成了90%的工作。最后一件事我需要做的是禁用安全启动,重新启动,然后一切都正常工作了https://wiki.ubuntu.com/UEFI/SecureBoot/DKMS(关闭安全启动)。 - IT de Villiers
嗨 @IgDV,你的卡片的PCI.ID是什么?能否请运行上述命令来查看它是哪一个。 - Luis Alvarado
1经过几个小时的调试,我发现我的戴尔Inspiron笔记本的无线网卡被硬件禁用了。只需按下Fn + F2键就解决了问题!:D https://bippermedia.com/how-to-turn-on-enable-wireless-for-dell-inspiron/ - NicoKowe
我有一张14e4:43a3的网卡。有人知道我应该怎么做吗?firmware-b43-installer对我没用。 - pigeonburger
对于那些需要在 20.10 版中安装 bcmwl-kernel-source 软件包的用户,这里是我必须安装的所有软件包列表:bcmwl-kernel-source、binutils、binutils-common、binutils-x86-64-linux-gnu、cpp_10.2.0-1ubuntu1、dkms_2.8.3-4、dpkg-dev、gcc-10、gcc、libasan6、libatomic1、libbinutils、libc6-dev、libc-dev-bin、libcrypt-dev、libctf0、libctf-nobfd0、libgcc-10-dev、libitm1、liblsan0、libnsl-dev、libtirpc-dev、libtsan0、libubsan1、linux-libc-dev、make 和 rpcsvc-proto。 - krumpelstiltskin
我该怎么处理?4322 rev 1?这两个驱动程序似乎都不起作用。04:00.0 网络控制器 [0280]:Broadcom Inc.和子公司BCM4322 802.11bgn无线网络控制器[14e4:4322](rev 01) - Daniel
@Daniel 你能在这里发布一下你的网卡的全名吗?谢谢你提供的PCIID。 - Luis Alvarado
@LuisAlvarado 我在askubuntu.com上提了一个问题,链接是https://askubuntu.com/questions/1438226/broadcom-4322-rev-01-unable-to-find-suitable-driver,我在那里更加详细地说明了情况。 - Daniel
sudo iwconfig wlp3s0 txpower 10dBm 这是最后一步所需的。 - yajnesh
1安装了22.04.1 LTS后,我在MacBookPro10,2上遇到了这个问题,它的4331型号在安装过程中WIFI是正常工作的。通过链接主题中提供的离线、手动安装方法,帮助了我解决了这个问题。 - Matt Sephton

我用Broadcom bcm4311驱动程序解决了我的问题。

我采取的修复步骤(我从nm_geo on ubuntu论坛中借鉴了这种方法):

(您可能需要安装synaptic或您喜欢的软件包管理器。)

  • 在终端上输入以下命令来卸载bcmwl-kernel-source软件包:

    sudo apt-get remove bcmwl-kernel-source
    
  • 确保已安装firmware-b43-installerb43-fwcutter软件包(当然您需要通过其他方式连接到互联网):

    sudo apt-get install firmware-b43-installer b43-fwcutter
    
  • 在终端中输入以下命令:

    cat /etc/modprobe.d/* | egrep 'bcm'
    

    (您可能想要复制这个)并查看是否有“blacklist bcm43xx”这个词。

  • 如果有的话,输入cd /etc/modprobe.d/然后输入sudo gedit blacklist.conf

    在这一行前面加上#blacklist bcm43xx

    然后保存文件(我在终端上收到了无法保存的错误消息,但实际上它确实保存成功了)。

  • 重新启动计算机

在我完成上述操作后,无线网络需要通过rfkill进行解锁: 如何解锁rfkill中列出的内容?

我在我的D630笔记本上按照上述步骤进行了所有操作,但没有成功!重启后,rfkill list all命令没有显示我的无线设备,只显示蓝牙设备:0: hci0: Bluetooth Soft blocked: no Hard blocked: no 但是仍然无法连接到无线网络! - PHP Learner
按照这个步骤一步一步来,真的有效!正如Luis Alvarado的回答提到的,14.04版本确实带有一些驱动程序(至少对于我的电脑是这样),但是使用这种方法安装的速度大约只有一半好:)所以我想应该表示感谢。 - Eduard Luca
在这行前面加上#:blacklist bcm43xx。这会帮助我的无线网络。谢谢! - Filipe Manuel
谢谢!在Ubuntu 15.10上,把blacklist bcm43xx这行注释掉对我有帮助。我的Dell Vostro 3700 ([14e4:4315] (rev 01), 坏样例)现在正常了。 - brownian
完成以下步骤,在 Acer 上为 14e4:4311 rev 01 的设备上运行,使用的是 lubuntu-16.10-desktop-amd64 - jave.web

4313驱动程序

让我们简单列举一下Broadcom芯片组的驱动程序以及它们与4313的兼容性:

  • Broadcom STA. 建议通过其他驱动器进行安装。古老的、糟糕的、绝对垃圾的东西。跳过它。如果你已经安装了它,卸载掉。

  • b43-fwcutter。很多人看到"广泛通信"就会选择这个驱动器,但它不兼容4313(比较新的)。如果你安装了它,清除掉。

  • ndiswrapper。比STA驱动还要脆弱。我设法让它工作了大约10分钟,然后一切都崩溃了。

  • brcm80211(也称为brcmsmac)。这是一个(相对)新的驱动器,最近添加到了Ubuntu(自从内核添加了该驱动器以来)。这应该工作得很好,并且在最新版本的Ubuntu中(Natty和Oneiric)应该“只需工作”。这就是你要找的那个驱动器。为4313使用此驱动器

    如果你没有运行Natty或Oneiric,你的内核可能没有这个驱动器。你需要至少运行2.6.27,我建议至少使用2.6.28(你可以通过运行uname -r命令来检查你的内核版本)。

    如果你的版本落后,我建议升级,但为了快速修复,你可以查看主线内核并尝试其中之一。安装内核包通常不会有风险,因为你通常可以在grub引导界面中回退到旧版本。

你知道如果你运行lsmod | grep brc并且在输出中看到brcm80211brcmsmac,那么你可能已经找到了正确的驱动程序。
通过黑名单实现成功
如果你没有看到这些内容,那么可能有其他东西被加载进来了,你需要将其加入黑名单。如果你能够看到已经加载的内容,那就很好了,编辑/etc/modprobe.d/blacklist.conf文件,并添加类似以下的行:
blacklist b43
blacklist b43legacy
blacklist bcma
blacklist ndiswrapper

如果你有另一个可能使用冲突驱动程序的无线设备,那么显然你需要小心,因为如果你将其列入黑名单,那么你也会破坏它 :)

2brcmsmac在技术上是可以工作的,但速度和信号强度非常糟糕。 - pbfy0
太好了,这对我有帮助! - Pavel S.
我有那个,但似乎无法捕捉到设置在11以上频道的调制解调器... 这是它显示的内容:http://paste.ubuntu.com/24360690/ - Giorgio Vitanza
我之所以这么说是因为我可以通过Windows连接到我的调制解调器,但不能通过Ubuntu连接。所以,肯定是驱动程序的问题,不允许Ubuntu连接到所有类型的连接,除了那些在11以上的信道上...我以前遇到过另一个调制解调器的这个问题,我通过切换到11号信道解决了它,但我希望我的驱动程序也能够捕捉到设置在不同信道上的调制解调器,就像在Windows中一样。 - Giorgio Vitanza

这是Broadcom无线芯片的常见问题。
在终端中运行以下命令:
sudo apt-get remove --purge bcmwl-kernel-source

如果命令成功运行,请尝试打开无线功能(使用硬件按键)。
如果不起作用或者命令执行失败并提示没有这个模块,您可以尝试打开一个终端窗口,并键入以下内容。
dmesg | grep b43

如果你看到像这样的线条:
[   17.453421] b43-phy0 ERROR: Firmware file "b43/ucode15.fw" not found
[   17.453427] b43-phy0 ERROR: Firmware file "b43-open/ucode15.fw" not found
[   17.453432] b43-phy0 ERROR: You must go to http://wireless.kernel.org/en/users/Drivers/b43#devicefirmware and download the correct firmware for this driver version. Please carefully read all instructions on this website.
[   17.680077] b43-phy0: Loading firmware version 478.104 (2008-07-01 00:50:23)
[   17.993040] b43-phy0: Radio hardware status changed to DISABLED

然后您可能缺少Broadcom卡的固件。打开软件中心,搜索并安装以下软件包,
  • b43-fwcutter
  • firmware-b43-lpphy-installerer
重新启动一次。现在无线应该可以正常工作了。

1只是为了更新到16.04版本,没有叫做 firmware-b43-lpphy-installerer 的软件包,任何使用这种方法的人都应该安装 b43-fwcutterfirmware-b43-installer - HVNSweeting

感谢您宝贵的回复。
这个问题已经通过以下步骤解决:
1. 我从“附加驱动”中移除了Broadcom STA无线驱动程序。 2. 在Ubuntu软件中心中输入, 3. 安装“用于b34驱动程序的安装程序包”(firmware-b43-installer)。
现在无线网络正常工作。您不需要按照上述步骤操作。只需安装“B43驱动程序”即可。

通过与bcmwl-kernel-source一起安装,对我很有效。 - Rahil Wazir

我总是建议使用终端来删除并重新安装Broadcom驱动程序。
在终端中输入以下命令。
sudo apt-get purge bcmwl-kernel-source

那么

sudo apt-get install bcmwl-kernel-source

这将重新构建您的驱动程序。

告诉我们你的进展如何

您可以重新启动计算机,或者如果这很麻烦,请在终端中输入以下命令,这将“打开”您的无线网络

sudo modprobe -r b43 ssb wl

然后
sudo modprobe wl 

很不幸,这对我来说不起作用。在显示器的右上角我看到“无线已禁用” :( 不过我已经勾选了“启用无线”。 - Justas
现在在运行命令sudo lshw -C network之后,我得到了以下信息: *-network DISABLED 描述:无线接口 产品:BCM4313 802.11b/g/n 无线局域网控制器 厂商:Broadcom Corporation 物理标识:0 总线信息:pci@0000:04:00.0 逻辑名称:eth1 版本:01 序列号:ac:81:12:00:76:22 宽度:64位 时钟:33MHz - Justas
我有一台64位的机器,但运行的是Ubuntu 11.04的32位版本。这可能是我的无线问题的原因吗? - Justas
太棒了,在我使用的Mint 17 64位系统上,对BCM43142起作用。谢谢! - Karl Adler
太好了,很高兴这还有效。 - andybleaden
更新到Ubuntu 15.04后,对我来说很有效。真是让我开心! - Webdevilopers
对我来说,在Ubuntu 21.04上运行良好,非常感谢。 - Fennec
12022年了,11年过去了,这个方法仍然有效!这个答案成功地修复了MacBookAir7,1 2015型号在Pop_OS! 22.04(以及可能适用于Ubuntu 22.04)上的Wi-Fi问题。无线芯片是Broadcom BCM4360。 - Lars Blumberg
谢谢反馈!你知道吗,最后我弄明白了,买一个替代的无线网卡更便宜,但至少旧的修复方法还能用! - undefined

安装firmware-b43-installer软件包。首先从“附加驱动程序”中卸载专有驱动程序。
然后在终端中执行以下命令:
sudo apt-get install firmware-b43-installer

刚重启后,对我来说运行得非常好。

1这个解决方案对我来说不起作用。 - Parag Bafna

终于我自己解决了这个问题,但是我不确定具体是怎么解决的。我本来打算使用从broadcom.com获取的源代码和http://www.broadcom.com/docs/linux_sta/README.txt中提供的指令来编译驱动程序,但在指令的这一步骤上:
在Ubuntu上,你需要安装头文件和工具。尝试以下命令: # apt-get install build-essential linux-headers-generic # apt-get build-dep linux
build essential和headers已经安装好了。我只是运行了sudo apt-get build-dep linux命令,然后,哇!在重新启动后,我的连接速度恢复正常了。
我不确定我具体做了什么。我猜它可能是构建内核或驱动程序的依赖关系(或两者都有)。BCM驱动程序需要这一步骤,而jockey自动配置却因某种原因忽略了它。
无论如何,问题已经解决了。

有时候,附加驱动程序工具无法安装Broadcom STA无线驱动程序。当出现这种情况时,首先检查您的卡是否确实支持STA驱动程序,为此,请打开终端窗口(ctrl-alt-t)并运行以下命令。
lspci -nn | grep -i BCM

输出将包括无线网卡型号,请确保它在以下列出的型号之中。

STA驱动支持的Broadcom无线网卡:

BCM4311、BCM4312、BCM4313、BCM4321、BCM4322、BCM43224、BCM43225、BCM43227、BCM43228、BCM43142

如果支持该网卡,则尝试手动安装驱动程序。打开终端窗口(Ctrl+Alt+T),然后运行以下命令:

sudo apt-get install bcmwl-kernel-source

您可能需要在此时重新启动。

据我所了解,为了对此进行一些系统化,有四个驱动程序系列可供选择:
1. 开源的b43来自[b43m项目][1],可在[Linux内核][2]中使用, 2. 开源的brcmsmac/brcmfmac,也可在[kernel][3]中使用, 3. 通过[ndiswrapper][4]使用Windows库, 4. [Broadcom][5]自己的Linux库(STA)[6]。
这些链接还提供了驱动程序和支持的芯片组列表的参考信息。
为了明确引用不同的ID,请确保在继续阅读之前先参考上述STA链接,并与您的进行比较:
lspci -nn | grep Network | grep "\[....:....\]"

这是一个关于4313的例子(来自链接#6):
BRCM Product Name   |   PCI Vendor ID | PCI Product ID  |  Dell Device ID

4313 2.4 Ghz      |  0x14e4 | 0x4727 |      Dell 1501

除了驱动程序,您还需要固件firmware-b43-installer下面的描述已应用于STA驱动程序,但是在此之前编写。 尽管Ubuntu旨在为每个人提供多功能、美观和易于使用的体验,但软件包仍然容易出现依赖错误。看,安装驱动程序和其他系统组件时,尽可能获取详细的反馈是合理的,即手动或半自动地执行此操作(apt-get),避免使用那些图形界面安装程序。
我也遇到了4313相同的问题。让我提供一个直接而部分非分析性的解决方案:
  • 把你电脑上所有的STA相关内容都删除掉

    sudo apt-get purge bcmwl-kernel-source broadcom-sta-common broadcom-sta-source
    
  • 手动重新安装:

    sudo apt-get install bcmwl-kernel-source broadcom-sta-common broadcom-sta-source
    
  • 查看输出信息。我遇到了一个比较有趣的双行提示:

    正在为 x86_64 架构进行编译 由于当前运行的内核缺少内核源代码,所以跳过了为该内核构建模块。

  • 在这种情况下,我假设经常发生,因为(1)固有的依赖关系没有解决,(2)升级时wl接口中断(可能涉及内核更新),在这种情况下,您只需执行以下两个步骤,我假设您不需要重新安装WiFi驱动程序源代码:
    4. 检查您当前的内核版本,方法如下(第三个条目): ``` uname -r ```
    5. 安装适当的 Linux 内核头文件,对于我的情况是: ``` sudo apt-get install linux-headers-generic ```
    在执行此命令后,您应该看到以下内容(由于STA WiFi驱动程序源文件在安装过程中无法编译而被推迟):
    Setting up linux-headers-3.5.0-17-generic (3.5.0-17.28) ...
    Examining /etc/kernel/header_postinst.d.
    run-parts: executing /etc/kernel/header_postinst.d/dkms 3.5.0-17-generic /boot/vmlinuz-3.5.0-17-generic
     * Running DKMS auto installation service for kernel 3.5.0-17-generic                                                                                                                    
     *  bcmwl (5.100.82.112+bdcom)...                                                                                                                                                        bcmwl (5.100.82.112+bdcom): Installing module...
    

    我不确定负责软件包的人是否会看到这个。不过,使用Gentoo多年来,我已经习惯了它冗长的输出和可能看起来不必要的颜色和格式。你们应该在apt-get例程中添加格式和颜色,这样更容易理解可能出错的地方,尤其对于新手用户来说。还有,添加头文件依赖性,之后可以将它们删除 - 当然,在内核更改后你需要重新构建模块
    希望这能有所帮助,但我谨慎地不将上述方法一般化以解决大规模问题。试试看吧,如果有效,太棒了;如果无效,还有很多其他解决方案,它们明显更具分析和专业性。
    我也偶然发现了这些答案(带有一个勾)
    lspci -nn | grep Network
    

    对于pci.id 14er:4727(在我的情况下): 在Dell Latitude E6230上使用Ubuntu 12.10进行软件更新后无法使用无线网络如何让Acer Npilfy 802.11 (BCM43225)无线网卡工作?是指前者。
    而且我还错过了Ubuntu在软件包中提供了一个链接,用于查看当前安装和运行的内核和头文件版本,以避免定义内核版本的问题。

    以下是更多信息:http://www.howopensource.com/2012/05/install-broadcom-sta-b43-wireless-driver-in-ubuntu-12-04-11-10-11-04/,http://www.howopensource.com/2012/10/install-broadcom-sta-wireless-driver-in-ubuntu-12-10-12-04/,http://www.howopensource.com/2012/10/install-broadcom-b43-legacy-wireless-driver-in-ubuntu-12-10-12-04/ - Jim Rogers
    这里有两个错误报告:https://bugs.launchpad.net/ubuntu/+source/bcmwl/+bug/476038,https://bugs.launchpad.net/ubuntu/+source/bcmwl/+bug/1079201。 - Jim Rogers
    看一下这个链接:http://askubuntu.com/a/60395/108266 - Jim Rogers
    很抱歉,我目前每篇文章只能发布2个链接。 [1]: http://bcm43xx.berlios.de/?go=devices [2]: http://wireless.kernel.org/en/users/Drivers/b43 [3]: http://wireless.kernel.org/en/users/Drivers/brcm80211 [4]: http://en.wikipedia.org/wiki/NdisWrapper [5]: http://www.broadcom.com/docs/linux_sta/README.txt [6]: http://www.broadcom.com/support/802.11/linux_sta.php - Jim Rogers