![为什么 20.04.4 LTS 内核更新期间会删除 RTL8821CE 或 WIFI](https://linux22.com/image/1186283/%E4%B8%BA%E4%BB%80%E4%B9%88%2020.04.4%20LTS%20%E5%86%85%E6%A0%B8%E6%9B%B4%E6%96%B0%E6%9C%9F%E9%97%B4%E4%BC%9A%E5%88%A0%E9%99%A4%20RTL8821CE%20%E6%88%96%20WIFI.png)
我的问题有两个方面。
为什么内核更新会导致我的 WIFI 失效?我想知道具体细节,以及失效的机制。
有什么方法可以防止这种情况发生?再次详细说明,我没有计算机技能,也不懂脚本等。
背景信息
我曾三次经历过内核更新导致同一台计算机上的 wifi 瘫痪。20.04 LTS
- 我第一次在 AU 上找到解决方案,现在找不到链接了,通过 Tomaspinho github 驱动程序页面和 #that 成功了。我手动下载了驱动程序 zip 文件,解压并将文件夹从 RTL8821CE-Master 重命名为 RTL8821CE,然后 cd Downloads/rtl8821ce/ 或右键单击文件夹打开终端
sudo apt install bc module-assistant build-essential dkms
sudo m-a prepare
sudo ./dkms-install.sh
reboot
- 第二次发生这种情况时,第一个解决方案不起作用。我发现通过 AU 的另一种解决方案使用以下命令:
sudo apt remove rtl8821ce-dkms && sudo apt install rtl8821ce-dkms
reboot
- 第三次内核更新导致我的 WIFI 断线,我再次使用了第二种解决方案,但失败了,#没有用。我再次尝试了第一种解决方案——#也失败了。
经过几个小时的研究,我找到了一个解决方案,但一无所获。我决定永远把手机和电脑绑定在一起,不再处理将来的情况。带着这个想法,我最后一次用以下命令删除了驱动程序:
sudo apt remove rtl8821ce-dkms
reboot
WIFI 现已运行... 这是怎么发生的?我不知道。
在此之前,5.13.0.39 只是作为软件更新程序的常规更新安装的,发生于 2022 年 4 月 7 日
安全启动已关闭
我在 AU 上找到了 299 个有关 RTL8821CE 的问题,其中许多都是有关驱动程序安装的同一类型的问题,但没有一个能回答为什么内核更新会导致我的机器上的 wifi 瘫痪。
我试过的所有答案都对我不起作用。但不知何故,删除驱动程序后,驱动程序可以正常工作 - 我不明白,这导致我问了上面的问题。
当然,如果您需要从我的机器获取任何信息,请告诉我什么信息以及如何以您想要的格式获取它,我很乐意为您效劳。
也许我会反复使用命令的日志来准确显示发生了什么。索要它,你会得到它,请指定日志命令和格式。
Ubuntu 20.04.4 LTS
HP 笔记本 15-ef1082nr
FCC ID:TX2-rtl8821ce
芯片:6317A-rtl8821ce
**sudo lshw -C network
[sudo] password for x:
*-network
description: Wireless interface
product: RTL8821CE 802.11ac PCIe Wireless Network Adapter
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:02:00.0
logical name: wlo1
version: 00
serial: UN:ID:EN:TI:FI:ED
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=rtw_8821ce driverversion=5.13.0-39-generic firmware=N/A ip=192.168.0.161 latency=0 link=yes multicast=yes wireless=IEEE 802.11
resources: irq:56 ioport:f000(size=256) memory:fce00000-fce0ffff
lspci -nnk | grep 0280 -A3
02:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8821CE 802.11ac PCIe Wireless Network Adapter [10ec:c821]
DeviceName: Realtek Chopard RTL8821CE 802.11ac 1x1 +BT 4.2 M.2 2230 PCI-e+USB WW
Subsystem: Hewlett-Packard Company RTL8821CE 802.11ac PCIe Wireless Network Adapter [103c:831a]
Kernel driver in use: rtw_8821ce
nmcli d
DEVICE TYPE STATE CONNECTION
wlo1 wifi connected my connection
lo loopback unmanaged --
sudo dmesg | grep 8821
[ 4.089669] Bluetooth: hci0: RTL: examining hci_ver=08 hci_rev=000c lmp_ver=08 lmp_subver=8821
[ 4.096760] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821c_fw.bin
[ 4.097817] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821c_config.bin
[ 4.166208] rtw_8821ce 0000:02:00.0: enabling device (0000 -> 0003)
[ 4.167688] rtw_8821ce 0000:02:00.0: Firmware version 24.8.0, H2C version 12
[ 4.399449] 8821ce: loading out-of-tree module taints kernel.
[ 4.414707] 8821ce: module verification failed: signature and/or required key missing - tainting kernel
[ 4.519533] proc_dir_entry 'net/rtl8821ce' already registered
[ 4.519561] Modules linked in: rtl8821ce(OE+) snd_hda_intel snd_intel_dspcfg snd_intel_sdw_acpi snd_hda_codec snd_hda_core 8821ce(OE) snd_hwdep snd_pcm snd_seq_midi snd_seq_midi_event amdgpu(+) intel_rapl_msr snd_rawmidi intel_rapl_common iommu_v2 rtw88_8821ce gpu_sched drm_ttm_helper rtw88_8821c ttm edac_mce_amd rtw88_pci btusb snd_seq drm_kms_helper btrtl btbcm snd_seq_device cec btintel snd_timer rtw88_core rc_core bluetooth kvm snd_rn_pci_acp3x i2c_algo_bit fb_sys_fops snd snd_pci_acp3x syscopyarea ecdh_generic sysfillrect ecc sysimgblt ccp joydev soundcore mac80211 crct10dif_pclmul ghash_clmulni_intel aesni_intel hp_wmi crypto_simd platform_profile sparse_keymap cryptd cfg80211 rapl input_leds uvcvideo libarc4 serio_raw hid_multitouch k10temp efi_pstore wmi_bmof videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc hp_wireless mac_hid acpi_tad sch_fq_codel ipmi_devintf ipmi_msghandler msr parport_pc ppdev lp parport drm ip_tables x_tables autofs4
[ 4.519748] rtw_drv_proc_init+0x3b/0xc8 [rtl8821ce]
[ 4.519884] rtw_drv_entry+0x28/0x1000 [rtl8821ce]
[ 4.520104] WARNING: CPU: 1 PID: 337 at /var/lib/dkms/rtl8821ce/5.5.2.1/build/os_dep/linux/rtw_proc.c:296 rtw_drv_proc_init+0x54/0xc8 [rtl8821ce]
[ 4.520220] Modules linked in: rtl8821ce(OE+) snd_hda_intel snd_intel_dspcfg snd_intel_sdw_acpi snd_hda_codec snd_hda_core 8821ce(OE) snd_hwdep snd_pcm snd_seq_midi snd_seq_midi_event amdgpu(+) intel_rapl_msr snd_rawmidi intel_rapl_common iommu_v2 rtw88_8821ce gpu_sched drm_ttm_helper rtw88_8821c ttm edac_mce_amd rtw88_pci btusb snd_seq drm_kms_helper btrtl btbcm snd_seq_device cec btintel snd_timer rtw88_core rc_core bluetooth kvm snd_rn_pci_acp3x i2c_algo_bit fb_sys_fops snd snd_pci_acp3x syscopyarea ecdh_generic sysfillrect ecc sysimgblt ccp joydev soundcore mac80211 crct10dif_pclmul ghash_clmulni_intel aesni_intel hp_wmi crypto_simd platform_profile sparse_keymap cryptd cfg80211 rapl input_leds uvcvideo libarc4 serio_raw hid_multitouch k10temp efi_pstore wmi_bmof videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc hp_wireless mac_hid acpi_tad sch_fq_codel ipmi_devintf ipmi_msghandler msr parport_pc ppdev lp parport drm ip_tables x_tables autofs4
[ 4.520313] RIP: 0010:rtw_drv_proc_init+0x54/0xc8 [rtl8821ce]
[ 4.520453] rtw_drv_entry+0x28/0x1000 [rtl8821ce]
[ 4.520667] Error: Driver 'rtl8821ce' is already registered, aborting...
[ 4.608104] rtw_8821ce 0000:02:00.0 wlo1: renamed from wlan0
[ 6.682777] rtw_8821ce 0000:02:00.0: start vif UN:ID:EN:TI:FI:ED on port 0
[ 11.754652] rtw_8821ce 0000:02:00.0: sta UN:ID:EN:TI:FI:ED joined with macid 0
uname -r
5.13.0-39-generic**
lsmod | grep 8821
8821ce 1794048 0
rtw88_8821ce 16384 0
rtw88_8821c 94208 1 rtw88_8821ce
rtw88_pci 24576 1 rtw88_8821ce
rtw88_core 200704 2 rtw88_pci,rtw88_8821c
cfg80211 888832 3 rtw88_core,mac80211,8821ce
sudo dkms status
[sudo] password for x:
rtl8821ce, v5.5.2_34066.20200325, 5.13.0-39-generic, x86_64: built
编辑:我只是想填补一些导致我陷入这种不幸境地的谜团,以便其他人可以从我的错误中吸取教训。
当这台电脑刚出厂时,我取出装有 Windows 版本“n”的 SSD,并在打开设备电源之前将其替换为另一个空的全新出厂 SSD。在安装 Ubuntu 20.04.3 LTS 之前,我从 USB Live 运行 Ubuntu,以确保它正常运行。在这次 Ubuntu Live 测试期间,WIFI 正常工作。
安装后,WIFI 不可用。我使用手机进行网络共享,匆忙使用了第一个符合明显条件的答案。我安装了 rtl8821ce 驱动程序并重新启动。这使我的 WIFI 可以正常工作。但是,这最终导致了如上所述的冲突。
安装驱动程序之前请小心谨慎并耐心等待,寻求帮助并等待这个社区的好心人来帮助你。:)
通过以下步骤和答案,我拥有一个运行良好的 Wifi,包括最新的内核更新:5.15.0-52 初始内核是 5.13.0.39
答案1
内核更新后,您的 wifi 不再工作,因为最新内核包含一个内置模块 rtw88_8821ce,该模块工作不正常,而且与您之前下载和安装的驱动程序冲突。让我们将其删除并将其列入黑名单:
sudo -i
modprobe -r rtw88_8821ce
modprobe 8821ce
echo “blacklist rtw88_8821ce” >> /etc/modprobe.d/blacklist.conf
exit
尽管可能需要重新启动,但您的 WiFi 现在应该可以正常工作了。
编辑:您可以通过列出正在使用的模块并过滤 8821 来验证正在使用哪个驱动程序:
lsmod | grep 8821
您可以查看通过 dkms 安装了哪些驱动程序:
sudo dkms status
根据这些读数的结果,我将在另一次编辑中建议采取进一步的步骤。
dmesg 中的这一行表明两个驱动程序存在冲突:
错误:驱动程序‘rtl8821ce’已注册,正在中止...
编辑2:在我们的聊天中,我们发现存在三个冲突的驱动程序:8821ce、rtl8821ce 和本机内核驱动程序 rtw88_8821ce。
我们将其中两个列入黑名单,以查看其中哪个可以正确驱动您的无线设备。我们继续将其列入黑名单并重新启动,直到我们发现工作效果最好的驱动程序是 rtw88_8821ce。我们将 blacklist.conf 文件保留在该状态。
然后我们从 dkms 中删除了其他驱动程序。最后,您的无线网络就可以正常工作了。