16.04 LTS关于Realtek RTL8723BE适配器的WiFi连接问题

我安装16.04 LTS后发现了一些wifi连接问题。
首先,睡眠或休眠后wifi无法正常重新连接。有时候唤醒后网络图标会变成一个“上下箭头”(我不知道它是什么),但仍然保持连接。有时候网络会完全丢失,并且在列表中没有显示任何网络,所以根本无法使用wifi。
我首先尝试通过运行“sudo service network-manager restart”来重新启动网络管理器。这样做确实有效,但并不是一个永久的解决方案。
然后根据另一个帖子,我在“/etc/pm/config.d/config”中添加了“SUSPEND_MODULES =“iwlwifi””。
这样做之后,重新连接的问题似乎已经解决了(可以自动重新连接,图标也不再变化)。然而,我发现wifi连接会在随机时间(大约每30分钟)中断,即使电脑正在运行时,网络图标仍然显示已连接状态。
在添加代码之后,另一个问题是当我让电脑进入睡眠状态时,屏幕会熄灭一秒钟,然后又亮起大约5秒钟(在此期间系统会断开wifi连接)。然后电脑会在这种异常的“两个阶段”的过程之后进入睡眠状态。
以下是无线网卡的信息
*-network               
       description: Wireless interface
       product: RTL8723BE PCIe Wireless Network Adapter
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:02:00.0
       logical name: wlp2s0
       version: 00
       serial: b0:c0:90:5c:1c:d5
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=rtl8723be driverversion=4.4.0-21-generic firmware=N/A ip=192.168.0.8 latency=0 link=yes multicast=yes wireless=IEEE 802.11bgn
       resources: irq:16 ioport:d000(size=256) memory:df200000-df203fff

00:00.0 Host bridge: Intel Corporation Sky Lake Host Bridge/DRAM Registers (rev 07)
00:01.0 PCI bridge: Intel Corporation Sky Lake PCIe Controller (x16) (rev 07)
00:02.0 VGA compatible controller: Intel Corporation Sky Lake Integrated Graphics (rev 06)
00:14.0 USB controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller (rev 31)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-H Thermal subsystem (rev 31)
00:16.0 Communication controller: Intel Corporation Sunrise Point-H CSME HECI #1 (rev 31)
00:17.0 SATA controller: Intel Corporation Sunrise Point-H SATA controller [AHCI mode] (rev 31)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #1 (rev f1)
00:1d.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #9 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Sunrise Point-H LPC Controller (rev 31)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-H PMC (rev 31)
00:1f.3 Audio device: Intel Corporation Sunrise Point-H HD Audio (rev 31)
00:1f.4 SMBus: Intel Corporation Sunrise Point-H SMBus (rev 31)
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-V (rev 31)
01:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 730] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GK208 HDMI/DP Audio Controller (rev a1)
02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8723BE PCIe Wireless Network Adapter
03:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller (rev 01)

2016年5月1日更新
我不知道发生了什么,但问题现在变得更糟了。无线网络连接大约每5分钟就会丢失,我必须重新连接或重新启动网络管理器。


1上下箭头是用于有线连接的 - 例如,如果我使用安卓设备进行网络共享,我就会看到它们。关于您的网卡,有很多与之相关的错误报告,例如这个,在其中安装新驱动程序对一些人有效。也许您能找到一些有用的信息... - Zanna
2你应该使用 SUSPEND_MODULES="rtl8723be" 而不是 iwlwifi,因为你的网卡不使用 iwlwifi。另外尝试运行 echo "options rtl8723be fwlps=N" | sudo tee /etc/modprobe.d/rtl8723be.conf 并重新启动。 - Jeremy31
@Jeremy31 谢谢,但这是用来解决第一个问题的吗? - aaa
1它可以修复fwlps选项禁用电源管理的问题,这可能导致断开连接和其他问题。 - Jeremy31
@Jeremy31 这个命令 "echo "options rtl8723be fwlps=N" | sudo tee /etc/modprobe.d/rtl8723be.conf" 是用来做什么的? - aaa
上下箭头很可能是一个网络管理器的错误,导致网络管理器误认为无线设备实际上是以太网。 - Jeremy31
那个命令将禁用你的wifi电源管理,除非整个问题是网络管理器的错误,否则你应该会有一个更稳定的连接。 - Jeremy31
@Jeremy31 echo命令应该产生任何输出吗 - aaa
让我们在聊天中继续这个讨论。 - aaa
3我看到很多关于WiFi问题的提问,但有一件事我不明白,为什么在16.04 LTS中会有这么多与网络特别是WiFi相关的问题。 - d a i s y
1@RyanNerd 一旦他们拥有了Mac,当然要在上面运行Ubuntu!这是买Mac的一个好理由 :-) - zwets
@zwets 我其实非常喜欢Linux。但是对于这个WiFi的情况感到非常沮丧。进一步研究后发现,这可能不是Debian/Ubuntu发行版/开发者的错,而是英特尔的开发者为他们的硬件创建的Linux固件驱动程序以及英特尔的硬件/固件本身就很糟糕。 - RyanNerd
在我的情况下,是由于一个有问题的Realtek驱动程序引起的,通过这个链接中描述的修复方法帮助了我;找到你的驱动程序并采取相应的措施:https://sites.google.com/site/easylinuxtipsproject/reserve-7 - Abhishek Pareek
这个链接可能会有所帮助(它是一个不同但相关的问题):http://askubuntu.com/questions/761180/wifi-doesnt-work-after-suspend-after-16-04-upgrade。 - sancho.s ReinstateMonicaCellio
这里有一个关于使用网络管理器的答案:https://askubuntu.com/questions/938321/how-to-make-a-marginal-wifi-connection-automatically-reconnect-if-it-drops-ub - SDsolar
我认为你在更新中提到的问题(持续断开连接)与最初的问题(休眠和休眠后的断开连接)是不同的。尽管如上所述,被标记为最终答案的回答(因此也包括问题本身)似乎是针对Realtek的特定情况。此外,它明确地涉及到挂起过程中的断开连接问题。 - user47206
@Jeremy31 - 你在评论中提到的建议(使用SUSPEND_MODULES="rtl8723be"而不是iwlwifi)正是几天后被接受的答案所说的。为了使该答案更通用(不仅适用于Realtek),是否应该编辑并指出,在SUSPEND_MODULES=之后,选项应该从configuration: ...driver:行中获取,而不是product:行中获取? - user47206
9个回答

终于在尝试了许多不同的方法后,我成功解决了问题。

通过运行sudo lshw -class network获取您的PCI无线网卡的详细信息。
根据产品线获取您的卡型信息。 例如,在问题描述中可以看到写着product: RTL8723BE PCIe Wireless Network Adapter,所以我的卡型是RTL8723BE
或者product: RTL8101/2/6E PCI Express Fast/Gigabit Ethernet controller,那么我的卡型就是RTL8101/2/6E
给予权限sudo chmod 755 /etc/pm/config.d/
打开或创建config,然后添加SUSPEND_MODULES="rtl8723be"(用您自己的型号替换rtl8723be)。 然后运行echo "options rtl8723be fwlps=N" | sudo tee /etc/modprobe.d/rtl8723be.conf(注意替换时,我的卡型是RTL8101/2/6E,那么我只需要输入.../modprobe.d/RTL8101.conf;不应该输入/2/6E)。

最后重新启动您的系统。

现在您的系统应该能够在睡眠后自动重新连接,我在执行此操作后从未失去过WiFi连接。

根据Jeremy31的说法,“上/下箭头”很可能是一个网络管理器的错误,导致网络管理器错误地认为WiFi设备实际上是以太网设备。在这里查看错误信息通过安装NetworkManager-1.2.0版本,您应该能够解决此问题。

感谢Jeremy31提供解决方案。


4这是解决从暂停唤醒问题的方法。对于我使用Intel 7260无线网卡的笔记本电脑来说,这是第三个有效的解决方案。但即使安装了NetworkManager-1.2.0,当我尝试切换网络时,仍然会出现箭头(我的是水平的,而不是垂直的),并且完全断开连接的无线网卡。 - Rsync
4我几个小时前安装了Ubuntu 16.04,遇到了同样的问题(错误图标+无线网络随机丢失)。通过执行 sudo apt-get update && sudo apt-get dist-upgrade 命令似乎问题解决了。重启后一切正常:连接更加稳定,没有错误图标出现。 - gwarah
到现在为止还有效吗?在回声命令中,您使用了小写的型号编号。所以这应该不是个问题,对吧?因为我只能连上5分钟就会失去互联网连接。 - john400
1我的WiFi适配器没有返回“product:”属性。只有“configuration: ... driver=r8712u ...”。 - James Bowery
3使用这个解决方案时要小心。它完全破坏了我的LM18网络连接。我不得不记住我执行了哪些命令,以便删除配置文件并重新启动。打印此页面以备参考过程。我并不是说它不好,显然对某些人有效。但是我认为在这里需要发出警告。 - RyanNerd
工作得很好,我工作时没有断连的情况。但是长时间休眠后,我发现 WiFi 无法连接。进行了升级也没有帮助。所以我把 network-manager restart 放入了“恢复”脚本中,现在一切都正常了。 - denis.peplin
这在14.04 LTS下从未发生过。升级到16.04 LTS真是太棒了,我会一直使用它,但它总是忘记我的WiFi密码。服务明显在运行,只是它会忘记密码并且无法连接。我在这里发布了问题:https://askubuntu.com/questions/934958/how-to-make-ubuntu-16-04-lts-remember-my-wifi-password-through-a-shutdown - 我没有看到产品线,但它确实说driver=rt2800usb - 我不认为修改这些文件能解决我的问题。 - SDsolar
这并不能解决Ubuntu 16.04.3上的问题。 - nyxee
我的config.d文件夹是空的。我应该如何实现“打开或创建配置”?如果您能回答,我将不胜感激。 - user1993
嘿,我正在尝试检查这个解决方案,但是我的lshw -class network只显示product: Qualcomm Atheros,没有型号。我也尝试了lspci,但是结果相同。你能告诉我如何使它正常工作吗?我还检查了/etc/modprobe.d/目录,没有找到带有型号的配置文件。我找到了一个名为ath10k.conf的文件,但是里面没有关于fwlps选项的信息。你能给我一些指示吗? - KillABug
rtl8723be不也是逻辑名称吗?如果是的话,应该提到逻辑名称而不是产品名称,因为它可能适用于更多情况。例如,当产品名称是Centrino Wireless-N 1000 [Condor Peak]时,就无法像你所做的那样进行翻译。 - user47206
@KillABug - 你可以尝试使用这里提到的逻辑号码。我还会尝试使用这个,因为被接受的答案似乎对于 Realtek(如果是的话)主要、几乎是唯一有效。 - user47206
@cipricus 在这里你帮了大忙。经过许多更新和升级,最新的升级可能已经解决了问题,因为自上次升级以来没有再出现过这个问题。感谢你的回复。 - KillABug
2@KillABug - 上述问题和/或解决方案可能与Realtek相关;使用Centrino设备,在休眠后我没有遇到任何问题,但是在下载过程中可能会随机丢失连接。忽略IPv6并不能修复此问题。 - user47206
1@KillABug - 为了在除了Realtek之外的其他情况下使用接受的答案,我们可以使用configuration: ...driver:行中提到的驱动程序的名称,而不是上面我所说的逻辑名称。但我怀疑这对我帮助不大,因为我的Intel Centrino适配器在睡眠后从未出现重新连接问题,而是在正常操作和下载过程中随机出现,并且更频繁。 - user47206
是的,我最近也没有遇到与我的驱动程序面对的问题,但我相信连接性是任何机器的重要方面,我们应该有一个即插即用的解决方案。我理解社区驱动的操作系统可能会有问题,但这是一个需要优先解决的问题。 - KillABug
1@user1993 我也遇到了这个问题,最后我假设他们的意思是 OP 的问题中提到的 /etc/pm/config.d/config - blaha
好的食谱.. 在16.04上适用于80E8055型号,由Marvell Technology Group提供.. 谢了伙计! - Peter

我有完全相同的问题。从睡眠中醒来后,Wi-Fi仍然可以使用,但网络不显示。我通过重新启动网络管理器来解决这个问题。
sudo service network-manager restart
仍然非常烦人。希望他们能尽快修复这个问题。

10这只是一个临时解决方案。你认为这是16.04 LTS的一个bug吗? - aaa
3对我来说可以。这可能是一个错误。 - avi software
2如果你想快速解决问题,也可以使用nmcli con up wifi-sid命令。 - Rick-777
我的Ubuntu从16.04版本开始就一直出现这种问题。这个命令对我起了作用。 - Dronz
4这对我没有用。我正在运行Xubuntu 16.04 LTS,并且在我的计算机进入睡眠状态时连接到了一个Windows共享驱动器。运行sudo service network-manager restart只是让我的系统更加冻结。然后我尝试了注销和重新登录,结果更糟糕,现在我的桌面图标都消失了。然后我进行了完全重启,但是我的桌面图标仍然消失了。不知道为什么,但我肯定会禁用睡眠模式。这真是个糟糕的问题。这种简单的事情应该能够正常工作的问题让我非常怀念Windows,我不喜欢这种感觉。希望Ubuntu/Xubuntu能够变得更好。 - Gabriel Staples
2你找到解决办法了吗? - Emad Arshad Alam
我认为这是Ubuntu从很久以前就存在的一个bug,不仅仅与16.04有关。 - SaidbakR


那个错误已经关闭了,你知道其他我可以自己标记受影响的错误吗?:) - Ads20000
也许那个问题已经解决了,但我的网络偶尔还是会断开;而且我从来不使用暂停功能。https://askubuntu.com/questions/938321/how-to-make-a-marginal-wifi-connection-automatically-reconnect-if-it-drops-ub - SDsolar

附加信息:我遇到了与OP描述的完全相同的问题,但只是nm-applet图标变成箭头而不显示wifi信息的问题。当发生这种情况时,wifi仍然可以正常工作。
$ killall nm-applet && nm-applet & 

这个方法可以让图标再次显示出来,所以目前只是一个权宜之计,以防有人想将其放入脚本中。

可以确认在两台运行xubuntu-desktop软件包的独立电脑上都存在这个问题。

此外,我使用的两台电脑都配备了最新的英特尔无线网卡(类似于AC-7260)。


你找到任何解决方案了吗? - aaa
谢谢,我有同样的问题,但只有在我与Wi-Fi路由器失去连接时才会发生这种情况,有时候我的路由器出现故障并且失去了连接。 - lonerunner
1我遇到了与这里描述的问题完全相同的问题,最近发布的manjaro-i3-20161201上。并且成功地使用这个技巧修复了它。谢谢! - btwiuse
另一个我发现有用的事情是,如果你愿意的话,可以删除 /etc/xdg/autostart/nm-applet.desktop 文件,这样它就不会在启动时自动运行了,而可以使用 nmtui 命令行工具来连接 WiFi。我尝试了这种方法,即使在 nmtui 退出后,当我的笔记本从睡眠中恢复时,连接也会自动重新建立。 - btwiuse

我遇到了同样的问题。我通过在/etc/systemd/system/wifi-resume.service创建了这个脚本来解决挂起唤醒的问题(OP发布的那个只在“活动会话”中有效;重启后需要再次调用):
#/etc/systemd/system/wifi-resume.service
#sudo systemctl enable wifi-resume.service
[Unit]
Description=Restart networkmanager at resume
After=suspend.target
After=hibernate.target
After=hybrid-sleep.target

[Service]
Type=oneshot
ExecStart=/bin/systemctl restart network-manager.service

[Install]
WantedBy=suspend.target
WantedBy=hibernate.target
WantedBy=hybrid-sleep.target

然后只需在终端中输入以下命令来激活它:sudo systemctl enable wifi-resume.service。这个解决方案来自另一个askubuntu问题的答案,在暂停和重启后都有效。
然而,即使在修复了这个问题之后,当我尝试切换WiFi网络时,仍然会出现与从暂停唤醒时相同的问题:WiFi基本上是无法使用的,显示两个箭头,并且小程序显示"设备未准备好"。我可以通过发出sudo service network-manager restart命令重新启动WiFi,但无法切换网络。
还有其他人遇到这个问题并且有解决方案吗?

1既然你还有问题,那这个脚本到底有什么用呢? - aaa
脚本解决了原帖作者的第一个问题:从暂停状态唤醒后无法连接WiFi。然而,它并没有解决我的第二个问题:无法在切换WiFi网络时保持连接。如果我没有表达清楚,第二个问题与第一个问题是独立存在的。脚本并没有引起第二个问题,它只是纠正了第一个问题。 - Rsync
我觉得这个脚本对我的情况没有任何帮助。事实证明,在使用它之后,无线网络连接更频繁地丢失。 - aaa
尝试使用其他脚本(例如http://askubuntu.com/questions/761180/wifi-doesnt-work-after-suspend-after-16-04-upgrade?lq=1)。这两个脚本都适用于唤醒暂停问题。然而,无法切换网络的问题导致我回滚到了15.10版本。此外,在安装了16.04的新系统上,我遇到了第三个问题:每次连接到一个网络(例如WIFI_1; WIFI_2; WIFI_3),网络管理器都会创建一个新的wifi连接。因此,我需要每次输入密码。 - Rsync
我不使用简历,但这看起来很有前途。谢谢你发布这个。这是我的问题和一个关于这个问题的好答案:https://askubuntu.com/questions/938321/how-to-make-a-marginal-wifi-connection-automatically-reconnect-if-it-drops-ub - SDsolar

我正在使用LinxuMint 18 Mate(ubuntu16.04),遇到了同样的问题。
对于我的ThinkPad T440S,上面的所有方法都没有起作用。
到目前为止,唯一有效的解决办法似乎是升级内核到4.6.3版本。
  • 前往此网站

  • 获取以下文件:

    linux-headers-4.6.3-040603-generic_4.6.3-040603.201606241434_amd64.deb
    linux-headers-4.6.3-040603_4.6.3-040603.201606241434_all.deb
    linux-image-4.6.3-040603-generic_4.6.3-040603.201606241434_amd64.deb
    
  • 从终端进入包含上述文件的文件夹并运行:

    sudo dpkg -i *.deb
    sudo reboot
    
如果你正在使用Virtualbox,运行这个命令:sudo /sbin/vboxconfig 如果你想要移除它们,运行以下命令:
sudo dpkg --purge linux-headers-4.6.3-040603 linux-headers-4.6.3-040603-generic 

经过一些更多的测试,情况几乎没有改变,我可以连接到WiFi,但是我的nm-applet无法看到周围的所有WiFi。所以不确定这是否是一个好的解决办法 :-)

我也使用LM18。其他解决方案都导致我的网络出问题,而这个解决方案似乎有效。我使用的是Cinnamon桌面环境,内核升级导致了我的Nvidia驱动程序出错——并不是内核的问题。我敢肯定Nvidia的开发人员在服用迷幻药,因为他们每次我进行重大内核升级时都无法按照自己的规范进行操作,我总是要花上一个小时或更长时间来解决Nvidia驱动程序的愚蠢问题。 - RyanNerd
1我给这个点了赞,并且保持点赞,因为升级到最新的内核对于LM18来说是有效的,在其他地方查找的方法对我的系统没有好的效果。不幸的是,升级到4.6.3内核并没有解决我在随机时间无线网络变得糟糕的问题。这只发生在家里。我在家和工作地点使用的是完全相同的路由器。不确定出了什么问题。我的笔记本电脑配备了Intel Wireless 7260无线适配器,显然是一个有很多问题的版本,在Linux和Windows中都存在一些问题。所以我想我只能等待驱动程序更新来解决这个烂硬件带来的问题了。 - RyanNerd

现在根本没有解决方案,但我找到了一个脚本,帮助我保持无线局域网连接。
#!/bin/bash

# Ping you most used DNS Server and reconnect on fail


while true; do
  if ! ping -c 1 -w 1 8.8.8.8 > /dev/null; then

    # with "sudo iwconfig" you can examine your name of 'wlan0'
    nmcli d connect wlan0

  fi
  sleep 2;
done

要自动启动此脚本,只需打开“gnome-session-properties”并将其添加到列表中。
完整的脚本(不包括重新连接)可以在此网页上找到。

如果内核当前的法规领域没有设置WIFI国家代码,请设置它。
iw reg get

设置它

sudo nano /etc/default/crda
REGDOMAIN=<ISOCODE>

重启。

这会如何或为什么有帮助? - Asclepius
这个解决方案在一定程度上帮助了我。以前连接WiFi有时需要几分钟的时间(我不得不多次重启网络管理器,有时还要重新启动电脑),但是在明确设置REGDOMAIN之后,现在它的工作效果更好了。但是在从睡眠中唤醒电脑后,有时仍然无法连接,我不得不手动重启网络管理器。真是让人烦恼。 - kovinet

只是为了补充已接受答案的内容(包括四个步骤)。
由于某种原因,对我而言只需要一个步骤就足够了,尽管我不知道它的含义。
echo "options rtl8723be fwlps=N" | sudo tee /etc/modprobe.d/rtl8723be.conf