![RHEL 8에 Realtek 8821ce 설치](https://linux55.com/image/174772/RHEL%208%EC%97%90%20Realtek%208821ce%20%EC%84%A4%EC%B9%98.png)
RHEL 8에 8821CE용 Wi-Fi 카드 드라이버를 설치하려고 합니다. 저는 일시적으로 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:
lsmod | grep 8821
8821ce 2023424 0
cfg80211 806912 2 88XXau,8821ce
핵심:
uname -r
4.18.0-193.1.2.el8_2.x86_64
정보:
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 코드 베이스를 업데이트한 후 lwfinger는 rtw88 드라이버에서 이 문제를 해결했습니다. 이제 드라이버가 8821ce에서 예상대로 작동합니다!
답변1
시스템에 충돌하는 드라이버가 설치되어 있는 경우 해당 드라이버도 블랙리스트에 추가해야 합니다. 여기에는 rtw88_xxxx와 같은 드라이버가 포함됩니다.
다음 리포지토리에서 커널 모듈을 사용해 볼 수도 있습니다.
https://github.com/brektrou/rtl8821CU
rtl8821ce 모듈을 빌드하려면 아래와 같이 Makefile을 편집하기만 하면 됩니다.
CONFIG_USB_HCI = n
CONFIG_PCI_HCI = y