![0. 介绍和背景](https://linux22.com/image/806716/0.%20%E4%BB%8B%E7%BB%8D%E5%92%8C%E8%83%8C%E6%99%AF.png)
我在为 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
0. 介绍和背景
此答案基于多位 Ubuntu 用户所做的广泛研究,他们共同研究了几乎所有与 Broadcom 相关的问题。特别感谢辣椒555他曾在 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 - 出现类似“抱歉,该驱动程序安装失败”的错误。
考虑到这一点,我们现在只需 3 个步骤就可以简化以下内容:
1. 了解您拥有的 Broadcom 无线网卡类型
Broadcom 无线网卡有几十种,而且似乎每天都会出现更多。找到任何网卡正确驱动程序的关键是所谓的PCI 编号(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如括号内所示 [...]。在某些情况下,您还需要修订版本(如果出现)以应对某些特殊情况。在这种情况下,修订版本是修订 03如末尾的括号 (...) 中所示。因此,搜索后您需要的是:
[14e4:4320] (rev 03)
有了这些新信息,您可以查看下表并选择适当的方法来安装驱动程序。例如,在这种情况下,由于您有14e4:4320 修订版 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.ID 列表:
sudo update-pciids
以防万一您正在使用的特定新 Broadcom 设备的 ID 刚刚出现。
现在,使用您在上述步骤中找到的 PCI.ID,我们在下面的列表中搜索以找到匹配的 PCI.ID 以及以简单正确的方式安装与其关联的驱动程序的方法。将使用终端来避免任何与 GUI 相关的问题。这适用于所有情况,除非另有说明。安装过程仅通过终端完成,并且同时通过临时有线以太网连接或 USB 调制解调器或任何可能的方式连接到互联网,以使您的 PC 暂时可以访问互联网。在您在下面的列表中找到正确的包后,我们将继续安装。
3. 安装软件包(在线)
假设您使用 PCI.ID14e4:4320 修订版 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>
在上面的例子中,包裹名字是firmware-b43-installer
。
BROADCOM 无线表(2023 年 6 月 14 日更新)
PCI.ID 20.04+ LTS
------------------------------------------------------------------------------------
14e4:0576 Special Case #1
14e4:165f UNKNOWN
14e4:1713 firmware-b43-installer/linux-firmware
14e4:4301 firmware-b43-installer/linux-firmware
14e4:4306 firmware-b43-installer/linux-firmware
14e4:4306 rev 02 firmware-b43-installer/linux-firmware
14e4:4306 rev 03 firmware-b43-installer/linux-firmware
14e4:4307 firmware-b43-installer/linux-firmware
14e4:4311 firmware-b43-installer/linux-firmware
14e4:4311 rev 01 firmware-b43-installer/linux-firmware
14e4:4312 firmware-b43-installer/linux-firmware
14e4:4313 firmware-b43-installer/linux-firmware
14e4:4315 firmware-b43-installer/linux-firmware
14e4:4315 rev 01 firmware-b43-installer/linux-firmware
14e4:4318 firmware-b43-installer/linux-firmware
14e4:4318 rev 02 firmware-b43-installer/linux-firmware
14e4:4319 firmware-b43-installer/linux-firmware
14e4:4320 rev 02 firmware-b43-installer/linux-firmware
14e4:4320 rev 03 firmware-b43-installer/linux-firmware
14e4:4321 firmware-b43-installer/linux-firmware
14e4:4322 rev 01 firmware-b43-installer/linux-firmware
14e4:4324 firmware-b43-installer/linux-firmware
14e4:4325 firmware-b43-installer/linux-firmware
14e4:4328 firmware-b43-installer/linux-firmware
14e4:4328 rev 03 bcmwl-kernel-source
14e4:4329 bcmwl-kernel-source
14e4:432a bcmwl-kernel-source
14e4:432b bcmwl-kernel-source
14e4:432c bcmwl-kernel-source
14e4:432d bcmwl-kernel-source
14e4:4331 firmware-b43-installer/linux-firmware
14e4:4331 rev 02 firmware-b43-installer/linux-firmware
14e4:4335 firmware-b43-installer/linux-firmware
14e4:4350 firmware-b43-installer/linux-firmware
14e4:4353 Special Case #1
14e4:4353 rev 01 Special Case #1
14e4:4357 Special Case #1
14e4:4358 bcmwl-kernel-source
14e4:4359 firmware-b43-installer/linux-firmware
14e4:4360 firmware-b43-installer/linux-firmware
14e4:4365 firmware-b43-installer/linux-firmware
14e4:4365 rev 01 bcmwl-kernel-source
14e4:43a0 bcmwl-kernel-source
14e4:43a0 rev 03 Special Case #3
14e4:43a3 firmware-b43-installer/linux-firmware
14e4:43ae rev 02 UNKNOWN
14e4:43ba rev 01 firmware-b43-installer/linux-firmware
14e4:43b1 bcmwl-kernel-source
14e4:43b1 rev 03 bcmwl-kernel-source
14e4:43c3 rev 04 firmware-b43-installer/linux-firmware/Special Case #2
14e4:4727 bcmwl-kernel-source
14e4:4727 rev 01 Special Case #1/firmware-b43-installer
14e4:a962 firmware-b43-installer/linux-firmware
------------------------------------------------------------------------------------
对于所有情况,linux-firmware
如果该软件包是上表中针对特定 Broadcom 卡的选项,则始终安装该软件包。这将始终与最新的 Broadcom 驱动程序以及驱动程序 PCIID 可能需要的其他二进制文件保持同步。
特殊情况 #1- 使用bcma
和brcmsmac
驱动程序组合。所需的固件默认安装在包中linux-firmware
。
特殊情况 #2- 为了华硕 PCE-AC88 AC3100步骤如下:
- 下载此文件解压后放入/lib/firmware/brcm
sudo cp brcmfmac4366c-pcie.bin /lib/firmware/brcm/brcmfmac4366c-pcie.bin
- 然后
sudo nano /etc/rc.local
加modprobe brcmfmac并保存 sudo reboot
特殊情况 #3- 对于在 Apple Macbook Pro 2013 上找到的 14e4:43a0 rev 03,您需要执行以下步骤:
通过执行以下操作下载 bcmwl-kernel-source 包:
sudo apt install bcmwl-kernel-source
/etc/rc.local
像这样创建或编辑文件:sudo nano /etc/rc.local
将以下内容添加到 rc.local 文件:
#!/bin/bash modprobe -r b44 b43 b43leacy ssb brcmsmac bcma modprobe -rf wl modprobe -vv wl
保存 rc.local 文件并重启。这将修复重启后卡无法工作的问题。
在 Lenovo 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
如果您的 Broadcom 卡具有不同的 pci.id,请提出新问题。一旦解决,解决方案将添加到此操作指南中。
4. 安装软件包(离线)
4.1 安装firmware-b43-installer
要firmware-b43-installer
离线安装,请参阅这个答案。
4.2 安装bcmwl-kernel-source
对于需要安装bcmwl-kernel-source
但处于离线状态的情况,这里是一个很好的答案。但基本上按照以下步骤操作:
- 在中搜索包Ubuntu 软件包存储库
- 确保选择了正确的架构(32 位、64 位等)。
- 下载包和相关的依赖包放在同一个文件夹中。
- 当您拥有所有需要的软件包(及其依赖项)时,继续转到包含所有软件包的文件夹并运行
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 个包依赖项,如下图所示:
下载所有包和依赖项后,您可以继续将所有包复制到单个文件夹并运行dpkg
上述步骤 4 中提到的命令。
笔记
在某些计算机中,在执行命令之前,您需要停用 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 不起作用!如果你正在获得b43-phy0 错误:致命 DMA 错误 / b43-phy0 警告:强制 PIO请执行下列操作:
sudo rmmod b43 sudo modprobe b43 pio=0 qos=0
如果有效,则将其添加到您的 RC 文件中,以便每次启动时都会执行。如果需要,您可以将 PIO 更改为 1。
如果你正在所需密钥不可用当安装 DKMS 模块(如 Nvidia、Broadcom 或其他)时,你可以访问飞行员的答案在这里
如果您的无线网卡可以看见/看不见路由器,并陷入无休止的“尝试连接(尝试 1/3)”循环,解决方案可能是正确配置您的路由器或无线 SSID 设备。
对于所有无线网卡,考虑您使用的网络设备(路由器、交换机、无线信道和无线频段等)也非常重要。有了这些信息,当您遇到死胡同时,您将能够更好地评估问题的根源。例如,联想 S10-2 使用14e4:4315 修订版 01PCIID。即使安装了正确的驱动程序,用户最终也会陷入“尝试连接”循环。它会看到无线 SSID,但在尝试连接时,它会进入重新连接循环。
解决方案是,此特定无线设备不支持 40 Mhz 通道,也不支持 802.11N。在这种情况下,路由器实际上是以强制 40 Mhz 进行广播,并且仅在 WiFi-N 上进行广播。当路由器设置为自动模式和 20/40 Mhz 通道时,无线网卡工作正常。这种情况在其他情况下也会重复出现,因此对网络设备进行适当的评估将大有帮助。
对于重复的情况:
错误@wl_cfg80211_get_station:错误的 Mac 地址...
当dmesg
您执行某项操作时,无线连接经常断开(每小时或每天几次),问题可能是您处于用作无线桥接器的无线信号中(2 个路由器共享相同的 SSID 和连接)。现代路由器可以通过提供相同的 SSID 来扩展无线连接,因此可能会发生这种情况。您的无线连接可能会断开,因为您可能位于两个路由器之间,并且两者之间的信号强度几乎相同。
如果您的连接经常中断,则意味着您几乎处于两个路由器设备的中间。要降低或消除无线设备的中断率,请尝试将自己置于无线网卡只能看到一个路由器或至少一个路由器的信号强度高于另一个路由器的位置。
还有一些技术可以强制无线设备仅连接到特定路由器,方法是将 BSSID 设置为您要连接的路由器的 MAC 地址。这将强制您的无线设备仅连接到它。
安全启动问题
在某些特定情况下,如果未禁用安全启动,则安装驱动程序(无论是通过各种 DEB 包以离线模式安装还是通过具有互联网访问的 apt-get 安装)都将无法进行。
这是因为安全启动拒绝了所需的访问,因此驱动程序看起来好像已正确安装,但实际上并未正确安装。因此,对于非常特殊的情况,您需要暂时禁用安全启动才能使驱动程序正常工作。
Linux 固件更新
在其他情况下寻找并安装最新的 Linux 固件可以解决问题。要么解决正在工作的卡上发生的小问题,要么使卡首次正常工作。
挂起/休眠问题
用户@oligotren 在这里提到了一个不错的建议
每次我的 4350 卡恢复运行时,它都会发生段错误,因此 wifi 会失败。只需指示 pm-* 命令卸载和加载驱动程序即可解决所有问题!对我来说,修复方法是:
echo 'SUSPEND_MODULES="brcmfmac"' | sudo tee -a /etc/pm/config.d/config
最后请记住,在某些笔记本电脑上按Fn+F2可以解决问题,因为无线网卡可能被禁用。
答案2
我解决了 Broadcom bcm4311 驱动程序的问题。
我修复此问题的步骤(我从Ubuntu 论坛上的 nm_geo):
(您可能需要安装synaptic
您最喜欢的包管理器。)
bcmwl-kernel-source
通过在终端上发出以下命令来卸载该软件包:sudo apt-get remove bcmwl-kernel-source
确保
firmware-b43-installer
和b43-fwcutter
包已经安装(当然你还需要通过其他方式上网):sudo apt-get install firmware-b43-installer b43-fwcutter
在终端中输入:
cat /etc/modprobe.d/* | egrep 'bcm'
(您可能想要复制此内容)并查看是否存在术语“黑名单 bcm43xx”。
如果是,请输入,
cd /etc/modprobe.d/
然后sudo gedit blacklist.conf
#
在该行前面放置一个:blacklist bcm43xx
然后保存文件(我在终端中收到有关无法保存的错误消息,但实际上它确实保存正确)。
重启
完成上述操作后,必须使用 rfkill 解除无线阻断: 如何解除对 rfkill 中列出的某些内容的阻止?
答案3
4313 驱动程序
让我们列举一下 Broadcom 芯片组的驱动程序以及它们如何与 4313 配合使用:
博通 STA。由附加驱动程序建议。旧。糟糕。绝对垃圾。跳过它。如果您已经安装了它,请将其删除。
b43-fwcutter。很多人看到“Broadcom”就跳到这个,但它与 4313(较新)不兼容。如果您已安装它,请清除它。
ndiswrapper。比 STA 驱动程序更不稳定。我设法让它工作了大约 10 分钟,然后一切都崩溃了。
brcm80211又名韓國。这是一个(相对较)新的驱动程序,最近添加到 Ubuntu(因为驱动程序已添加到内核)。这应该运行良好,并且(在最新版本的 Ubuntu、Natty 和 Oneiric 中)应该“正常工作”。这是你要找的机器人。 将此驱动程序用于 4313。
如果您没有运行 Natty 或 Oneiric,您的内核可能没有此驱动程序。您至少需要运行 2.6.27,我建议最低版本为 2.6.28(您可以通过运行来检查您使用的是什么
uname -r
)。如果你的版本落后了,我建议你升级,但为了快速修复,你可以看看主线内核并尝试其中之一。安装内核包是很少这是一件很危险的事情,因为您通常可以使用 grub 启动屏幕恢复到旧版本。
lsmod | grep brc
如果您运行时看到brcm80211
或brcmsmac
在输出中,您就知道您可能使用了正确的驱动程序。
将你的成功之路列入黑名单
如果您没有看到该内容,则表示已加载了其他内容,您需要将其列入黑名单。如果您可以看到已加载的内容,那就太好了,编辑/etc/modprobe.d/blacklist.conf
并开始添加以下行:
blacklist b43
blacklist b43legacy
blacklist bcma
blacklist ndiswrapper
如果您有另一个无线设备可能正在使用冲突的驱动程序,那么您显然需要小心,因为如果您将其列入黑名单,您也会破坏那个:)
答案4
感谢您的宝贵回复。
通过以下步骤解决了这个问题:
- 我从附加驱动程序。
- 输入
bcm
Ubuntu 软件中心, - 安装“b34 驱动程序固件安装程序包”(firmware-b43-installer)
现在无线连接已经可以正常工作了。您无需按照上述步骤操作。安装“B43 驱动程序”即可实现无线连接。