Wifi 不断掉线 - Ubuntu 20.04 和 Broadcom 无线适配器

Yoo*_*ond 15 wireless networking broadcom drivers

我最近刚刚安装了 Ubuntu 20.04(全新安装,从 Windows 双重引导)并且 wifi 不断掉线。它以前在 Windows 下和房子里的其他计算机上是稳定的,所以我不认为这是路由器或实际互联网连接的问题。

我尝试根据安装 Broadcom 无线驱动程序重新安装 Broadcom 驱动程序,其中推荐了 bcmwl-kernel-source 驱动程序,但这并没有帮助解决问题。

我对 linux 游戏还是很陌生,所以如果有人能够查看链接的无线诊断脚本:https : //paste.ubuntu.com/p/R4PMFVTvDT/

非常感谢您的帮助!

ron*_*209 12

自两周以来,我一直处于类似的情况,昨天(5 月 11 日)我找到了一个解决方案,该解决方案目前有效(双启动 Ubuntu 20.04 / Windows,无线网卡 Broadcom 4325)。

令人惊讶的是,我的问题不是由于无线驱动程序或电源管理(前几天尝试了很多东西,没有改进)而是与我的计算机的 ARP 条目在我的本地路由器上过期有关(ARP 代表地址解析协议,它使翻译介于两者之间) IP 地址和 MAC 地址)。

简而言之(本答案末尾的调查详细信息):

  • 我的路由器的 ARP 条目超时了 20 分钟,
  • 对于我的电脑,它一直在减少到到期(这让我每 20 分钟失去一次连接),
  • 其他设备也是如此,但对它们而言,它会在到期前自动刷新。我进行了网络捕获以找出这些设备的不同之处,并发现它们在发送 ARP 请求时会刷新超时。

=> 出现了一个解决方案,我不得不告诉我的电脑也这样做!(发送ARP请求)

解决方案的实施

为了发送 ARP 请求,我使用了arping,你可以从它的包中安装:

sudo apt install arping
Run Code Online (Sandbox Code Playgroud)

当您启动它时,它说它必须以 root 身份运行或使用cap_net_raw功能运行。由于我不想以 root 身份启动它,我添加了以下功能:

sudo setcap "cap_net_raw+ep" /usr/sbin/arping
Run Code Online (Sandbox Code Playgroud)

我使用以下命令向我的路由器发送一个 ARP 请求(将 IP 地址替换为与您相关的 IP 地址):

arping -c 1 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

然后我希望这个命令每 15 分钟运行一次,以定期刷新 ARP 条目。这是通过编辑文件/etc/crontab 来完成的

sudo vi /etc/crontab
Run Code Online (Sandbox Code Playgroud)

然后在文件末尾添加这一行:

*/15 * * * * <username> arping -c 1 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

这将使 ARP 请求每 15 分钟发送一次。

详细调查过程

以下是有关我如何发现问题的更多详细信息:

  • 开发了一个小部件,在连接丢失和恢复时告诉我时间戳。
  • 运行 tcpdump 捕获直到断开/重新连接发生(小部件的目的)。
  • 在抓包中,发现了发布时间前后的ARP报文。
  • 查看我的 pfSense 路由器的 ARP 表,看到我的 PC 的超时条目一直在减少,直到到期;对于连接的其他设备,它也减少了,但在某些时候它会在到期前重置为默认值(在我的情况下为 1200 秒)。
  • 等到到期以确认我在我的计算机上观察到断开连接的症状(是的)。
  • 在路由器上进行 tcpdump 捕获以查看其他设备如何成功重置其超时:通过在超时之前发送 ARP 请求。
  • 如上所述安装 arping 并向路由器发送测试 ARP 请求:它将我的过期超时重置为 1200 秒,胜利!\o/

最后,我不知道为什么我在使用 Windows 时从未遇到过这个问题。检查 ARP 表时,我看到条目也已过期,但随后立即重置为 20 分钟,我看不到网络断开连接。

您可能还想知道如何检查 ARP 表。如果您使用的是 pfSense 路由器,则可以在子菜单“诊断 > 表 ARP”中找到它(要翻译成英文,我的菜单是法文的)。对于另一台设备,您必须检查其文档。

但最后,如果您无法检查 ARP 表,您仍然可以尝试在/etc/crontab 中插入该行并运行几个小时/天。如果您的问题没有再次出现,那就是问题所在:-)

希望这可以帮助 !

  • 很好的答案。非常感谢。如果你运行 `echo "*/15 * * * * \`whoami\` arping -c 1 \`ip route show | grep -i 'default via'| awk '{print $3 }'\`" |sudo tee - a /etc/crontab` 配置行会自动附加到带有您的用户名和路由器 IPv4 地址的 /etc/crontab 。 (2认同)

小智 7

我遇到过同样的问题。经过一番谷歌搜索后,我在检查后找到了一些答案dmesg。所以,运行后:

# dmesg -w
Run Code Online (Sandbox Code Playgroud)

我发现此消息错误:

wlan0: deauthenticated from c8:e7:xx:xx:xx:xx (Reason: 6=CLASS2_FRAME_FROM_NONAUTH_STA)
Run Code Online (Sandbox Code Playgroud)

我在Linux WiFi: Deauthenticated Reason Codes中找到了错误的含义:

从未经身份验证的 STA 客户端收到的 2 类帧在经过身份验证之前尝试传输数据。

识别错误后,我需要了解为什么我的旧 MacBook White 受到我的 AP 的影响(连接在线,但没有数据包输入/输出)。

好吧,这个错误足以让我理解这个问题。该错误与接入点的身份验证错误有关,之后,我了解到我的 AP 正在“踢”我的连接并拒绝来自 Wi-Fi 接口的数据包。

那么,让我们尝试一些事情。
也许如果我停止自动频道/频率更改,问题就结束了...将我的 AP 配置更改为静态频道 (36) 并将频率更改为 (80Mhz) 后,Wi-Fi 接口停止掉线,问题就结束了(到目前为止)太好了),因此使用 Broadcom (BCM4321) 的 Wi-Fi 连接不再不稳定。

我对错误的理解是什么?

我猜想固件在自动协商通道和频率后的身份验证方面存在一些代码问题,固件在连接真正完成与 AP 的“握手”之前发送身份验证请求。

我希望这个“解决方法”可以帮助您解决这个问题。


小智 2

通过检查日志,建议禁用 wifi 的电源管理,如 wl/b43 驱动程序所述,然后 编辑:/etc/NetworkManager/conf.d/default-wifi-powersave-on.conf

wifi.powersave = 2
Run Code Online (Sandbox Code Playgroud)

[编辑] 它表明,在我的情况下,经过进一步测试,更改此参数使情况变得更糟,因为由于重复的 wifi 扫描,wifi 弹跳越来越多......所以,如果您遇到问题,请不要使用此功能。(如果您使用驱动程序,您可能不会遇到问题wl。我b43在我的情况下使用。)


小智 1

我也有同样的问题。我有一个 Broadcom 4313 无线卡,当它基本上长时间下载大文件时,它会断开连接。

到目前为止,这解决了我的问题:

https://help.ubuntu.com/community/WifiDocs/Driver/bcm43xx

如果您需要快速指南,我建议通过首先使用命令名称删除所有驱动程序来修复它,sudo modprobe -r drivernamegoeshere然后一次将它们添加回来,看看是否有效。

获取驱动程序列表。 lsmod | grep cfg80211然后删除每一个并将其中一个添加回(从 b43 开始),并使用sudo modprobe b43. 到目前为止,这对我来说很有效。


归档时间:

查看次数:

30437 次

最近记录:

4 年,3 月 前