Вопрос или проблема
Я пытаюсь установить драйвер для моей WiFi-карты на RHEL 8 для 8821CE. Временно использую 88XXau для USB WiFi-адаптера. Я искал решение в течение некоторого времени и наткнулся на два основных репозитория 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:
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 гхаш_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 WiFi адаптер):
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!
Если в вашей системе установлены КАКИЕ-ЛИБО конфликтующие драйверы, вы также должны внести их в черный список. Это будет включать драйверы, такие как rtw88_xxxx.
Также попробуйте использовать модуль ядра из следующего репозитория.
https://github.com/brektrou/rtl8821CU
Просто отредактируйте Makefile, как показано ниже, чтобы собрать модуль rtl8821ce
CONFIG_USB_HCI = n
CONFIG_PCI_HCI = y
Ответ или решение
Для установки драйвера для Wi-Fi карты Realtek 8821CE на RHEL 8, важно соблюдать пошаговый подход с учетом специфики данного драйвера и возможных проблем совместимости с ядром. Давайте рассмотрим детальный процесс установки и решения возможных проблем, основываясь на предоставленном описании и опыте пользователей.
Шаги по установке и настройке драйвера 8821CE на RHEL 8
-
Подготовка системы:
Убедитесь, что у вас есть временное интернет-соединение (например, через USB Wi-Fi адаптер, как указано в описании). Это важно для загрузки необходимых пакетов и обновлений. -
Выбор подходящего репозитория драйверов:
Согласно информации, имеющейся у вас, для установки драйвера 8821CE рекомендуется использовать репозиторий GitHub отtomaspinho/rtl8821ce
. Необходимо учесть, что возможно потребуется редактирование кода для адаптации к вашей версии ядра. Также можно попробовать альтернативные репозитории, например, как указано в вашем обновлении,lwfinger/rtw88
теперь поддерживает 8821CE. -
Установка DKMS и необходимых пакетов:
sudo dnf install epel-release sudo dnf install dkms kernel-devel kernel-headers gcc make git
-
Клонирование и установка драйвера:
-
Клонируйте репозиторий:
git clone https://github.com/tomaspinho/rtl8821ce.git cd rtl8821ce
-
Настройте Makefile для установки PCI версии драйвера:
Откройте Makefile и измените параметры:CONFIG_USB_HCI = n CONFIG_PCI_HCI = y
-
Установите драйвер:
sudo ./dkms-install.sh
-
-
Убедитесь, что другие драйверы не конфликтуют:
Вы можете добавить другие драйверы в черный список, чтобы избежать конфликтов. Создайте файл в/etc/modprobe.d/
для каждого драйвера, который хотите заблокировать, и добавьте строку вида:blacklist <driver-name>
-
Проверка установки:
-
Убедитесь, что модуль загружен:
lsmod | grep 8821ce
-
Проверьте, распознается ли карта:
lshw -C network
-
Проверьте логи системы для диагностики возможных проблем:
dmesg | grep -i 8821ce
-
-
Решение проблем:
Если модуль загружается, но карта не обнаруживается, проверьте выводdmesg
на наличие ошибок конфигурации, как в случае сrfe 2 isn't supported
. Такие ошибки обычно требуют обновления драйвера или пересмотра конфигурации в репозитории.
Резюме
Итак, установка драйвера Realtek 8821CE на RHEL 8 требует внимательного подхода к выбору репозитория и внесения возможных правок в конфигурационные файлы для адаптации к специфике вашей системы. Параллельное использование временного интернета и избегание конфликтов с другими драйверами также играют важную роль в успешной настройке. Вам следует регулярно проверять обновления для используемого репозитория, так как разработчики могут выпустить исправления, которые решат проблемы совместимости.