× К оглавлению На главную Об авторе

Дата и время публикации   :
Дата и время модификации:

Что и как лечим?!


1. Что лечим

Не все драйверы могут быть подхвачены на лету в виду отсутствия подгрузки их протаетарной части, без которой аппаратные средства, например адаптер WiFi, остаются бесполезной "железкой". Поэтому редко, но приходится "допиливать" собственноручно конфигурацию системы, что неизбежно накладывает некоторые ограничения, подобно отказу от автоматического обновления пакетов программного обеспечения Debian/Linux, и влечет накладные расходы в виде дополнительных затрат времени на операции, описанные ниже.

2. Как лечим

Находим куда физически подключено устройство, например адаптер Wireless RTL8821CE, как показано в дампе 2.1

Дамп 2.1


root@alivecd-deb:~# lspci –nn
. . .
04:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8821CE 802.11ac PCIe Wireless Network Adapter [10ec:c821]
. . .

В искомой корневой системе, например "подхваченной" c помощью chroot (при этом рекомендую обновить APT), произвести поиск пакет с протаетарными микропрограммами (на компьютерном сленге – "прошивки") для rtl8821, как показано в дампе 2.2

Дамп 2.2


root@home:/# apt search rtl8821
Сортировка… Готово
Полнотекстовый поиск… Готово
firmware-realtek/testing,testing,unstable,unstable,now 20190717-2 all [установлен]
 Binary firmware for Realtek wired/wifi/BT adapters

и устанавливаем пакет firmware-realtek, если он не был установлен, как показано в дампе 2.3

Дамп 2.3


root@home:/# apt install firmware-realtek   

Далее, ищем в директории драйвер rtl8821ce, как показано в дампе 2.4

Дамп 2.4


root@alivecd-deb:~# find /lib/firmware/ -type f -name "*"  -print | grep rtl8821
/lib/firmware/rtlwifi/rtl8821aefw.bin
/lib/firmware/rtlwifi/rtl8821aefw_29.bin
/lib/firmware/rtlwifi/rtl8821aefw_wowlan.bin
/lib/firmware/rtl_bt/rtl8821a_fw.bin

Потому что в данном примере установленной сборки от июля 2019 года прошивки драйвера нет (файла rtl8821c_fw.bin). Поэтому придется пересобирать пакет firmware-realtek для включение в него драйвер адаптера Wireless RTL8821CE, как показано в 2.5

Дамп 2.5


root@alivecd-deb:/# cd ~ && \
apt install --reinstall git bc dkms build-essential linux-headers-`uname -r` && \
git clone https://github.com/tomaspinho/rtl8821ce

Примечание. В случае изменения версии ядра, например после обновления системы, необходимо повторить все операции, описываемые начиная с дампа 2.5 и заканчивая дампом 2.8 При этом директорию /root/rtl8821ce необходимо предварительно удалить, как показано ниже .
root@home:~# rm -rf rtl8821ce
     

Как показано в 2.5, устанавливаем недостающие пакеты и исходный код драйвера c GitHub. Затем проверяем, что все скачалось, как показано в дампе 2.6

Дамп 2.6


root@home:~# ls -la
итого 4868
drwx------  4 root root    4096 сен 22 06:23 .
drwxr-xr-x 18 root root    4096 сен 22 06:13 ..
-rw-------  1 root root    2539 сен 22 06:04 .bash_history
-rw-r--r--  1 root root     570 янв 31  2010 .bashrc
drwxr-xr-x  3 root root    4096 сен 21 17:30 .local
-rw-r--r--  1 root root     161 июл  9 10:05 .profile
drwxr-xr-x  8 root root    4096 сен 22 06:23 rtl8821ce

Добавляем и конфигурируем сборку пакета firmware-realtek, как показано в дампе 2.7

Дамп 2.7


(cd rtl8821ce && \
chmod +x dkms-install.sh && \
chmod +x dkms-remove.sh && \
./dkms-install.sh )   

На выходе должно получится нечто подобное, как показано в дампе 2.8

Дамп 2.8


. . .
About to run dkms install steps...

Creating symlink /var/lib/dkms/rtl8821ce/v5.5.2_34066.20190614/source ->
                 /usr/src/rtl8821ce-v5.5.2_34066.20190614

DKMS: add completed.
. . .

Повторно собираем linux-headers, в случае если процесс сборки модуля (интеграции микропрограммы) были прерваны, как показано в дампе 2.9

Дамп 2.9


root@home:~# apt install --reinstall linux-headers-`uname -r`

После чего, перезапускаем машину и после проверяем, что все запустилось, как показано в дампе 2.10

Дамп 2.10


user@home2:~$ sudo journalctl -p emerg..debug -b | grep 8821ce
ноя 16 09:01:16 home2 kernel: 8821ce: loading out-of-tree module taints kernel.
ноя 16 09:01:16 home2 kernel: 8821ce: module verification failed: signature and/or required key missing - tainting kernel
ноя 16 09:01:16 home2 kernel: rtl8821ce 0000:04:00.0: enabling device (0000 -> 0003)
ноя 16 09:01:16 home2 kernel: rtl8821ce 0000:04:00.0 wlp4s0: renamed from wlan0
ноя 16 09:01:17 home2 NetworkManager[576]:   [1573894877.4397] rfkill0: found Wi-Fi radio killswitch (at /sys/devices/pci0000:00/0000:00:01.7/0000:04:00.0/ieee80211/phy0/rfkill0) (driver rtl8821ce)

Затем, можно подключится к известному SSID, как показано в дампе 2.11

Дамп 2.11


root@home:~# nmtui

3.Библиография

3.1 Archlinux.NetworkManager

3.2 Bluetooth not working [0bda:b00a] #19

3.3 LinuxQuestions.org: [SOLVED]Wireless Not working

3.4 docs.ubuntu.com:Configure WiFi Connections