联想ThinkPad E570(Realtek RTL8821CE)无法使用Wi-Fi
我们刚买了一台联想ThinkPad E570(本应该配备英特尔8265无线)。 这台笔记本电脑的购买部分原因是因为它经过认证可以运行Ubuntu,因此至少对于开箱即用的东西是有意义的……但没有这样的运气。
首先,我安装了Ubuntu 17.10,安装后实现了Wi-Fi无法正常工作。 我也从USB驱动器尝试过Ubuntu 16.04,因为它是经过认证的Ubuntu版本,但也没有运气。
lshw
没有检测到无线芯片(或者看起来就是lspci
), ip link
没有显示无线接口,并且iwlwifi
内核模块没有在启动时加载(我可以使用modprobe iwlwifi
自己modprobe iwlwifi
但是这样做不要让Wi-Fi工作)。 我认为它是一个组合的Wi-Fi /蓝牙芯片,蓝牙确实可以工作(或者至少蓝牙出现在Gnome和rfkill list
)。
modinfo iwlwifi | grep 8265
modinfo iwlwifi | grep 8265
向我显示一个以-34结尾的文件应该被加载但是只有一个文件以-33结尾(以及一些其他较低的数字)存在于/lib/firmware
,如果这有帮助的话)。
我还安装了Linux 4.14.9内核以试图让事情发挥作用,但这也没有解决问题。
更多的信息
root@ThinkPad-E570:~# modinfo iwlwifi | grep 8265 firmware: iwlwifi-8265-34.ucode root@ThinkPad-E570:~# rfkill list all 0: tpacpi_bluetooth_sw: Bluetooth Soft blocked: no Hard blocked: no 1: hci0: Bluetooth Soft blocked: no Hard blocked: no root@ThinkPad-E570:~# dmesg | grep iwl root@ThinkPad-E570:~# lspci -nnk | grep 0280 -A3 05:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. Device [10ec:c821] Subsystem: Lenovo Device [17aa:c024]
更新
我只是注意到笔记本电脑根本没有英特尔无线芯片,但事实上有一个Realtek …这意味着我在购买这台笔记本电脑的商店产品页面上显示的规格并不准确……叹。 然而,同样的问题就是使用更加蹩脚的无线芯片。
首先,我建议这些说明更有可能与Ubuntu 17.10一起使用。 如果您现在没有运行它,我建议您重新安装它。
单击此链接下载驱动程序文件: https : //minhaskamal.github.io/DownGit/#/home?url = https://github.com/endlessm/linux/tree/master/drivers/net/wireless/rtl8821ce
除非您在浏览器中另行指定,否则下载将转到目录下载 。 打开终端并执行:
cd ~/Downloads unzip rtl8821ce.zip cd rtl8821ce nano Makefile
向下滚动到第152行并更改现在读取的行:
export TopDIR ?= $(srctree)/drivers/net/wireless/rtl8821ce
现在看:
export TopDIR ?= $ ~/Downloads/rtl8821ce
仔细校对,两次,然后保存(Ctrl + o然后按Enter)并关闭(Ctrl + x)文本编辑器。
现在做:
make sudo make install sudo modprobe 8821ce
您的无线现在应该正常工作。
编辑:您已经为当前运行的内核版本编译了模块。 当Update Manager在请求的重新引导后提供更新的内核版本(称为linux-image)时,您必须重新编译:
cd rtl8821ce make clean make sudo make install sudo modprobe 8821ce
请保留该文件和这些说明。
更新2018-02-27
请注意建议的驱动程序适用于Endless OS ,因此它可能随时中断。 如果任何机构有Ubuntu的官方驱动程序,它会更好。
原始答案
这不是一个新的答案,会更好的评论。
所以我试着关注@ chili555的答案,但在尝试制作模块时我一直都遇到错误。
错误如:
/rtl8821ce/include/osdep_service_linux.h:294:2: error: implicit declaration of function 'timer_setup'; did you mean 'ether_setup'? [-Werror=implicit-function-declaration] timer_setup(ptimer, pfunc, 0); ^~~~~~~~~~~ ether_setup
所以我尝试下载一个不同的版本 ( zip存档直接下载链接 ),在原始答案的时候也可能是主人。 然后我就可以按照@ chili555提供的步骤制作模块并安装
计时器错误的解决方案。
我设法使用ubuntu 16.04使我的联想E570工作,这是我的步骤:首先,我使用本指南将我的内核版本升级到4.15.4
我相信任何4.15.4以上的内核版本都应该可以工作,因为我必须再次将内核升级到4.15.9。 请注意,需要重新安装驱动程序。
然后,我按照@ chili555答案中提到的步骤进行操作
这是stason的回答建议使用dkms的后续行动。
据我所知,在撰写本文时,官方Ubuntu存储库中还没有Realtek RTL8821CE的Wifi驱动程序。
在github上有一个存储库,其中包含针对内核4.14及更高版本的RTL8821CE驱动程序,专门针对Arch Linux而不支持其他Linux发行版: https : //github.com/tomaspinho/rtl8821ce
然而,据报道它可以与Ubuntu 18.04一起使用。
将需要临时的互联网连接(例如以太网电缆 , USB wifi加密狗或使用USB电缆连接您的手机并“ 绑定 ”它以使用您的手机的Wifi)
解决方案直接来自Praseodym的第4篇文章(对他们的智慧赞不绝口!): https : //ubuntuforums.org/showthread.php?t = 2398917并将安装一些用于构建wifi驱动程序模块的软件包(git) ,dkms,build-essential和linux-headers)并从tomaspinho克隆rtl8821ce git存储库(也很赞!)。
使用DKMS是因为它是“在安装或更新新内核时会自动重新编译和安装内核模块的系统”。
打开终端并键入以下行(如果您愿意,可以剪切和粘贴):
sudo apt-get install --reinstall git dkms build-essential linux-headers-$(uname -r) git clone https://github.com/tomaspinho/rtl8821ce cd rtl8821ce chmod +x dkms-install.sh chmod +x dkms-remove.sh sudo ./dkms-install.sh
成功完成此操作后,您应该重新启动并发现您的Wifi正在运行。
您还希望确保BIOS设置中的SecureBoot已禁用 ,或者它不允许您加载未签名的自编译内核模块。
可以在这里找到rtl8821ce的dkms build / install: https : //github.com/tomaspinho/rtl8821ce
使用该方法时,每次更新内核时都不需要重建模块。
我刚用联想Idea 720s和kubuntu 18.04一起构建它。
另外,我建议您编辑Makefile以将日志级别从4(信息)更改为3(警告)。 否则你会发现你的/var/log/syslog
以疯狂的速度填满来自驱动程序的无用信息消息。
所以编辑Makefile,改变:
CONFIG_RTW_LOG_LEVEL = 4
至:
CONFIG_RTW_LOG_LEVEL = 3
然后按照说明构建和安装模块。 如果您已经安装了它,则需要将其卸载(使用dkms-remove.sh
),然后重新安装。
或者,您可以手动更改日志级别,直到下次重新启动:
echo 3 > /proc/net/rtl8821ce/log_level
更新:维护者更改了Makefile以反映此建议,因此如果您进行新的结帐/下载,它将具有正确(安静)设置。