如何让Realtek RTL8723BE无线网卡正常工作?

我在我的笔记本电脑上安装了Ubuntu 15.04,并使用RTL8723BE无线网卡。但是它经常断开网络连接。我尝试了echo "options rtl8723be fwlps=N ips=N" | sudo tee /etc/modprobe.d/rtl8723be.conf,但没有起到作用。我应该怎么做才能防止WiFi断开连接?如果我升级到4.X内核,会有帮助吗? ~$ lspci -knn | grep Net -A2
09:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8723BE PCIe Wireless Network Adapter [10ec:b723]
    Subsystem: Hewlett-Packard Company Device [103c:2231]
    Kernel driver in use: rtl8723be


~$ rfkill list
0: hci0: Bluetooth
    Soft blocked: yes
    Hard blocked: no
1: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no


~$ ifconfig && iwconfig && route -n && ping -c 1 google.com
eth0      Link encap:Ethernet  HWaddr 38:63:bb:cd:4a:7e  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:3 errors:0 dropped:0 overruns:0 frame:0
          TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:752 (752.0 B)  TX bytes:8445 (8.4 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:3870 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3870 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:314613 (314.6 KB)  TX bytes:314613 (314.6 KB)

wlan0     Link encap:Ethernet  HWaddr c0:38:96:6d:c4:83  
          inet addr:192.168.1.205  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::c238:96ff:fe6d:c483/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15240 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14627 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14410285 (14.4 MB)  TX bytes:2192744 (2.1 MB)

eth0      no wireless extensions.

wlan0     IEEE 802.11bgn  ESSID:"DIR-615"  
          Mode:Managed  Frequency:2.437 GHz  Access Point: 00:90:4C:08:00:0D   
          Bit Rate=150 Mb/s   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr=2347 B   Fragment thr:off
          Power Management:off
          Link Quality=70/70  Signal level=-22 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:186   Missed beacon:0

lo        no wireless extensions.

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    400    0        0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
PING google.com.Dlink (172.26.136.19) 56(84) bytes of data.
64 bytes from 19.136.26.172.in-addr.arpa (172.26.136.19): icmp_seq=1 ttl=249 time=102 ms

--- google.com.Dlink ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 102.547/102.547/102.547/0.000 ms

请编辑您的问题并添加lspci -knn | grep Net -A2终端命令的输出。 - Pilot6
请同时添加 rfkill list 命令的输出结果。 - Pilot6
请添加以下命令的输出结果:ifconfig && iwconfig && route -n && ping -c 1 google.com - Pilot6
你的无线网络运行良好。你可以正常ping通谷歌。在你的浏览器中能打开谷歌吗? - Pilot6
现在我可以ping通google.com,但是10-15分钟后连接就会断开。非常感谢您的帮助。如果我想测试这个驱动程序,我该如何卸载它们:https://github.com/lwfinger/rtlwifi_new - PlugaruT
1这些是同样的驱动程序 :-)) 我只是把它们打包成 dkms 放入我的 ppa 中。你可以通过 sudo apt-get install ppa-purge && sudo ppa-purge ppa:hanipouspilot/rtlwifi 移除所有内容。 - Pilot6
我不知道:D 谢谢帮助。 - PlugaruT
还有,请删除设置 sudo rm /etc/modprobe.d/rtl8723be.conf - Pilot6
我会测试驱动程序一段时间,我仍然想使用Ubuntu,而不是Windows :( 进入4.x内核以解决这个问题 - PlugaruT
这个问题在版本4.0中还没有解决。但是这个驱动程序对大多数人来说效果不错。目前还没有更好的选择。 - Pilot6
7个回答

首先,删除您所做的设置。
sudo rm /etc/modprobe.d/rtl8723be.conf

如果你没有这个文件,没关系。
然后安装一个好的驱动程序。
sudo add-apt-repository ppa:hanipouspilot/rtlwifi
sudo apt-get update
sudo apt-get install rtlwifi-new-dkms

重新启动并享受。
如果您仍然遇到问题(信号弱),您可能需要添加一个选项:
echo "options rtl8723be ant_sel=2"  | sudo tee /etc/modprobe.d/rtl8723be.conf

然后再重新启动。

这个解释是由chili555这个答案中提供的。

这是与https://github.com/lwfinger/rtlwifi_new相同的驱动程序,rock.new_btcoex分支,但打包为dkms。

你可以在https://github.com/hanipouspilot/rtlwifi_new/tree/rock.new_btcoex上看到所有的内容。

如果你还需要蓝牙工作,请运行:

sudo apt-get install rtl8723au-bt-dkms linux-firmware

注意:已经在PPA中添加了对4.2内核和Ubuntu 15.10的支持。对于4.2内核,蓝牙驱动程序不应该从PPA安装。在4.2内核中已经有原生蓝牙适配器的支持。

离线指南

如果您没有任何互联网连接,您可以使用另一台计算机、手机等下载软件包。

软件包链接:这里

您还需要安装DKMS。您可以在Ubuntu 16.04上找到DKMS软件包链接:这里

将这两个文件复制到Ubuntu主文件夹(~/)并在终端中运行。

sudo dpkg -i dkms*.deb rtlwifi*.deb

然后重新启动。

重要提示:对于在启用UEFI安全引导的系统上安装的新Ubuntu内核,未签名的内核模块可能无法加载。在这种情况下,请参考此答案进行修复。

更新:我现在有一台配备了这个适配器的笔记本电脑。它在Ubuntu 16.10和16.04.2中可用的4.8内核上完美运行。

只有在4.8版本之前的内核才需要安装自定义驱动程序。

如果尚未安装,请建议将4.8内核安装到Ubuntu 16.04中,方法如下:

sudo apt install linux-generic-hwe-16.04

设备在重新启动后应该正常工作。

但是,如果您的笔记本电脑只有一个天线,并且连接到了一个“错误”的连接器上,则可能需要设置ant_sel=2and_sel=1


不,我不需要蓝牙工作,我不使用它,我会尝试这个驱动程序,然后回答你。谢谢。 - PlugaruT
我已经测试了这些驱动程序,它们不起作用,我一直在网络中断连接。 - PlugaruT
他们安装的时候有没有出现错误? - Pilot6
是的,安装很顺利。 - PlugaruT
你重启了吗? - Pilot6
是的,我重新启动了。 - PlugaruT
1尝试执行这个命令:echo "options rtl8723be msi=1 ips=0" | sudo tee /etc/modprobe.d/rtl8723be.conf,然后重新启动电脑。 - Pilot6
1不,完全不工作 :( - PlugaruT
这很奇怪。这个芯片和这个驱动程序配合得很好。它是连接然后断开,还是根本就没有连接? - Pilot6
连接上了但是没有网络访问。我无法浏览网页 :( - PlugaruT
哦,那一定是其他问题。请重新措辞你的问题。 - Pilot6
驱动程序可以正常工作,但是在20-15分钟后会断开网络连接,5分钟后又能恢复wifi连接。谢谢。 - PlugaruT
如果你找到了原因,也许可以删除 /etc/modprobe.d/rtl8723be.conf。 - Pilot6
它与这个配置文件配合工作,我不想碰任何东西 :) 这样比什么都没有要好 :) - PlugaruT
对我来说,按照你上面提到的所有步骤都起作用了!不过我没有使用"/etc/modprobe.d/rtl8723be.conf"文件。我将它删除后一切都完美了。 - Punit Naik
@Pilot6 我觉得,现在它运行得很好。ant_sel 2 实际上是做什么的? - Suhail Gupta
它选择了正确的天线。答案中有一个链接,你可以点击阅读它的功能介绍。 - Pilot6
谢谢!这个答案总是对我有帮助,在Lubuntu 16.04上有效。 - 09eragera09
2只有在 options rtl8723be fwlps=N ips=N swenc=Y msi=1 后才能正常工作。只使用 options rtl8723be msi=1 ips=0 时无法正常工作。 - Baumann
1通常在我输入options rtl8723be fwlps=N ips=N swenc=Y msi=1 ant_sel=2之后,对我来说是有效的。 - 09eragera09
有趣的是,在16.04上安装来自这个PPA的rtlwifi-new-dkms(内核版本为4.4.0)也显著提高了我的Wi-Fi可靠性。这似乎与你关于4.2以上内核的主线支持的说法不符。或者你只是在谈论蓝牙? - detly
我写了关于蓝牙支持的内容。Wi-Fi的支持还不够完善。这就是为什么我一直在为Xenial构建这个驱动程序。 - Pilot6
@Pilot6 啊,是的,我说得太早了。Wifi 仍然会断开,但似乎恢复得更快了。我会尝试一些配置选项。 - detly
即使使用ant_sel=2,它仍然不太稳定。还有其他我可以尝试的方法吗? - detly
@detly我遇到了同样的问题。在更新驱动程序后,仍然经常断开连接。我找到了一个技巧,使它对我来说完美无故障地工作。请查看我的答案http://askubuntu.com/a/847528/247771。 - Adam
1我可以确认,在Ubuntu 16.04上,这在HP 15系列的笔记本电脑上与Realtek RTL8723be完美运行。它需要安装rtlwifi-new-dkmsppa:hanipouspilot/rtlwifi并编写ant_sel=2指令。不幸的是,它要求您禁用安全启动。但是在所有附带更高版本内核的Ubuntu版本上,例如Ubuntu 16.04.2,您可能可以再次删除此自定义驱动程序,对吗?然后,在从该驱动程序切换回内核提供的驱动程序之后,应该可以再次启用安全启动。 - caw
这对我来说有效,除了当我打开Wi-Fi时,它会自动关闭。通过使用Pilot6的另一个建议解决了这个问题,即将acer列入黑名单:sudo tee /etc/modprobe.d/blacklist-acer-wmi.conf <<< "blacklist acer_wmi" - Doug Bradshaw
1只是想提一下,值得尝试 attena 1,对我来说很有效。非常感谢 @Pilot6 - ezdazuzena
前一段时间我已经遇到过这个问题,通过手动从源代码(rtlwifi_new git repo)构建新模块来安装它,它可以正常工作。突然间它又变得非常糟糕了。重新安装模块并添加选项ant_sel=2,它就可以正常工作了。谢谢! - alsami
对我没有起作用。 - AAI
有没有办法检查系统是否确实使用了新的驱动程序?命令lshw -C network显示rtl8723be,驱动程序版本=4.4.0-179-generic - tobiasBora

如果您的Wifi在一段时间后断开连接,并且您使用双系统引导Windows操作系统。
在HP 250 G4(使用rtl8723be芯片),一开始我遇到了“天线故障”:Wifi信号太弱:
安装新驱动程序并设置ant_sel=2,如此链接中描述的那样,问题得到解决。
但然后出现了第二个问题:
Wifi正常工作一段时间后(有时为2小时),突然变慢并最终断开连接。
更改参数(ips、fwps等)没有帮助。
我最终发现在Windows能源设置中关闭Windows 10快速启动解决了问题。
另一个用户已经确认了这个解决方法(请参见RTL8723BE:Wifi始终在15/20分钟后掉线

1天线选择有什么作用?我们具体在谈论哪种天线?硬件是否有两个天线? - Lokesh

对我有效的方法是启用MSI参数(消息信号中断)。我有一台联想Z50笔记本电脑。我的Wi-Fi可以与所有Wi-Fi笔记本电脑制造商配合使用,但我曾在一家酒店遇到了Lancorm Wi-Fi路由器的问题。
我在文件夹路径中找到了sw.c文件。
/home/peter/rtlwifi_new/rtl8723be

sw.c文件中,我添加了变量.msi_support并将其初始化为"false",数据类型下。
rtl_mod_params rtl8723be_mod_params

i.e

static struct rtl_mod_params rtl8723be_mod_params = {
.sw_crypto = false,
.inactiveps = true,
.swctrl_lps = false,
.fwctrl_lps = true,
.msi_support = false,
};

由于默认情况下禁用了msi_support,我们必须适当地将其初始化为禁用状态(即false)。
然后我编译了代码:
cd rtl8723be
make clean
sudo make install
sudo modprobe rtl8723be

之后我将文件中的msi参数设为1。

/etc/modprobe.d/rtl8723be.conf

应该包含

options rtl8723be fwlps=N ips=N swenc=Y msi=1

你可能需要重新启动电脑,然后等待几分钟,在重新启动浏览器后,才能触发MSI安装程序。
这个方法适用于联想Z50。根据你的电脑,你可以选择切换为0版本的MSI安装程序。

刚刚拿到一台HP Stream 13,把它清空了,安装了Ubuntu 15.10,并将所有的家庭文件夹都链接到一个64GB的SD卡上,以扩展32GB的SSD...然后遇到了可怕的rtl8723be问题,我也注意到在一台HP 430工作笔记本上有一个不同的变种...
经过很多折腾,我终于发现这里实际上有两个问题。
  • 如上所述,WiFi驱动程序需要更换,以解决网络卡的掉线问题,需要重新启动网络管理器或将网络卡与网络重新同步。按照说明更新驱动程序。

    sudo add-apt-repository ppa:hanipouspilot/rtlwifi
    sudo apt-get update
    sudo apt-get install rtlwifi-new-dkms linux-firmware
    
  • 一旦您解决了掉线问题,还需要解决低信号强度问题... 这需要更多的操作。拆下底部的所有螺丝,包括2个背部橡胶脚下面的螺丝、中间小橡胶盖和底部的铰链橡胶盖。

  • 轻轻地将顶部从底座上拆下来。小心地取下顶部。在中央靠后的位置找到网络卡。拔下连接的细同轴电缆(主)并将其插入旁边的连接器(辅助)。将所有部件重新组装好。
    Linux驱动程序使用了双天线卡上的另一根天线,所以如果你不更换它,信号会严重衰减。
    现在这台笔记本电脑有足够的存储空间,启动速度很快,并且在整个房子里都有稳定的信号,没有掉线。性价比很高的小型笔记本电脑,但如果你要在上面安装Linux系统,需要做些规划。
    感谢大家对此工作的支持。

    我遇到了同样的问题,按照Pilot6 answer中的说明更新了驱动程序,但仍然经常断开连接。当我绝望地寻找另一个解决方案时,在laugeo's answer中发现移除Windows 10快速启动可以解决问题。不幸的是,我只有Ubuntu没有Windows。然而,我发现简单地禁用Legacy Support(传统支持)就可以解决问题!
    我必须进入Bios禁用Legacy Support,步骤如下: Bios -> Boot Option (Enter) -> Legacy Support: Disabled

    enter image description here

    现在无线局域网完美运行 - 再也不会断开连接了!

    禁用安全启动,您允许系统使用安装的驱动程序。 - Pilot6

    如果您使用的是最新版本的Ubuntu,例如18.04及以上版本,由于某些安全原因,您将无法添加ppa存储库[ppa:hanipouspilot/rtlwifi]。
    因此,请直接从GitHub获取该新的WiFi驱动程序。
    git clone https://github.com/lwfinger/rtlwifi_new
    

    建造它。
    cd rtlwifi_new
    make
    

    最后,安装它。
    sudo make install
    

    驱动程序已经更新并安装完成。

    这也是我的情况。我也尝试了rfkill list all,但没有任何东西被阻止。然而,Wi-Fi无法正常工作。 我的rfkill list all结果 自从安装Ubuntu 14.04 LTS以来的两天里,我尝试了各种调整。几乎感到沮丧和失望。最终让它工作了。 可能的解决方案 - 在尝试不同的调整后,我找到了一个似乎有效的代码。进入终端,复制并粘贴以下命令并运行 - echo "options rtl8723be fwlps=0 swlps=0" | sudo tee /etc/modprobe.d/rtl8723be.conf 然后您需要重新启动一次。现在我能够通过Wi-Fi访问互联网,而不会掉线。
    祝你好运!

    1@pilot6 这个回答看起来怎么样?还可以吗?符合社区标准吗?请回复。期待向您学习。我在这里只有两天的经验,谢谢。 - MIMO Rulz