Wi-Fi не работает на Lenovo ThinkPad E570 (Realtek RTL8821CE)
Мы только что купили Lenovo ThinkPad E570 (который должен иметь Intel 8265 для беспроводной связи). Этот ноутбук был куплен частично потому, что он сертифицирован для работы с Ubuntu, и, по крайней мере, для меня было бы целесообразно, чтобы все работало "из коробки"... но не повезло.
Сначала я установил Ubuntu 17.10 и после установки понял, что Wi-Fi не работает. Я также попробовал Ubuntu 16.04 с USB-накопителя, так как это версия Ubuntu, для которой он сертифицирован, но там тоже не повезло.
Беспроводной чип не обнаружен lshw
(или даже lspci
судя по всему), ip link
не показывает беспроводной интерфейс, а iwlwifi
Модуль ядра не загружается при загрузке (я могу загрузить это сам, используя modprobe iwlwifi
но это не делает работу Wi-Fi). Я думаю, что это комбинированный чип Wi-Fi/Bluetooth, и Bluetooth, кажется, работает (или, по крайней мере, Bluetooth появляется в Gnome и rfkill list
).
modinfo iwlwifi | grep 8265
показывает, что файл, заканчивающийся на -34, предположительно загружен, но в файле присутствует только файл, заканчивающийся на -33 (и некоторые другие младшие числа) /lib/firmware
, если это поможет).
Я также установил ядро Linux 4.14.9, пытаясь заставить вещи работать, но это также не решило проблему.
Дальнейшая информация
root@ThinkPad-E570:~# modinfo iwlwifi | grep 8265
firmware: iwlwifi-8265-34.ucode
root@ThinkPad-E570:~# rfkill list all
0: tpacpi_bluetooth_sw: Bluetooth
Soft blocked: no
Hard blocked: no
1: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
root@ThinkPad-E570:~# dmesg | grep iwl
root@ThinkPad-E570:~# lspci -nnk | grep 0280 -A3
05:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. Device [10ec:c821]
Subsystem: Lenovo Device [17aa:c024]
Обновить
Я только что заметил, что у ноутбука вообще нет беспроводного чипа Intel, но на самом деле есть чип Realtek... что означает, что спецификации, представленные на странице продукта магазина, в котором я купил этот ноутбук, не были точными... Вздох. Однако та же проблема стоит только с более хрупким беспроводным чипом.
5 ответов
Во-первых, я бы предположил, что эти инструкции более вероятно будут работать с Ubuntu 17.10. Если вы не используете его сейчас, я рекомендую переустановить его.
Нажмите на эту ссылку, чтобы загрузить файл драйвера: https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/endlessm/linux/tree/master/drivers/net/wireless/rtl8821ce
Если в браузере не указано иное, загрузки идут в каталог " Загрузки". Откройте терминал и выполните:
cd ~/Downloads
unzip rtl8821ce.zip
cd rtl8821ce
nano Makefile
Прокрутите вниз до строки 152 и измените строку, которая теперь гласит:
export TopDIR ?= $(srctree)/drivers/net/wireless/rtl8821ce
Чтобы сейчас прочитать:
export TopDIR ?= $ ~/Downloads/rtl8821ce
Внимательно проверьте, дважды, и сохраните (Ctrl+o, затем Enter) и закройте (Ctrl+x) текстовый редактор.
Теперь сделайте:
make
sudo make install
sudo modprobe 8821ce
Ваш беспроводной теперь должен работать.
РЕДАКТИРОВАТЬ: Вы скомпилировали модуль только для текущей версии ядра. Когда Update Manager предлагает более позднюю версию ядра, известную как linux-image, после запрошенной перезагрузки, вы должны перекомпилировать:
cd rtl8821ce
make clean
make
sudo make install
sudo modprobe 8821ce
Пожалуйста, сохраните файл и эти инструкции на это время.
Это продолжение ответа Стасона, который предлагает использовать dkms.
Насколько я могу судить, на момент написания этой статьи в официальных репозиториях Ubuntu еще не было Wifi Driver для Realtek RTL8821CE.
На github есть репозиторий с драйвером RTL8821CE, предназначенный для ядер 4.14 и выше и специально для Arch Linux, без поддержки других дистрибутивов Linux: https://github.com/tomaspinho/rtl8821ce
(Незначительное замечание: по состоянию на февраль 2019 года tomaspinho, к сожалению, больше не может поддерживать драйвер, поскольку у него больше нет доступа к компьютеру с этим чипсетом, и поэтому может потребоваться новый сопровождающий, но драйвер по-прежнему работает с Ubuntu 18.04 по состоянию на то время.)
Однако, как сообщается, он прекрасно работает с Ubuntu 18.04.
Потребуется временное подключение к Интернету (например, кабель Ethernet, USB-адаптер Wi-Fi или подключение телефона с помощью USB-кабеля и привязка к нему для использования Wi-Fi телефона)
Решение взято непосредственно из поста № 4 Praseodym (большая похвала их мудрости!): https://ubuntuforums.org/showthread.php?t=2398917 и установит несколько пакетов для сборки модуля драйвера wifi (git, dkms, build-essential & linux-headers) и клонировать репозиторий git rtl8821ce из tomaspinho (также хвала!).
DKMS используется потому, что это "система, которая автоматически перекомпилирует и устанавливает модуль ядра при установке или обновлении нового ядра".
Откройте терминал и введите следующие строки (Вы можете вырезать и вставить, если хотите):
sudo apt-get install --reinstall git dkms build-essential linux-headers-$(uname -r)
git clone https://github.com/tomaspinho/rtl8821ce
cd rtl8821ce
chmod +x dkms-install.sh
chmod +x dkms-remove.sh
sudo ./dkms-install.sh
После того, как это успешно завершено, вы должны перезагрузиться и обнаружить, что ваш Wi-Fi работает.
Вы также хотите убедиться, что SecureBoot отключен в настройках BIOS, иначе он не позволит вам загрузить неподписанный модуль самодостаточного ядра.
Сегодня столкнулся с той же проблемой с ubuntu 20.04.
Читая https://github.com/tomaspinho/rtl8821ce тщательно я узнал, что есть готовый пакет канонический: rtl8821ce-DKMS
Установка сводится к:
sudo apt install rtl8821ce-dkms
- перезагрузка
Вот и все. Ничего больше. После перезагрузки все работает.
dkms build/install для rtl8821ce можно найти здесь: https://github.com/tomaspinho/rtl8821ce
Когда вы используете этот подход, вам не нужно будет перестраивать модуль каждый раз при обновлении ядра.
Я только что построил его на Lenovo Idea 720s с Kubuntu 18.04.
Также я предлагаю вам отредактировать Makefile, чтобы изменить уровень журнала с 4 (информация) на 3 (предупреждения). В противном случае вы найдете свой /var/log/syslog
заполняется на сумасшедшей скорости бесполезными информационными сообщениями от водителя.
Поэтому отредактируйте Makefile, чтобы изменить:
CONFIG_RTW_LOG_LEVEL = 4
чтобы:
CONFIG_RTW_LOG_LEVEL = 3
а затем собрать и установить модуль в соответствии с инструкциями. Если вы уже установили его, вам нужно удалить его (используя dkms-remove.sh
), а затем переустановите его снова.
В качестве альтернативы вы можете вручную изменить уровень журнала до следующей перезагрузки с помощью:
echo 3 > /proc/net/rtl8821ce/log_level
обновление: сопровождающий изменил Makefile, чтобы отразить это предложение, поэтому, если вы сделаете новую проверку / загрузку, он уже будет иметь правильную (тихую) настройку.
Обновление 2018-02-27
Обратите внимание, что предлагаемый драйвер предназначен для Endless OS, поэтому он может сломаться в любой момент. Если у какого-либо тела есть официальный драйвер для Ubuntu, это будет лучше.
Оригинальный ответ
Это не новый ответ, лучше комментарий.
Поэтому я попытался следовать ответу @chili555, но продолжал получать ошибки, пытаясь создать модуль.
Ошибки как:
/rtl8821ce/include/osdep_service_linux.h:294:2: error: implicit declaration of function ‘timer_setup’; did you mean ‘ether_setup’?
[-Werror=implicit-function-declaration]
timer_setup(ptimer, pfunc, 0);
^~~~~~~~~~~ ether_setup
Поэтому я попытался загрузить другую ревизию ( прямая ссылка на скачивание zip-архива), которая к моменту первоначального ответа также могла быть основной. Тогда я смог сделать модуль и установить, следуя инструкциям @chili555
Решение для ошибки таймера.
Мне удается заставить его работать на моем lenovo E570 с Ubuntu 16.04, и вот мои шаги: во-первых, я обновляю версию ядра до 4.15.4, используя это руководство
Я считаю, что любая версия ядра выше 4.15.4 должна работать, потому что мне пришлось снова обновить ядро до 4.15.9. Обратите внимание, что драйвер должен быть переустановлен.
Затем я выполнил шаги, упомянутые в ответах @chili555.
Кредиты praseodym из ubuntuusers.de для этого короткого руководства с использованием dkms для установки драйвера, потому что после попытки нескольких вариантов ответа, только это сработало для меня на свежем установленном Debian 10 (buster):
sudo apt-get install --reinstall git dkms build-essential linux-headers-$(uname -r)
git clone https://github.com/tomaspinho/rtl8821ce
cd rtl8821ce
chmod +x dkms-install.sh
chmod +x dkms-remove.sh
sudo ./dkms-install.sh
удаление работает следующим образом:
sudo ./dkms-remove.sh
было также упомянуто, чтобы в конечном итоге отключить безопасную загрузку, даже до установки ОС. не уверен, что это имеет значение, потому что мне это нужно на "Настольном ПК HP Slimline (290-a0512ng)", у которого по умолчанию отключена безопасная загрузка, которую я установил после установки ОС.
Вот как я исправил IdeaPad s145-15ast. Если вы хотите по-прежнему использовать ubuntu 16.04, сначала установите Hardware Enablement:
apt-get install linux-generic-hwe-16.04
Затем добавьте "Джесси Сунг" Realtek 8821c dkms для 4.15.
add-apt-repository ppa:wenchien/rtl8821c
apt-get update
apt install oem-realtek-8821ce-lp1767920-4.15-dkms
Перезагрузка и все.
Для этого устройства требуются драйверы и прошивка. Для новых ядер Ubuntu 4.19+
rtw88
драйверы из репо Ларри Фингера будут работать.
Запускаем для установки драйвера:
sudo apt update
sudo apt install git dkms
git clone https://github.com/lwfinger/rtw88.git
sudo dkms add ./rtw88
sudo dkms install rtlwifi-new/0.6
Запускаем для установки прошивки:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
sudo cp linux-firmware/rtw88/rtw8821c_fw.bin /lib/firmware/rtw88