Вопрос или проблема
Я пытаюсь заставить работать Wi-Fi USB адаптер, но безуспешно. Донгл – это TP-Link WN821N, который имеет чип Realtek rtl8192eu. Я не могу его заменить и скоро потеряю проводное соединение из-за решений моего работодателя.
Когда вставляю, получаю следующий вывод из dmesg
:
[12881.857485] usb 1-1.6: new high-speed USB device number 7 using ehci-pci
[12881.970614] usb 1-1.6: New USB device found, idVendor=2357, idProduct=0107, bcdDevice= 2.00
[12881.970617] usb 1-1.6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[12881.970618] usb 1-1.6: Product: 802.11n NIC
[12881.970619] usb 1-1.6: Manufacturer: Realtek
[12881.970620] usb 1-1.6: SerialNumber: 00e04c000001
и вот соответствующий вывод usb-devices
:
$ usb-devices|grep -C 4 Realtek
T: Bus=01 Lev=02 Prnt=02 Port=05 Cnt=03 Dev#= 7 Spd=480 MxCh= 0
D: Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=2357 ProdID=0107 Rev=02.00
S: Manufacturer=Realtek
S: Product=802.11n NIC
S: SerialNumber=00e04c000001
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=500mA
I: If#=0x0 Alt= 0 #EPs= 5 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
однако никакого сетевого интерфейса не появляется
$ lspci -knn |grep -i net -A2
00:19.0 Ethernet controller [0200]: Intel Corporation 82579LM Gigabit Network Connection [8086:1502] (rev 04)
Subsystem: Intel Corporation 82579LM Gigabit Network Connection (Lewisville) [8086:2008]
Kernel driver in use: e1000e
Kernel modules: e1000e
также, ip a
показывает только ethernet интерфейс, а iw dev
не имеет вывода.
Моя необдуманная догадка заключается в том, что система не может найти драйвер для этого конкретного донгла. У меня установлен пакет firmware-realtek
без бесплатного программного обеспечения:
$ dpkg -l|grep realtek
ii firmware-realtek 20190114-2 all Binary firmware for Realtek wired/wifi/BT adapters
и должно быть что-то связанное с rtl8192eu
внутри:
$ dpkg -L firmware-realtek |grep rtl8192eu
/lib/firmware/rtl_bt/rtl8192eu_fw.bin
/lib/firmware/rtlwifi/rtl8192eu_nic.bin
/lib/firmware/rtlwifi/rtl8192eu_wowlan.bin
$ apt-cache show firmware-realtek|grep -i rtl8192eu
* Realtek RTL8192EU Bluetooth firmware (rtl_bt/rtl8192eu_fw.bin)
* Realtek RTl8192EU non-WoWLAN firmware (rtlwifi/rtl8192eu_nic.bin)
* Realtek RTl8192EU WoWLAN firmware (rtlwifi/rtl8192eu_wowlan.bin)
$ grep -r rtl8192eu /lib/modules/4.19.0-20-amd64/
Binary file /lib/modules/4.19.0-20-amd64/kernel/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko matches
однако у меня нет модуля с именем rtl8192eu
:
$ sudo modprobe rtl8192eu
modprobe: FATAL: Module rtl8192eu not found in directory /lib/modules/4.19.0-20-amd64
и хотя я могу загрузить rtl8xxxu
вместо него, это по-прежнему не делает никакой новый интерфейс видимым, lspci
и ip a
продолжают показывать только ethernet, а iw dev
ничего не показывает.
Теперь у меня тяжёлый выбор: отладить это, купить другой донгл за свои деньги или сменить работу.
- Я сильно предпочитаю решение, основанное на
firmware-realtek
или другом поддерживаемом пакете, а не на компиляции драйверов с GitHub. - Я готов обновиться до Debian 11 bullseye, если потребуется, так как планировал это сделать в любом случае.
- Интересно, были ли какие-то шаги установки, на которых я сказал, что мне никогда не понадобится Wi-Fi.
Можете помочь?
Спустя некоторое время и полное обновление до Debian bullseye, я думаю, что лучшее доступное решение – это установить модуль из этого репозитория на GitHub, который более актуален, чем fork, предложенный на этой странице Debian Wiki (архивированная версия).
Основанные на инструкциях, предложенных в readme репозитория, следующие действия сработали для меня в Debian 11.4 bullseye, Linux 5.10.0-16-amd64 #1 SMP Debian 5.10.127-2 (2022-07-23) x86_64 GNU/Linux
:
sudo apt install git linux-headers-generic build-essential dkms
git clone https://github.com/Mange/rtl8192eu-linux-driver
cd rtl8192eu-linux-driver
sudo dkms add .
sudo dkms install rtl8192eu/1.0
echo "blacklist rtl8xxxu" | sudo tee /etc/modprobe.d/rtl8xxxu.conf
Не уверен, нуждается ли последняя строка, блокирующая rtl8xxxu, в исполнении. После перезагрузки драйвер загружается автоматически:
$ usb-devices|grep -C 4 Realtek
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
D: Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=2357 ProdID=0107 Rev=02.00
S: Manufacturer=Realtek
S: Product=802.11n NIC
S: SerialNumber=00e04c000001
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=500mA
I: If#=0x0 Alt= 0 #EPs= 5 Cls=ff(vend.) Sub=ff Prot=ff Driver=rtl8192eu
$ sudo iw dev
phy#0
Interface wlxd037458b4186
ifindex 3
wdev 0x1
addr d0:37:45:8b:41:86
ssid eduroam
type managed
txpower 12.00 dBm
Под buster я также добавил следующее в /etc/NetworkManager/NetworkManager.conf
:
[device]
wifi.scan-rand-mac-address=no
следуя руководству вики Debian, я не уверен, нужно ли это по-прежнему.
.
Ответ или решение
Ваше устройство USB Wi-Fi с чипом Realtek rtl8192eu, представленное в виде модели TP-Link WN821N, не работает на Debian Buster. Вы внедрили пакет firmware-realtek, но отсутствует интерфейс сети Wi-Fi. Проблема состоит в том, что вы не загрузили и не установили соответствующий драйвер ядра для rtl8192eu.
Проблема
Согласно предоставленным данным, ваше устройство успешно распознается системой через dmesg
, однако нет загруженного драйвера (Driver=(none)
в usb-devices
), а modprobe
не может найти модуль для rtl8192eu.
Решение
-
Проверка и установка Debian Bullseye. Рассмотрите возможность обновления до Debian 11 (Bullseye) для оптимальной поддержки новейших драйверов. Это может упростить процесс установки драйвера через DKMS и обновлять его наряду с ядром.
-
Установка драйвера rtl8192eu. Поскольку для вашего устройства нету готового ядра в стандартных репозиториях Debian, для вашего чипа лучше всего использовать драйвер из определенного репозитория на GitHub. Выполните следующее:
-
Установите необходимые инструменты:
sudo apt update sudo apt install git linux-headers-$(uname -r) build-essential dkms
-
Клонируйте и установите драйвер rtl8192eu:
git clone https://github.com/Mange/rtl8192eu-linux-driver cd rtl8192eu-linux-driver sudo dkms add . sudo dkms install rtl8192eu/1.0
-
-
Отключение модуля rtl8xxxu. Модуль
rtl8xxxu
может конфликтовать с пользователем, поэтому его можно занести в черный список:echo "blacklist rtl8xxxu" | sudo tee /etc/modprobe.d/rtl8xxxu.conf
После этого перезагрузите систему, чтобы изменения вступили в силу.
-
Проверка интерфейса. Убедитесь, что интерфейс Wi-Fi распознается с помощью команд
iw dev
иip a
. Ваш адаптер должен быть виден в списке доступных сетевых интерфейсов.
Дополнительные шаги
-
Настройка NetworkManager. В некоторых случаях может понадобиться добавление опции в конфигурационный файл NetworkManager:
sudo nano /etc/NetworkManager/NetworkManager.conf
Добавьте следующие строки:
[device] wifi.scan-rand-mac-address=no
Эти шаги должны помочь вашему устройству обнаруживаться системой и работать должным образом. Не забывайте регулярно обновлять систему Debian и установленные пакеты для поддержания безопасной и оптимальной работы.