好久没有更新博客了,疫情期间在家闲得蛋疼,爱捣鼓的小心思已经压制不住了,没事找事解决。
早在大半年前,喵哥在一台机器上安装了较为出色国产操作系统——deepin。虽然也是定制的Linux,相对Ubuntu Kylin来说好得不止一星半点。deepin的桌面UI设计相当漂亮,它的应用软件生态在国内Linux系统中算是出类拔萃的。然而,deepin还是存在一些问题:UI漂亮,但是经常卡住,WiFi信号似乎不是太好。。。这几天就开始捣鼓起来,解决搜不到wifi信号问题。
华硕FX53vd笔记本
无线网卡:rtl8723be
操作系统:deepin15.11(64位)
笔记本搜不到附近的wifi信号,如图1所示。
一开始,喵哥一直认为这个问题是deepin系统的锅。事实上,喵哥也在deepin的论坛上发现了有人发布相关帖子(彻底解决deepin linux的无线网络问题),并且解决了搜不到WiFi的问题。事情远不止这么简单(不然也不会发布这篇博客),喵哥按照帖子中的步骤安装了rtl8723be的驱动,但是并没有如帖子中所说热泪盈眶,反而一脸愁容——并没有起效。
后面一段时间,喵哥开始佛系捣鼓,偶尔看到合适的就去试试,但是大部分都是联想的笔记本,操作起来很多地方不一样,根据后来成功的经验,估计问题也不一样。
偶然发现一篇文章 Linux下RTL8723BE无线网卡驱动问题解决方法,发现喵哥可能是找错了解决问题的方向——在Linux中rtl8723be网卡接收WiFi信号似乎一直是个问题。根据文章的介绍,喵哥试了一遍,失败了。。。但是文章中有个细节,喵哥觉得不是太对:文章说“ant_sel设置的是信号强度”,并且越大越好,文章设置成2。
执行modinfo rtl8723be可以看到ant_sel的说明
ant_sel:Set to 1 or 2 to force antenna number (default 0)
这个其实是选择无线网卡的天线,一共有两个:1(MAIN)、2(AUX),选择0为系统自动设置,本机器的无线网卡天线接口如图2所示,黑线接1(MAIN),白线接2(AUX),图中的白线是临时拔下的,并没有单线运行机器。
1是主天线接口,喵哥的机器选择2号接口似乎不行。
喵哥最后解决了无WiFi信号的问题,其中ant_sel和msi(信号中断模式,用命令 modinfo rtl8723be 可以查看)是主要起作用的参数,具体流程如下。
1.安装相关的软件和依赖
sudo apt-get install linux-headers-generic build-essential git
2.下载rtl无线网卡驱动,这是一个合集,包含不止rtl8723be的驱动
git clone https://github.com/lwfinger/rtlwifi_new
3.进入刚刚下载的文件夹,安装驱动程序
sudo make
sudo make install
4.设置网卡的配置文件,喵哥的是/etc/modprobe.d/rtl8723be.conf,没有的话自己新建
sudo vim /etc/modprobe.d/rtl8723be.conf
在/etc/modprobe.d/rtl8723be.conf写入:
'调试等级
options rtl8723be debug=1
'看门狗,可以关闭,设为1
options rtl8723be disable_watchdog=1
'开启软件加密
options rtl8723be swenc=1
'以下三个参数与节能相关,设为0关闭
options rtl8723be fwlps=0
options rtl8723be ips=0
options rtl8723be swlps=0
‘以下为关键步骤:
'信号中断模式,64位系统设为1,开启MSI中断模式
options rtl8723be msi=1
'强制选择1号天线,设为0也行,系统会自动选择
options rtl8723be ant_sel=1
以上写入的内容为rtl网卡的参数,执行modinfo trl8723be可以看到相关参数的说明:
parm: swenc:Set to 1 for software crypto (default 0)
(bool)
parm: ips:Set to 0 to not use link power save (default 1)
(bool)
parm: swlps:Set to 1 to use SW control power save (default 0)
(bool)
parm: fwlps:Set to 1 to use FW control power save (default 1)
(bool)
parm: msi:Set to 1 to use MSI interrupts mode (default 0)
(bool)
parm: debug:Set debug level (0-5) (default 0) (int)
parm: disable_watchdog:Set to 1 to disable the watchdog (default 0)
(bool)
parm: ant_sel:Set to 1 or 2 to force antenna number (default 0)
(int)
5.执行移除rtl网卡驱动,然后重新载入驱动
sudo modprobe -rv rtl8723be
sudo modprobe -v rtl8723be
6.可以搜索到WiFi了: