Ubuntu – Wi-Fi not working on Lenovo ThinkPad E570 (Realtek RTL8821CE)


We just bought a Lenovo ThinkPad E570 (which is supposed to have the Intel 8265 for wireless). This laptop was bought in part because it is certified to run Ubuntu and as such to me at least it would make sense for things to work out of the box… but no such luck.

First, I installed Ubuntu 17.10 and after installation realised Wi-Fi was not working. I also tried Ubuntu 16.04 from a USB drive since that is the version of Ubuntu it is certified for, but no luck there either.

The wireless chip is not detected by lshw (or even lspci by the looks of it), ip link does not show a wireless interface, and the iwlwifi kernel module is not loaded at boot (I can load this myself using modprobe iwlwifi but this does not make Wi-Fi work). I think it is a combined Wi-Fi/Bluetooth chip, and Bluetooth does appear to work (or at least Bluetooth shows up in Gnome and rfkill list).

modinfo iwlwifi | grep 8265 shows me a file ending in -34 is supposedly loaded but only a file ending in -33 (and some other lower numbers) is present in /lib/firmware, if that helps).

I have also installed the Linux 4.14.9 kernel in an attempt to get things to work, but this did not resolve the issue either.

Further information

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]


I just noticed that the laptop does not have an Intel wireless chip at all, but in fact has a Realtek one… which means that the specs presented on the product page of the shop I bought this laptop at were not accurate… Sigh. Same problem stands, however, just with a crappier wireless chip.

Best Answer

First, I would suggest that these instructions are more likely to work with Ubuntu 17.10. If you are not currently running it now, I suggest that you re-install it.

Click this link to download the driver file: https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/endlessm/linux/tree/master/drivers/net/wireless/rtl8821ce

Unless you have specified otherwise in your browser, downloads go to the directory Downloads. Open a terminal and do:

cd ~/Downloads
unzip rtl8821ce.zip
cd rtl8821ce
nano Makefile

Scroll down to line 152 and change the line that now reads:

export TopDIR ?= $(srctree)/drivers/net/wireless/rtl8821ce

To now read:

export TopDIR ?= $ ~/Downloads/rtl8821ce

Proofread carefully, twice, and save (Ctrl+o followed by Enter) and close (Ctrl+x) the text editor.

Now do:

sudo make install
sudo modprobe 8821ce

Your wireless should now be working.

EDIT: You have compiled the module for your currently running kernel version only. When Update Manager offers a later kernel version, known as linux-image, after the requested reboot, you must recompile:

cd rtl8821ce
make clean
sudo make install
sudo modprobe 8821ce

Please retain the file and these instructions for that time.

Related Question