更新
lspci
以下是我原来的问题和补充信息。最初我以为我的硬件是 rtl8821ce 芯片,但从与的输出进行比较这个帖子,看来我拥有的无线设备实际上是 8822ce 芯片。以前这个问题的标题没有反映这个事实,所以我编辑了它。
我有一个无法解决的问题,希望得到一些帮助。我有一台全新的联想 IdeaPad 笔记本电脑,最近我在上面安装了 Ubuntu 18.04.4。不幸的是,Ubuntu 无法识别我的 wifi,提示“未找到 wifi 适配器”。
一些输出:
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
值得注意的是,在其他帖子中类似命令的输出中,网络适配器显示:“RTL8821CE”,而我的输出没有。
我到目前为止尝试过的:
首先,我尝试rtl8821ce-dkms
像这样安装:
sudo apt-get install rtl8821ce-dkms
sudo modprobe rtl8821ce
sudo modprobe -r ideapad_laptop
另外,我在 BIOS 中禁用了安全启动。这没有效果。Ubuntu 仍然显示相同的消息。
接下来,我尝试直接从 tomaspinho GitHub 安装驱动程序,如下所示(删除 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
再次,这没有效果。Ubuntu 仍然显示相同的消息。
有趣的是,现在当我运行时dmesg | grep -i 8821
,我得到:
[ 94.460377] 8821ce: loading out-of-tree module taints kernel.
[ 94.461221] 8821ce: module verification failed: signature and/or required key missing - tainting kernel
我怀疑这个驱动程序可能不支持我的硬件有人能帮助我了解我需要做什么来解决这个“没有 wifi 适配器”的问题吗?
其他尝试:
正如建议的那样这里,我尝试更新我机器上的软件包版本linux-firmware
。我尝试了几个不同的版本,但都不起作用。 我做了什么:
wget http://security.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_<version>_all.deb
sudo dpkg -i linux-firmware_<version>_all.deb
我尝试的“ <versions>
”是:
- 1.173.16(这似乎是服务器中最后修改的那个)。
- 1.178
- 1.186(迄今为止的最新版本)。
我仍然收到“没有 wifi 适配器”的消息。
答案1
最后,我找到了解决办法!(感谢这一页)。
事实证明,支持我的硬件(rtw88)的驱动程序在内核 > 5.2(我有 5.3.0-46-generic)中已经可用并且与该硬件兼容,但它未设置为识别我的硬件。 为了解决这个问题,我必须对源代码进行少许修改来编译 Linux 内核(下面解决方案中的第 2 步)。以下是我所做的:
1)获取您选择的 Linux 源代码。就我而言,我使用了主线内核:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
2)找到文件:./linux/drivers/net/wireless/realtek/rtw88/pci.c
,然后编辑它。查找字符串'0xC822'
,并将其替换为'0xC82F'
3)根据说明继续编译内核。为了保证我的回答完整,我做了以下事情:
cd 到 ./linux 文件夹。
使用当前内核的配置:
cp /boot/config-$(uname -r) .config
make menuconfig
。这里有很多选项需要配置。最好的办法是保留它们(保存并退出)。编译安装:
i)
make
或make -j8
(并行使用 8 个线程,而不是一个线程)。这将需要一段时间才能完成...ii)
sudo make modules_install
.三)
sudo make install
启用内核进行启动:
i)
sudo update-initramfs -c -k 5.7.0-rc1+
。当然,使用已安装的内核版本(我的情况是 5.7.0-rc1+)。如果不确定内核版本:“ls /lib/modules/”并查看安装了哪些内核模块。二)
sudo update-grub
就是这样。重新启动并确保启动到新内核。wifi 现在应该可以正常工作了。
答案2
我在 Amine Tech 频道上找到了一个 YouTube 视频,其中有解决此问题的方法。该视频:https://www.youtube.com/watch?v=vPfLVsyQU_A
虽然我无法验证此方法的安全性,但它对我来说很有效,而且自从这样做以来我没有遇到任何问题。
将您的设备连接到有线网络或使用网络共享将您的设备连接到互联网,然后打开终端并输入以下命令:
sudo apt update
sudo apt install -y dkms git
git clone https://github.com/tomaspinho/rtl8821ce.git
断开您所连接的所有网络,然后输入以下命令:
cd rtl8821ce
sudo ./dkms-install.sh
sudo modprobe 8821ce
iwconfig
您现在应该可以通过 WiFi 连接。
答案3
使用 Lenovo Ideapad S145-15iil 和 rtl 8822ce 时我使用了以下命令: https://github.com/lwfinger/rtlwifi_new其基本含义是:
git clone http://github.com/lwfinger/rtlwifi_new.git -b rtw88
在 pci.c 中,我将“0xC822”替换为“0xC82F”。然后 make clean、make、make install(以 root 身份),然后 modprobe rtwpci(它自动加载 rtw88),并执行:echo rtwpci >> /etc/modules,以在启动时自动加载模块。
警告:虽然这取得了进展,SSID 是可见的,但仍然无法与 SSID 关联。这是在 Ubuntu 20.04 上使用 WPA2 以及开放网络时发生的。消息是:
wlp1s0: SME: Deauth request to the driver failed