Я пытаюсь установить драйвер карты Wi-Fi на RHEL 8 для 8821CE. Я временно использую 88XXau для USB-адаптера Wi-Fi. Я некоторое время искал решение и наткнулся на два основных репозитория git:

https://github.com/lwfinger/rtlwifi_new/tree/rtw88

https://github.com/tomaspinho/rtl8821ce/

Насколько я могу судить, rtw88 по-прежнему не поддерживает карту 8821CE.

Мне удалось установить модуль /tomaspinho dkms после редактирования кода и следования разделу вопросов, чтобы решить проблемы компиляции, связанные с версией ядра:

https://github.com/tomaspinho/rtl8821ce/issues?q=centos

В основном это включало изменение некоторых определений ifdef, чтобы они соответствовали старому ядру, которое, насколько мне известно, использует свежий или бэкпортированный код.

Теперь я нахожусь в точке, где модуль dkms установлен правильно, и я вижу модуль, загруженный в выводе lsmod, но карта все еще не обнаружена, и мне интересно, что я могу сделать с этого момента.

Спасибо заранее за вашу помощь.

ЛСмод:

lsmod | grep 8821

8821ce               2023424  0
cfg80211              806912  2 88XXau,8821ce

Ядро :

uname -r 
4.18.0-193.1.2.el8_2.x86_64

Dmesg :

dmesg | grep 8821

[    0.758821] pci_bus 0000:00: root bus resource [mem 0xfee00000-0xffffffff window]
[    3.187034] 8821ce: loading out-of-tree module taints kernel.
[    3.218784] rtl8821ce 0000:02:00.0: enabling device (0000 -> 0003)
[    3.248873] Modules linked in: crc32_pclmul(+) 8821ce(OE+) 88XXau(OE+) crc32c_intel amd_iommu_v2 gpu_sched i2c_algo_bit ttm hid_logitech_hidpp drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops cfg80211 nvme drm ghash_clmulni_intel serio_raw r8169 nvme_core rfkill realtek pinctrl_amd hid_logitech_dj dm_mirror dm_region_hash dm_log dm_mod
[    3.248981]  ? rtw_chbw_to_freq_range+0x40/0x96 [8821ce]
[    3.249021]  ? rtw_is_dfs_ch+0x34/0x70 [8821ce]
[    3.249067]  ? rtw_regd_apply_flags+0xc9/0xda [8821ce]
[    3.249113]  rtw_wiphy_register+0x1e/0x20 [8821ce]
[    3.249159]  rtw_cfg80211_ndev_res_register+0x11/0x17 [8821ce]
[    3.249203]  rtw_os_ndev_register+0xf2/0x157 [8821ce]
[    3.249248]  rtw_os_ndevs_register+0x9e/0xce [8821ce]
[    3.249292]  rtw_os_ndevs_init+0x24/0x3a [8821ce]
[    3.249334]  rtw_drv_init+0x4f/0xac [8821ce]
[    3.249389]  rtw_drv_entry+0x48/0x1000 [8821ce]
[    3.249485] WARNING: CPU: 6 PID: 528 at /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/os_dep/linux/os_intfs.c:1681 rtw_os_ndev_register+0x64/0x157 [8821ce]
[    3.249485] Modules linked in: crc32_pclmul(+) 8821ce(OE+) 88XXau(OE+) crc32c_intel amd_iommu_v2 gpu_sched i2c_algo_bit ttm hid_logitech_hidpp drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops cfg80211 nvme drm ghash_clmulni_intel serio_raw r8169 nvme_core rfkill realtek pinctrl_amd hid_logitech_dj dm_mirror dm_region_hash dm_log dm_mod
[    3.249537] RIP: 0010:rtw_os_ndev_register+0x64/0x157 [8821ce]
[    3.249589]  rtw_os_ndevs_register+0x9e/0xce [8821ce]
[    3.249632]  rtw_os_ndevs_init+0x24/0x3a [8821ce]
[    3.249675]  rtw_drv_init+0x4f/0xac [8821ce]
[    3.249722]  rtw_drv_entry+0x48/0x1000 [8821ce]
[    3.258088] WARNING: CPU: 6 PID: 528 at /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/os_dep/linux/os_intfs.c:3141 rtw_os_ndevs_register+0xa6/0xce [8821ce]
[    3.258090] Modules linked in: crct10dif_pclmul(+) crc32_pclmul 8821ce(OE+) 88XXau(OE+) crc32c_intel amd_iommu_v2 gpu_sched i2c_algo_bit ttm hid_logitech_hidpp drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops cfg80211 nvme drm ghash_clmulni_intel serio_raw r8169 nvme_core rfkill realtek pinctrl_amd hid_logitech_dj dm_mirror dm_region_hash dm_log dm_mod
[    3.258154] RIP: 0010:rtw_os_ndevs_register+0xa6/0xce [8821ce]
[    3.258215]  rtw_os_ndevs_init+0x24/0x3a [8821ce]
[    3.258262]  rtw_drv_init+0x4f/0xac [8821ce]
[    3.258319]  rtw_drv_entry+0x48/0x1000 [8821ce]
[   10.280025] Bluetooth: hci0: rtl: examining hci_ver=08 hci_rev=000c lmp_ver=08 lmp_subver=8821
[   10.280028] Bluetooth: hci0: rtl: loading rtl_bt/rtl8821c_config.bin
[   10.283364] Bluetooth: hci0: rtl: loading rtl_bt/rtl8821c_fw.bin
[   21.489998]  dm_crypt amdgpu crct10dif_pclmul crc32_pclmul 8821ce(OE) 88XXau(OE) crc32c_intel amd_iommu_v2 gpu_sched i2c_algo_bit ttm hid_logitech_hidpp drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops cfg80211 nvme drm ghash_clmulni_intel serio_raw r8169 nvme_core rfkill realtek pinctrl_amd hid_logitech_dj dm_mirror dm_region_hash dm_log dm_mod

Ifconfig (wlp4s0f3u2 — мой USB-адаптер Wi-Fi):

ifconfig -a

eno1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether f8:b4:6a:b5:fb:23  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 6454  bytes 443527 (433.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6454  bytes 443527 (433.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:74:aa:45  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0-nic: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether 52:54:00:74:aa:45  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp4s0f3u2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 2312
        inet 192.168.2.22  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::e1d3:1071:71d9:6b63  prefixlen 64  scopeid 0x20<link>
.....

Я вижу карту с помощью этой команды, но я не уверен, связано ли это с драйвером или нет:

lshw -C network

  *-network UNCLAIMED       
       description: Network controller
       product: RTL8821CE 802.11ac PCIe Wireless Network Adapter
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:02:00.0
       version: 00
       width: 64 bits
       clock: 33MHz
       capabilities: cap_list
       configuration: latency=0
       resources: ioport:f000(size=256) memory:fe900000-fe90ffff

Обновить Поскольку я пробую разные драйверы, я добавляю их в черный список в /etc/modprob.d, чтобы убедиться, что за один раз загружается только один. Пожалуйста, дайте мне знать, достаточно ли этого.

Я открыл задачу на rtw88(https://github.com/lwfinger/rtlwifi_new/issues/608. ), они подтвердили, что прошивка отсутствует, и добавили ее в репозиторий, но это создало новую проблему:

[   12.378158] rtw_8821ce 0000:02:00.0: Firmware version 24.5.0, H2C version 12
[   12.404834] rtw_8821ce 0000:02:00.0: rfe 2 isn't supported
[   12.404937] rtw_8821ce 0000:02:00.0: failed to setup chip efuse info
[   12.404939] rtw_8821ce 0000:02:00.0: failed to setup chip information

Обновление 2 Это было решено с помощью драйвера rtw88 от lwfinger после его обновления базы кода. драйвер работает как положено теперь для 8821ce!

1
Iqbal AISSAOUI 20 Июн 2020 в 19:45
Просто предположение: у вас есть файл прошивки для rtl8821ce в /lib/firmware/... ?
 – 
Jan
8 Июн 2020 в 21:52
При беглом просмотре кода сообщение rfe 2 isn't supported означает что-то вроде "необходимые определения для использования данной модели/типа карты недоступны драйверу". Возможно, что-то еще кроме прошивки нужно добавить. Я вижу, вы добавили новые сообщения об ошибках в трекер ошибок: вероятно, лучше дождаться ответа разработчика.
 – 
telcoM
9 Июн 2020 в 11:22
Я не уверен насчет драйвера tomaspinho, но он не выдает никаких ошибок в dmesg. для rtw88 разработчики загрузили прошивку, и я пересобрал драйвер, но получил другую ошибку (см. редактирование).
 – 
Iqbal AISSAOUI
9 Июн 2020 в 17:00
Спасибо за вклад, я буду ждать обновления от разработчиков rtw88. Tomaspinho казался многообещающим, поскольку кому-то удалось приступить к работе, похоже, на Centos 8 из перечисленных проблем, и он не выдает никаких ошибок, что заставляет меня думать, что это может сработать и для меня.
 – 
Iqbal AISSAOUI
9 Июн 2020 в 17:00

1 ответ

Если в вашей системе установлены КАКИЕ-ЛИБО конфликтующие драйверы, вы также должны внести их в черный список. Это будет включать такие драйверы, как rtw88_xxxx.

Также попробуйте использовать модуль ядра из следующего репо.

https://github.com/brektrou/rtl8821CU

Просто отредактируйте Makefile, как показано ниже, чтобы собрать модуль rtl8821ce.

CONFIG_USB_HCI = n
CONFIG_PCI_HCI = y
0
anex5 8 Июн 2020 в 23:12
Вы понимаете, что это rtl8821ce, а не cu? это "сестринские" карты? Просто чтобы не натворить глупостей :)
 – 
Iqbal AISSAOUI
9 Июн 2020 в 01:04
Эти карты отличаются только интерфейсом: rtl8821ce - pci-e rtl8821cu - usb-2.0 Чтобы построить модуль с именем rtl8821ce - отредактируйте Makefile, как я уже говорил. Доказательство: github.com/brektrou/rtl8821CU/blob/master/rtl8821c.mk< /а>
 – 
anex5
9 Июн 2020 в 01:28
Большое спасибо за разъяснение! Я пытался установить этот, но он не собирался: make[2]: *** Нет правила для создания цели '/var/lib/dkms/rtl8821CU/5.4.1/build/os_dep/linux/pci_intf.o', требуется для «/var/lib/dkms/rtl8821CU/5.4.1/build/8821ce.o». Останавливаться.
 – 
Iqbal AISSAOUI
9 Июн 2020 в 01:59
Что касается проблем с конфликтами, я пытаюсь установить любой из них, но я использую /etc/modprobe.d/blacklist.conf для внесения их в черный список. они по-прежнему отображаются как установленные в «состоянии dkms», но они не загружаются, если я проверяю через lsmod
 – 
Iqbal AISSAOUI
9 Июн 2020 в 02:05
Кажется, на github.com/brektrou/rtl8821CU не хватает pci-e, так что забудьте об этом. Кстати, какой ноутбук вы используете?
 – 
anex5
9 Июн 2020 в 16:09