为什么 20.04.4 LTS 内核更新期间会删除 RTL8821CE 或 WIFI

为什么 20.04.4 LTS 内核更新期间会删除 RTL8821CE 或 WIFI

我的问题有两个方面。

  1. 为什么内核更新会导致我的 WIFI 失效?我想知道具体细节,以及失效的机制。

  2. 有什么方法可以防止这种情况发生?再次详细说明,我没有计算机技能,也不懂脚本等。

背景信息

我曾三次经历过内核更新导致同一台计算机上的 wifi 瘫痪。20.04 LTS

  1. 我第一次在 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

  1. 第二次发生这种情况时,第一个解决方案不起作用。我发现通过 AU 的另一种解决方案使用以下命令:

sudo apt remove rtl8821ce-dkms && sudo apt install rtl8821ce-dkms

reboot

  1. 第三次内核更新导致我的 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 中删除了其他驱动程序。最后,您的无线网络就可以正常工作了。

相关内容