6

Update

Below is my original question with supplemented information. Initially I thought my hardware is the rtl8821ce chip, but from comparing the output of lspci with this post, it seems the wireless device I have is in fact the 8822ce chip. Previously the title of this question did not reflect this fact, so I edited it.


I have a problem I couldn't resolve, and I would appreciate some help with it. I have a brand new Lenovo IdeaPad laptop, on which I recently installed Ubuntu 18.04.4. Unfortunately Ubuntu doesn't recognize my wifi, saying: "No wifi adapter found".

Some outputs:

lspci -nnk | grep 0280 -A3:

01:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. Device [10ec:c82f]
    Subsystem: Lenovo Device [17aa:c02f]

rfkill list all:

0: ideapad_wlan: Wireless LAN
    Soft blocked: no
    Hard blocked: no
1: ideapad_bluetooth: Bluetooth
    Soft blocked: yes
    Hard blocked: no
5: hci0: Bluetooth
    Soft blocked: yes
    Hard blocked: no

sudo lshw -C network

  *-network UNCLAIMED       
   description: Network controller
   product: Realtek Semiconductor Co., Ltd.
   vendor: Realtek Semiconductor Co., Ltd.
   physical id: 0
   bus info: pci@0000:01:00.0
   version: 00
   width: 64 bits
   clock: 33MHz
   capabilities: pm msi pciexpress cap_list
   configuration: latency=0
   resources: ioport:4000(size=256) memory:93000000-9300ffff

An interesting thing to note is that in outputs of similar commands in other posts the network adapter shows: "RTL8821CE", and my output doesn't.

What I tried so far:

First, I tried installing the rtl8821ce-dkms like so:

sudo apt-get install rtl8821ce-dkms
sudo modprobe rtl8821ce
sudo modprobe -r ideapad_laptop

And I additionally disabled secure boot in the BIOS. This had no effect. Ubuntu still gives the same message.

Next, I tried to install the driver directly from the tomaspinho GitHub like so (after removing rtl8821ce-dkms):

sudo apt-get install git dkms build-essential linux-headers-$(uname -r)
cd /usr/local/src/
sudo git clone https://github.com/tomaspinho/rtl8821ce
cd rtl8821ce/
sudo chmod +x dkms-install.sh
sudo chmod +x dkms-remove.sh
sudo ./dkms-install.sh
sudo modprobe 8821ce

Again, this had no effect. Ubuntu still gives the same message.

Interestingly, now when I run dmesg | grep -i 8821, I get:

[   94.460377] 8821ce: loading out-of-tree module taints kernel.
[   94.461221] 8821ce: module verification failed: signature and/or required key missing - tainting kernel

I suspect that maybe my hardware is not supported by this driver. Can anybody help me to understand what I need to do to resolve this "No wifi adapter" issue?

Additional attempts:

As was suggested here, I attempted to update the version of linux-firmware package on my machine. I tried a few different versions, but none worked. What I did:

wget http://security.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_<version>_all.deb
sudo dpkg -i linux-firmware_<version>_all.deb

where the "<versions>" I tried were:

  • 1.173.16 (which seems to be the one that was last modified in the server).
  • 1.178
  • 1.186 (which is the latest version to date).

I still get the "No wifi adapter" message.

8
  • Please dit your question to show the result of the terminal command: lspci -nnk | grep 0280 -A3 and also: rfkill list all
    – chili555
    Mar 12, 2020 at 20:31
  • Possibly useful: askubuntu.com/questions/1215532/…
    – chili555
    Mar 12, 2020 at 20:40
  • @chili555, I edited the question with the output you requested. Thanks for bringing to my attention the post in the above link. It seems to be a situation similar to mine.
    – yaron160
    Mar 12, 2020 at 21:30
  • I agree with the comment at the question I linked: "I couldn't find any drivers that support [10ec:c82f]" Sorry.
    – chili555
    Mar 13, 2020 at 0:10
  • It seems that the drivers are now available in linux-firmware. Specifically, the file rtw8822c_fw.bin is available in git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git. However I don't know how it can be used or installed. Anybody can help with this?
    – yaron160
    Mar 22, 2020 at 6:59

3 Answers 3

6

Finally, I found a solution! (thanks to the answer in this page).

It turns out the driver that should support my hardware (rtw88) was available and compatible with this hardware already in kernel > 5.2 (I had 5.3.0-46-generic), but it is not set to recognize my hardware. To fix the problem I had to compile linux kernel with a small modification in the source code (step 2 in the solution below). Here's what I've done:

1) Get the linux source code of your choice. In my case I used the mainline kernel:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

2) locate the file: ./linux/drivers/net/wireless/realtek/rtw88/pci.c, and edit it. Look for the string '0xC822', and replace it with '0xC82F'

3) Continue with compilation of the kernel according to instructions. For completeness of my answer, here is what I did:

  1. cd to the ./linux folder.

  2. Use configurations from current kernel: cp /boot/config-$(uname -r) .config

  3. make menuconfig. Here there are a lot of options to configure. Best thing to do is to just leave them as they are (save and exit).
  4. Compiling and installing:

    i) make or make -j8 (to use 8 threads in parallel instead of just one). This will take a while to complete...

    ii) sudo make modules_install.

    iii) sudo make install

  5. Enable the kernel for boot:

    i) sudo update-initramfs -c -k 5.7.0-rc1+. Of course, use the kernel version installed (in my case 5.7.0-rc1+). If not sure of the kernel version: "ls /lib/modules/" and see what kernel modules are installed.

    ii) sudo update-grub

That's it. Reboot and be sure to boot into the new kernel. The wifi should now work.

3
+50

I found a YouTube video on the channel Amine Tech which has a solution to this problem. The video: https://www.youtube.com/watch?v=vPfLVsyQU_A

Although I cannot verify the security or safety of this method, it worked for me and I have not had a problem since doing it.

Connect your device to a wired network or use tethering to connect your device to the internet, then open a Terminal and type the following commands:

sudo apt update
sudo apt install -y dkms git
git clone https://github.com/tomaspinho/rtl8821ce.git

Disconnect from any networks you are connected to, then type the following commands:

cd rtl8821ce
sudo ./dkms-install.sh
sudo modprobe 8821ce
iwconfig

You should now be able to connect via WiFi.

1
  • That's not it. If you go over my question you'll see that I already tried that. It seems the chip I have is not the 8821CE, but 8822CE, to which I still haven't found a driver that work. Perhaps the title is a bit misleading...
    – yaron160
    Apr 18, 2020 at 21:40
1

With a Lenovo Ideapad S145-15iil and a rtl 8822ce I used this: https://github.com/lwfinger/rtlwifi_new which basically means:

git clone http://github.com/lwfinger/rtlwifi_new.git -b rtw88

and in pci.c I replaced '0xC822', with '0xC82F'. Then make clean, make, make install (as root), then modprobe rtwpci (it auto loads rtw88), and did: echo rtwpci >> /etc/modules , to auto load the module at boot.

Warning: Although this made progress, SSIDs were visible but it still was not possible to associate with an SSID. This on Ubuntu 20.04, with WPA2 but also with open networks. Message was:

wlp1s0: SME: Deauth request to the driver failed

Not the answer you're looking for? Browse other questions tagged or ask your own question.