воскресенье, 15 марта 2020 г.

Tp-Link TL-WN821n v4 linux driver rtl8xxxu


Сначала очень успешно использовал драйвер rtl8192cu от pvaret, но после обновления до debian 10 он стал работать медленно и рвать соединение.
На репозитории обновили информацию, что нужно теперь запускать rtl8xxxu, который начиная с версии ядра 4.4 стал вполне себе неплох.

Добавление строчек в /etc/modprobe.d/blacklist.conf приводило к полному отключению wifi:
blacklist rtl8192cu
alias usb:v0BDAp8178d*dc*dsc*dp*icFFiscFFipFFin* rtl8xxxu
Последнюю строчку добавил (по "вредному" совету отсюда), так как отсутствовала поддержка для конкретных VID-PID:
modinfo rtl8xxxu 
Данные VID-PID поддерживаются в системе только драйвером rtl8192cu:
cat /lib/modules/`uname -r`/modules.alias | grep 8178
alias usb:v07B8p8178d*dc*dsc*dp*ic*isc*ip*in* rtl8192cu
alias usb:v0BDAp8178d*dc*dsc*dp*ic*isc*ip*in* rtl8192cu
И наконец я нашел корень проблемы. Оказалось дело в том, что в Debian как и в некоторых других дистрибутивах не включен параметр поддержки rtl8178:
egrep "UNTESTED" /boot/config-`uname -r`
# CONFIG_RTL8XXXU_UNTESTED is not set
Читаем официальную документацию на пересборку ядра тут п.4.5, и делаем по шагам:
# apt-get install linux-headers-4.19.0-8-amd64
# apt-get install linux-source-4.19
# tar xaf /usr/src/linux-source-4.19.tar.xz
# if [ -d linux ]; then rm linux; fi; ln -s linux-source-4.19 linux
# cd linux
Копирование конфигураций
# cp /boot/config-`uname -r` .config
# cp /usr/src/linux-headers-`uname -r`/Module.symvers .
Устанавливаем новый флаг. С остальным соглашаемся
# ./scripts/config --set-val CONFIG_RTL8XXXU_UNTESTED y
# apt install libelf-dev
# make modules_prepare
# make M=drivers/net/wireless/realtek/rtl8xxxu
Бэкап оригинального драйвера
# mv /lib/modules/`uname -r`/kernel/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko{,.bak}
Копирование нового драйвера
# cp /usr/src/linux/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless/realtek/rtl8xxxu/
# depmod -a
# modprobe -r rtl8xxxu rtl8192cu

И после перетыкания USB-WiFi работает новый драйвер:
$ lsmod | grep rtl
rtl8xxxu 135168 0
mac80211 835584 2 ath5k,rtl8xxxu
usbcore 294912 4 xhci_hcd,usbhid,xhci_pci,rtl8xxxu
Скорость неплохая - около 20Мб/c в обе стороны прокачивает. Светодиод на свистке не работает.
Есть одно НО - при следующем обновлении ядра процедру придется повторить.

Комментариев нет:

Отправить комментарий