问题描述
我在为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.
注:每当新信息添加并确认工作时,下面的答案都会更新。
最佳解决办法
0.介绍和背景
这个答案基于各种Ubuntu用户所做的广泛研究,这些用户几乎在与Broadcom有关的所有问题上一起工作。特别感谢chili555,他在Ubuntu论坛和本网站上帮助了许多与无线设备相关的问题,以及其他通过E-Mail,聊天室,IRC等进行了贡献的人员测试各种驱动程序以及几种最流行的Broadcom无线卡(巨大真的感谢Chili555,这个人知道他的东西)。
总而言之,我们想提供一个易于遵循的答案,并覆盖了大多数Broadcom卡/驱动程序。遵循本指南后,您需要使用Ad-Hoc模式,基础架构模式或两者中的其他设备测试您的无线连接至少2小时(实际上我推荐8小时)。将解决的常见问题(除驱动程序未安装)是:
-
连接在几分钟或几小时后超时
-
停止搜索其他设备(没有看到任何其他设备)
-
即使在AP没有的情况下也要求密码
-
停止任何接收/传输流量(需要重启以临时修复)
-
在日志中使用dmesg错误崩溃系统(下面的链接1)
-
系统完全冻结(您只能按重新启动/电源按钮)(链接1下方)
-
创建巨大的日志报告,试图正确配置或连接
-
通过其他驱动程序/附加硬件安装时失败(下面的链接3)
-
每隔X秒连续连接和断开连接
-
在网络管理器上显示连接但未接收Internet
-
尝试连接多次而未正确完成连接
-
连接时间太长
-
从以前的版本升级(例如:12.04到12.10)后,它停止工作
-
无线网卡无法打开,启用或禁用(下面的链接2)
-
硬件阻止无线网卡
-
在Launchpad,Ubuntu Forum和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,如在Brackets […]里面看到的那样。在某些情况下,对于一些特殊情况,您还需要修订版本(如果出现)。在这种情况下,修订版本是rev 03,如最后的圆括号(…)所示。所以在搜索之后你需要什么是:
[14e4:4320] (rev 03)
有了这些新信息,您可以在下表中查找并选择适当的方法来安装驱动程序。例如,在这种情况下,因为你有14e4:4320 rev 03,如果我们从列表中看到显示完全相同PCI.ID的列表,你会看到在Ubuntu 12.04,13.10或14.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调制解调器连接到互联网,或者任何可以让您的电脑在Internet上访问的方式。在下面的列表中找到正确的包后,我们继续进行安装。
3.安装包装(在线)
假设您使用了以上搜索中找到的PCI.ID 14e4:4320 rev 03,然后查看了下表,发现要安装的正确软件包是firmware-b43-installer
,然后我们继续简单地将此软件包安装到终端中:
sudo apt install firmware-b43-installer
然后重新启动
sudo reboot
要安装的格式非常简单,只是:
sudo apt install <PACKAGE_NAME>
在上面的例子中,PACKAGE_NAME是firmware-b43-installer
。
BROADCOM WIRELESS TABLE(2017年8月18日更新)
PCI.ID 16.04 LTS 17.10+
------------------------------------------------------------------------------------
14e4:0576 Special Case #1 UNKNOWN
14e4:4301 firmware-b43-installer firmware-b43-installer
14e4:4306 firmware-b43-installer firmware-b43-installer
14e4:4306 rev 02 firmware-b43-installer firmware-b43-installer
14e4:4306 rev 03 firmware-b43-installer firmware-b43-installer
14e4:4307 firmware-b43-installer firmware-b43-installer
14e4:4311 firmware-b43-installer firmware-b43-installer
14e4:4311 rev 01 firmware-b43-installer firmware-b43-installer
14e4:4312 firmware-b43-installer firmware-b43-installer
14e4:4313 firmware-b43-installer firmware-b43-installer
14e4:4315 firmware-b43-installer firmware-b43-installer
14e4:4315 rev 01 firmware-b43-installer firmware-b43-installer
14e4:4318 firmware-b43-installer firmware-b43-installer
14e4:4318 rev 02 firmware-b43-installer firmware-b43-installer
14e4:4319 firmware-b43-installer firmware-b43-installer
14e4:4320 rev 02 firmware-b43-installer firmware-b43-installer
14e4:4320 rev 03 firmware-b43-installer firmware-b43-installer
14e4:4321 firmware-b43-installer firmware-b43-installer
14e4:4324 firmware-b43-installer firmware-b43-installer
14e4:4325 firmware-b43-installer firmware-b43-installer
14e4:4328 firmware-b43-installer firmware-b43-installer
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
14e4:4335 firmware-b43-installer firmware-b43-installer
14e4:4350 firmware-b43-installer firmware-b43-installer
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 bcmwl-kernel-source bcmwl-kernel-source
14e4:4360 bcmwl-kernel-source bcmwl-kernel-source
14e4:4365 bcmwl-kernel-source bcmwl-kernel-source
14e4:4365 rev 01 bcmwl-kernel-source bcmwl-kernel-source
14e4:43a0 bcmwl-kernel-source bcmwl-kernel-source
14e4:43ae rev 02 UNKNOWN UNKNOWN
14e4:43b1 bcmwl-kernel-source bcmwl-kernel-source
14e4:43b1 rev 03 bcmwl-kernel-source bcmwl-kernel-source
14e4:43c3 rev 04 UNKNOWN Special Case #2
14e4:4727 bcmwl-kernel-source bcmwl-kernel-source
14e4:4727 rev 01 bcmwl-kernel-source bcmwl-kernel-source
14e4:a962 firmware-b43-installer firmware-b43-installer
------------------------------------------------------------------------------------
特例1 – 使用bcma
和brcmsmac
驱动器组合。默认情况下,所需固件安装在linux-firmware
包中。
特例2 – 对于华硕PCE-AC88 AC3100,步骤如下:
-
Download This file并解压后,将其放入/lib /firmware /brcm
sudo cp brcmfmac4366c-pcie.bin /lib/firmware/brcm/brcmfmac4366c-pcie.bin
-
然后
sudo nano /etc/rc.local
添加modprobe brcmfmac并保存 -
sudo reboot
在像联想S10-2这样的硬件中,如果你的无线网卡试图连接到一个SSID(一直试图连接),那么让它工作的替代方法是安装bcmwl-kernel-source
软件包(删除任何其他已安装的软件包它)。有关此无线设备的更多信息,请阅读下面的调试部分。
重要注意事项 – 2014年9月以后,如果按照此答案,仍然在安装正确驱动程序时遇到问题,请尝试使用firmware-b43-installer
包并通过评论通知我们。有一些变化,一些司机只能使用这个软件包。请记住在安装之前要有一个干净的系统:
sudo apt install firmware-b43-installer
在某些特定情况下,安装firmware-b43-installer
后,您需要移除b43模块,再次启用它,甚至用rfkill解锁:
sudo modprobe -r b43
sudo modprobe b43
sudo rfkill unblock all
如果您有一个具有不同pci.id的Broadcom卡,请提出一个新问题。一旦解决,解决方案将被添加到这个howto。
4.安装软件包(离线)
4.1安装firmware-b43-installer
要离线安装firmware-b43-installer
,请参阅this answer。
4.2安装bcmwl-kernel-source
对于需要安装bcmwl-kernel-source
但您处于离线状态的情况,here是一个很好的答案。但基本上遵循这个步骤:
-
确保你选择了正确的架构(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个软件包依赖关系,如下图所示:
下载所有软件包和依赖关系后,可以继续将所有软件包复制到单个文件夹,然后运行上述步骤4中提到的dpkg
命令。
说明
在某些计算机中,在执行命令之前,您需要停用BIOS中的安全启动选项。这适用于例如已安装bcmwl-kernel-source但驱动程序尚未运行的情况。您可以像这样重新安装,或通过进入BIOS设置禁用安全启动:
sudo apt-get install --reinstall bcmwl-kernel-source
DEBUGGING
以下信息是阅读有关解决与无线管理相关的各种问题以及与其他网络设备冲突的其他资料。要知道,在某些情况下,您需要拥有更新的内核版本,因为每个新版本的内核都引入了新的网络驱动程序,改进了现有的驱动程序或解决了有关它们的错误。
在阅读下面提到的要点之前,请确保您的Ubuntu系统上已启用所有存储库。要检查,请在终端software-properties-gtk
上运行,并确保已启用Ubuntu软件标签上的所有选项。
-
要通过终端配置您的无线设备,我建议使用How to connect and disconnect to a network manually in terminal?
-
如果您的连接经常掉线,有些用户建议将IPv6设置为忽略。只需转到网络管理器(顶部面板上的网络图标)。点击它然后选择编辑设置。然后转到您正在使用的无线连接,选择它。现在转到那里提到的IPv6设置的最后一个标签。在方法字段中选择忽略。
-
如果您的笔记本电脑没有检测到您的无线网卡,某些用户提到使用
rfkill unblock all
可以解决问题。其他人只需将笔记本电脑上的WiFi开关关闭,然后再打开(笔记本电脑上提供物理开关)。有关rfkill
的更多信息,请阅读rf kill unblock all DOES NOT WORK! -
如果您正在获取b43-phy0错误:致命的DMA错误/b43-phy0警告:强制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频道时,无线网卡工作正常。 这是一种在其他情况下也会重复的情况,因此对网络设备进行适当的评估会有很大帮助。 对于您重复的情况:错误@ wl_cfg80211_get_station:错误的Mac地址。。。 在做
dmesg
并且您的无线连接经常下降时(一天几次或几天),这里的问题可能是您身处无线信号中,无线信号被用作无线网桥(2个路由器共享相同的SSID和连接)。 现代路由器可以通过提供相同的SSID来扩展无线连接。 您的无线连接可能会下降,因为您可能位于两台路由器之间,两者之间的信号强度几乎相同。 如果您的连接频繁下降,这意味着您几乎处于两台路由器设备的中间。 要降低或消除无线设备的丢包率,请尝试将自己定位在无线网卡只能看到一个路由器的位置,或者至少有一个路由器的信号强度高于另一个。 还有一些技术可以强制无线设备只通过将BSSID设置为您希望连接的路由器的MAC地址来连接到特定的路由器。 这将迫使您的无线设备只能连接到它。
安全启动问题
在某些特定情况下,如果未禁用安全引导,则安装驱动程序(通过各种DEB程序包或通过具有Internet访问权限的apt-get)处于脱机模式将不起作用。
这是因为所需的访问被Secure Boot拒绝,因此驱动程序看起来像是正确安装的,实际上没有。所以对于非常特殊的情况,您需要暂时禁用安全启动才能使驱动程序正常工作。
Linux固件更新
在其他情况下,查找和安装latest Linux Firmware将解决该问题。要么解决工作卡发生的小问题,要么首次使卡工作。
次佳解决办法
我用Broadcom bcm4311驱动程序解决了我的问题。
我为解决这个问题而采取的步骤(我从nm_geo on ubuntu forums偷了这个方法):
(您可能需要安装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'
(您可能需要复制此内容)并查看’blacklist bcm43xx’是否存在。
-
如果是,请键入
cd /etc/modprobe.d/
,然后sudo gedit blacklist.conf
将#
放在行前:blacklist bcm43xx
然后保存文件(我在终端中收到关于无法保存的错误消息,但实际上确实保存正确)。 -
重启
在我完成上述操作之后,无线必须由rfkill解锁:How to unblock something listed in rfkill?
第三种解决办法
这是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
重新启动一次。现在无线应该工作。
第四种办法
4313的驱动程序
让我们列举Broadcom芯片组的驱动程序以及它们如何与4313一起工作:
-
Broadcom STA。由其他司机建议。旧。可怕。绝对的垃圾。跳过它。如果您已经安装了它,请将其删除。
-
B43-fwcutter。很多人看到”Broadcom”并跳到这里,但它与4313(这是较新的)不兼容。如果你已经安装了它,清除它。
-
ndiswrapper的。比STA驱动程序更为片面。在一切都崩溃之前,我设法让它工作了大约10分钟。
-
brcm80211 aka brcmsmac。这是最近添加到Ubuntu的(相对)新驱动程序(因为驱动程序已添加到内核中)。这应该工作得很好,并且(在最近版本的Ubuntu中,Natty和Oneiric)应该是”Just work”。这是你正在寻找的机器人。如果你没有运行Natty或Oneiric,你的内核可能不会有这个驱动程序。你至少需要运行2.6.27,我推荐2.6.28作为最低限度(你可以通过运行
uname -r
来检查你的运行情况)。如果你支持版本,我会建议升级,但为了快速修复,你可以看看the mainline kernels并尝试其中的一种。安装内核包很少是一件有风险的事情,因为通常可以使用grub启动屏幕回退到一个旧包。
如果运行lsmod | grep brc
,并且您在输出中看到brcm80211
或brcmsmac
,则知道您可能位于正确的驱动程序中。
列入你的成功之路
如果您没有看到,则其他内容已加载,您需要将其列入黑名单。如果您可以看到已加载的内容,那么编辑/etc/modprobe.d/blacklist.conf
并开始添加如下行:
blacklist b43
blacklist b43legacy
blacklist bcma
blacklist ndiswrapper
如果您有另一台可能使用冲突驱动程序的无线设备,就像将其列入黑名单一样,那么您显然需要小心,否则您也会破坏该驱动程序:)
第五种办法
感谢您的宝贵回应。
此问题已通过以下步骤解决:
-
我从其他驱动程序中删除了Broadcom STA无线驱动程序。
-
在Ubuntu Software Center中输入
bcm
, -
安装“用于b34驱动程序的固件的安装程序包”(firmware-b43-installer)
现在它正在无线工作。你不需要按照上面的步骤。安装用于无线的“B43驱动程序”。
第六种办法
安装firmware-b43-installer
软件包。首先从’其他驱动程序’卸载专有驱动程序。
然后在终端中执行:
sudo apt-get install firmware-b43-installer
刚刚重新启动后,我的作品非常漂亮。
第七种办法
我始终建议使用您的终端删除并重新安装Broadcom驱动程序
在终端中输入以下命令
sudo apt-get purge bcmwl-kernel-source
然后
sudo apt-get install bcmwl-kernel-source
这会重建你的驱动程序。
让我们知道您的身体情况如何
你可以重新启动你的电脑,或者如果这是一个痛苦的类型在终端这将命令’switch on’你的无线
sudo modprobe -r b43 ssb wl
然后
sudo modprobe wl
第八种办法
最后我自己解决了这个问题,但我不知道如何。我正准备使用broadcom.com提供的源代码和http://www.broadcom.com/docs/linux_sta/README.txt中提供的说明来编译驱动程序,但是在这一步的说明中
On Ubuntu, you will need headers and tools. Try these commands:
# apt-get install build-essential linux-headers-generic
# apt-get build-dep linux
生成基本和头文件已经安装。我刚刚运行sudo apt-get build-dep linux
命令和Voilá!,一次重新启动后,我的连接开始以正常速度运行。
我不确定我做了什么。我想它构建内核或驱动程序依赖关系(或两者)。 BCM驱动程序需要这一步,而骑师self-configuration由于某种原因而忽略它。
无论如何,它是固定的。
第九种办法
打开新立得,并使用b43-fwcutter
和firmware-b43-lpphy-installer
而不是bcmwl-kernel-source
或其他。
第十种办法
我的Broadcom bcm4313在Asus Eee PC Seashell 1015PEM和Ubuntu 12.04上的工作原理:
-
不要使用限制司机
-
将”blacklist bcma”添加到
/etc/modprobe.d/blacklist.conf
-
sudo modprobe brcmsmac
-
将brcmsmac添加到
/etc/modules
-
重启