我在 HP 笔记本中使用 Ubuntu 18.04。我使用以下命令下载了驱动程序:
git clone https://github.com/tomaspinho/rtl8821ce.git
我按照 README 文件中的说明进行安装。
计算机重启后,驱动程序运行良好,但如果我尝试更改无线网络或计算机进入暂停状态,网络管理器将无法再连接。网络管理器在空中看到 Wi-fi 的 ssid,但无法建立连接。简而言之,它仅在第一次连接时有效。
我尝试过重启网络管理器,卸载并重新安装,但问题仍然存在。唯一的解决办法是重启 Ubuntu,这对我来说很烦人。
我该如何解决这个问题?
答案1
EDIT2:rtl8821ce 驱动程序可能包含在内核 5.9 中,同时您可以尝试https://github.com/lwfinger/rtw88。我已经用了一段时间了,似乎没有这些问题。驱动程序还很新,所以可能会有 bug。
编辑:全新安装 ubuntu 18.10 (uefi) 可以永久解决问题,您无需按照以下步骤操作,只需安装 ubuntu 18.10 并构建 wifi 模块即可。然后它应该可以完美运行。ubuntu 18.04 LTS 版本中可能存在一些错误,这些错误已在 18.10 版本中修复
主要问题是,由于某些未知原因,dkms 安装的 wifi 驱动程序在挂起后不会自行重新加载。
我的 WIFI 芯片是 RTL8821CE,所以我的内核模块被命名为 8821ce
root
通过发出命令打开终端登录sudo -s
,然后发出以下命令(您也可以使用sudo
而不是以...身份登录root
)
modprobe -r 8821ce
和
modprobe -i 8821ce
这些命令将重新加载 wifi 模块,并且您的 wifi 将在暂停后再次工作。
我找到了一个临时的解决方法,以避免每次从暂停状态恢复时发出这些命令。
笔记:
这种解决方法有时有效,有时无效
这可能会破坏您的暂停/恢复,但您可以通过禁用服务和删除文件简单地恢复到以前的状态。
步骤如下;
- 创建一个脚本,在恢复时(不是暂停时)发出上述命令
sudo nano /etc/pm/sleep.d 20_anyname.sh
(用您选择的任何名称替换任何名称)
并在脚本中输入以下几行
#!/bin/sh
# This script Restarts rtl8821ce kernel modules
# Use this if your wifi not working after suspend/resume
case "${1}" in
resume|thaw)
sudo modprobe -r 8821ce
sudo modprobe -i 8821ce
;;
esac
然后按CTRL+X并通过输入保存更改yes
确保已授予适当的权限
sudo chown root:root /etc/pm/sleep.d/20_anyname.sh
sudo chmod 755 /etc/pm/sleep.d/20_anyname.sh
- 通过以下方式创建 systemd 服务
sudo nano /etc/systemd/system/somename.service
输入以下文本
[Unit]
Description=Wifi Resume Service
After=sleep.target
After=hibernate.target
After=hybrid-sleep.target
[Service]
Type=oneshot
ExecStart=/path/to/your/script
[Install]
WantedBy=sleep.target
WantedBy=hibernate.target
WantedBy=hybrid-sleep.target
并保存CTRL+X然后输入yes
然后回车。
然后确保授予了适当的权限
sudo chown root:root /etc/systemd/system/somename.service
sudo chmod 755 /etc/systemd/system/somename.service
使用启用脚本
sudo systemctl enable somename
重启并享受
正如我之前所说,它有时能工作,有时不能。我真的不知道为什么会这样。要获得完全正常工作的 wifi,您需要等待开发人员将无错误模块放入即将推出的内核中,因为 rtl8821ce 仍然是一个新芯片。
首先启用本地 wifi 网络,然后暂停笔记本电脑。现在要判断脚本是否成功,请在恢复后查看右上角,如果您没有看到任何类型的 wifi 标志,则表示您可以继续,如果您一眼就看到 wifi 标志,则表示脚本失败。
查看错误journctl -u somename.service
答案2
我在联想 Ideapad330 上也遇到过同样的问题。同样的无线芯片组,挂起后恢复时也遇到同样的问题。
当阅读GitHub 上 8821ce 驱动程序的自述文件,tomaspinho 谈论可能出现的问题,尤其是“PCIe 激活状态电源管理”。
我遵循了他的建议,并在 grub cmdline 中添加了以下参数
pci=noaer
现在,暂停后我不再遇到无线问题。
答案3
我在展馆遇到了同样的问题,而接受的答案对我不起作用,我所做的如下:
在ubuntu 18.04中,创建脚本:
sudo vim /lib/systemd/system-sleep/wifi.sh
并复制并粘贴以下内容:
#!/bin/sh
case $1/$2 in
pre/*)
echo "Going to $2..."
# Place your pre suspend commands here, or `exit 0` if no pre suspend action required
;;
post/*)
echo "Waking up from $2..."
# Place your post suspend (resume) commands here, or `exit 0` if no post suspend action required
modprobe -r 8821ce && modprobe -i 8821ce
;;
esac
然后授予他用户权限:
sudo chmod a + x /lib/systemd/system-sleep/wifi.sh
准备好。