Обновление
Ниже мой исходный вопрос с дополненной информацией. Первоначально я думал, что мое оборудование - это чип rtl8821ce, но, сравнив вывод lspci
с в этом посте , похоже, что беспроводное устройство, которое у меня есть, на самом деле является чипом 8822ce. Ранее заголовок этого вопроса не отражал этого факта, поэтому я его отредактировал.
У меня есть проблема, которую я не могу решить, и я был бы признателен за помощь. У меня новый ноутбук Lenovo IdeaPad, на который я недавно установил Ubuntu 18.04.4. К сожалению, Ubuntu не распознает мой Wi-Fi, говоря: «Адаптер Wi-Fi не найден».
lspci -nnk | grep 0280 -A3
:
01:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. Device [10ec:c82f]
Subsystem: Lenovo Device [17aa:c02f]
rfkill list all
:
0: ideapad_wlan: Wireless LAN
Soft blocked: no
Hard blocked: no
1: ideapad_bluetooth: Bluetooth
Soft blocked: yes
Hard blocked: no
5: hci0: Bluetooth
Soft blocked: yes
Hard blocked: no
sudo lshw -C network
*-network UNCLAIMED
description: Network controller
product: Realtek Semiconductor Co., Ltd.
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:01:00.0
version: 00
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress cap_list
configuration: latency=0
resources: ioport:4000(size=256) memory:93000000-9300ffff
Интересно отметить, что в выводах аналогичных команд в других сообщениях сетевой адаптер показывает: " RTL8821CE ", а мой вывод - нет.
Сначала я попытался установить rtl8821ce-dkms
следующим образом:
sudo apt-get install rtl8821ce-dkms
sudo modprobe rtl8821ce
sudo modprobe -r ideapad_laptop
И я дополнительно отключил безопасную загрузку в BIOS. Это не подействовало. Ubuntu по-прежнему выдает то же сообщение.
Затем я попытался установить драйвер прямо с tomaspinho GitHub, вот так (после удаления rtl8821ce-dkms):
sudo apt-get install git dkms build-essential linux-headers-$(uname -r)
cd /usr/local/src/
sudo git clone https://github.com/tomaspinho/rtl8821ce
cd rtl8821ce/
sudo chmod +x dkms-install.sh
sudo chmod +x dkms-remove.sh
sudo ./dkms-install.sh
sudo modprobe 8821ce
Опять же, это не дало результата. Ubuntu по-прежнему выдает то же сообщение.
Интересно, что теперь при запуске dmesg | grep -i 8821
, я получаю:
[ 94.460377] 8821ce: loading out-of-tree module taints kernel.
[ 94.461221] 8821ce: module verification failed: signature and/or required key missing - tainting kernel
Я подозреваю, что, возможно, мое оборудование не поддерживается этим драйвером . Может ли кто-нибудь помочь мне понять, что мне нужно сделать, чтобы решить эту проблему «Нет адаптера Wi-Fi»?
Как было предложено здесь , я попытался обновить версию ] linux-firmware
на моей машине. Я пробовал несколько разных версий, но ни одна не работала . Что я сделал:
wget http://security.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_<version>_all.deb
sudo dpkg -i linux-firmware_<version>_all.deb
, где "
", которые я пробовал, были:
Я все еще получаю сообщение «Нет адаптера Wi-Fi».
Наконец-то я нашел решение! (благодаря ответу на этой странице).
Оказывается, драйвер, который должен поддерживать мое оборудование (rtw88), был доступен и совместим с этим оборудованием уже в ядре > 5.2 (у меня было 5.3.0-46-generic), но он не настроен на распознавание моего оборудования. Чтобы решить эту проблему, мне пришлось скомпилировать ядро Linux с небольшой модификацией исходного кода (шаг 2 в решении ниже). Вот что я сделал:
1) Получите исходный код Linux по вашему выбору. В моем случае я использовал основное ядро:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
2) найдите файл: ./linux/drivers/net/wireless/realtek/rtw88/pci.c
и отредактируйте его.
Найдите строку '0xC822'
и замените ее на '0xC82F'
3). Продолжайте компилировать ядро по инструкции. Для полноты моего ответа вот что я сделал:
перейдите в папку ./linux.
Использовать конфигурации из текущего ядра:
cp /boot/config-$(uname -r) .config
make menuconfig
.
Здесь есть много вариантов для настройки. Лучше всего оставить их как есть (сохранить и выйти). Компиляция и установка:
i) make
или make -j8
(чтобы использовать 8 параллельных потоков вместо одного).
Это займет некоторое время...
ii) sudo make modules_install
.
iii) sudo make install
Включить загрузку ядра:
i) sudo update-initramfs -c -k 5.7.0-rc1+
.
Конечно, используйте установленную версию ядра (в моем случае 5.7.0-rc1+).
Если вы не уверены в версии ядра: "ls /lib/modules/" и посмотрите, какие модули ядра установлены.
ii) sudo update-grub
Все. Перезагрузитесь и обязательно загрузитесь в новое ядро. Теперь Wi-Fi должен работать.
Я нашел видео YouTube на канале Amine Tech, в котором есть решение этой проблемы. Видео: https://www.youtube.com/watch?v=vPfLVsyQU_A
Хотя я не могу проверить безопасность или надежность этого метода, он работал у меня, и у меня не было проблем с тех пор, как я это сделал. .
Подключите устройство к проводной сети или используйте модем для подключения устройства к Интернету, затем откройте Терминал и введите следующие команды:
sudo apt update
sudo apt install -y dkms git
git clone https://github.com/tomaspinho/rtl8821ce.git
Отключитесь от любых сетей, к которым вы подключены, затем введите следующие команды:
cd rtl8821ce
sudo ./dkms-install.sh
sudo modprobe 8821ce
iwconfig
Теперь у вас должна быть возможность подключиться через Wi-Fi.
С Lenovo Ideapad S145-15iil и rtl 8822ce я использовал это: https://github.com/lwfinger/rtlwifi_new, что в основном означает:
git clone http://github.com/lwfinger/rtlwifi_new.git -b rtw88
и в pci.c я заменил «0xC822» на «0xC82F». Затем make clean, make, make install (как root), затем modprobe rtwpci (он автоматически загружает rtw88) и сделал: echo rtwpci >> /etc/modules для автоматической загрузки модуля при загрузке.
Предупреждение: Несмотря на то, что это было сделано успешно, SSID были видны, но по-прежнему невозможно было связать их с SSID. Это в Ubuntu 20.04 с WPA2, но также и с открытыми сетями. Сообщение было:
wlp1s0: SME: Deauth request to the driver failed