Как установить драйвер wi-fi адаптера Dexp WFA-601 (RTL8811AU) на Ubuntu (обновляемый пост)

Этот пост был опубликован мной более года назад. Информация, описанная ниже, уже могла потерять актуальность, но всё ещё может быть полезна.

Привет. Я тут прикупил вот такой девайс:

Зачем — рассказал здесь. Предполагаю когда-нибудь заменить его нормальным PCI-E или подвести витуху, а до тех пор сойдёт и он. На коробке заявлена поддержка Linux, ценник невысок, мои требования к нему пока тоже. Главное, чтобы он работал и была антенна.

Я не могу спокойно смотреть на USB wi-fi свистульки: на коробке заявляется до 600 Мбит/сек (чем, впрочем, формально не врут), но USB2.0 даже в режиме High-Speed не может пропускать выше 480. USB-не-3.* безальтернативно будет узким горлышком при передаче данных. Этот адаптер хотя бы пару стен пробьёт, а наносвистоперделки без антенн — это просто смешно.

Дома у меня почти все компы на убунтах, посему я ожидал некоторые приключения (можно сказать, знал на что шёл при покупке). И хотя они не были увлекательными, я их прошёл и ниже даю выкладки по результатам.

Этот способ у меня сработал на Ubuntu 22.* и 23.* с абсолютно разным железом, но на 24.04 пришлось вновь гуглить решение.

Подключай донгл к компу. Сразу он у тебя, разумеется, не заработает, но система сможет увидеть, что он подключен. Чтобы это проверить, набирай команду lsusb и проверяй вывод:

$ lsusb
# здесь может быть большой список с разными Bus/Device,
# но из этого нас интересует только такое название:
Bus 001 Device 007: ID 0bda:a811 Realtek Semiconductor Corp. RTL8811AU 802.11a/b/g/n/ac WLAN Adapter

Если такая строчка есть, значит модуль определился и это хорошо. Если нет, попробуй другой USB-порт. Если не помогло, попробуй другой комп. Если не помогло, избавляйся от него и возьми что-нибудь другое.

В этой строке нас интересует конкретно вот что: RTL8811AU. Это модель сетевого контроллера, который стоит внутри донгла. Под него мы будем ставить драйвер.

Драйвер для Ubuntu 22.04 / 22.10 / 23.04 / 23.10

Гуглёж показал, что конкретно под эту модель каких-то самостоятельных отдельных драйверов не существует, но, на самом деле, это семейство чипов, часть которых покрывается (должна?) одним и тем же драйвером. Типа, 8812AU, 8821CU и всякие такие. В целом, это, скорее, неудивительно. А на гитхабе драйверов под них просто дофига. И форков, и их форков, и форков их форков форков, и т.д. Я многие перебрал, часть не вставала, часть успешно не работала.

Мне конкретно подошёл только этот:

Иди в терминал и ставь сначала софт, который поможет получить и скомпилировать драйвер из исходников, а затем — сам драйвер:

$ sudo apt install -y git build-essential make dkms
$ git clone https://github.com/aircrack-ng/rtl8812au.git --depth=1

Если на целевом компе (с донглом) нет запасного интернета (витухи нет, оптики нет, с мобилы не раздать, USB-модем не алё), то драйвер можно скачать ZIP-архивом из того же репозитория, а нужное ПО для сборки — вытащить deb-ами из pkgs.org или packages.ubuntu.com, чтобы потом всё вместе перетащить флешкой и выполнить dpkg -i на каждый *.deb.

Дальше заходим в директорию с исходниками и запускаем сборку драйвера:

$ cd rtl8812au
$ sudo make dkms_install

Вывод команды будет приблизительно таким:

mkdir: создан каталог '/usr/src/8812au-5.6.4.2_35491.20191025'
cp -r * /usr/src/8812au-5.6.4.2_35491.20191025
dkms add -m 8812au -v 5.6.4.2_35491.20191025
Creating symlink /var/lib/dkms/8812au/5.6.4.2_35491.20191025/source -> /usr/src/8812au-5.6.4.2_35491.20191025
dkms build -m 8812au -v 5.6.4.2_35491.20191025
 
Kernel preparation unnecessary for this kernel. Skipping...
 
Building module:
cleaning build area...
'make' -j4 KVER=5.19.0-38-generic KSRC=/lib/modules/5.19.0-38-generic/build....................................................
Signing module:
 - /var/lib/dkms/8812au/5.6.4.2_35491.20191025/5.19.0-38-generic/x86_64/module/88XXau.ko
This system doesn't support Secure Boot
Secure Boot not enabled on this system.
cleaning build area...
dkms install -m 8812au -v 5.6.4.2_35491.20191025
 
88XXau.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/5.19.0-38-generic/updates/dkms/
 
depmod..................
dkms status -m 8812au
8812au/5.6.4.2_35491.20191025, 5.19.0-38-generic, x86_64: installed

В моём случае, драйвер успешно собрался и установился, что видно в конце. Здесь также можно заметить версию моего ядра на момент написания этого поста. Для драйверов это почти всегда очень важно, но я обычно следую документации и официальным мануалам, а если что не так — уже углубляюсь в суть. Тут мне сильно углубляться уже не пришлось, поэтому и тебе голову морочить не буду.

Перезагрузка не нужна. Переподключай донгл в USB и проверяй апплет с сетями: NetworkManager должен показать wi-fi-сети, который видит адаптер. Из терминала это можно проверить командой:

$ nmcli dev wifi

Утилита nmcli вообще богата, с её же помощью можно и подключиться к нужной сети без гуйни и много чего ещё.

После перезагрузки ОС драйвер будет работать сразу..

UPD 27.04.23: я неоднократно апгрейдил ядро из родных репозиториев штатными средствами и сегодня обновил всю Ubuntu с 22.10 до 23.04 — драйвер работает, дополнительно что-то делать не пришлось.

Удалить драйвер можно командой:

sudo make dkms_remove

находясь в той же самой директории. Также необходимо выполнять её после неудачной установки перед следующей попыткой.

Дополнительную инфу можно найти в репозитории с исходниками — там есть некоторые полезняшки.

Повторю ссылку на драйвер:

UPD 19.07.24: Драйвер для Ubuntu 24.04

При обновлении с Ubuntu 23.10 на 24.04 этот драйвер слетел, а после успешной повторной установки не видел сетей.

На Ubuntu 24.04 у меня заработал этот драйвер (хоть он и старый): https://github.com/gnab/rtl8812au

Его установка точно такая же, как описано выше.

UPD 26.07.24

На указанном драйвере я начал встречать проблемы. В частности, ПК почти всегда отказывался загружаться дальше sddm с подключенным адаптером, а стоило извлечь его из USB — загружался нормально.

После загрузки и подключение адаптера всё работало, но в какие-то моменты система вела себя странно: оболочка постепенно умирала, переключение на другие tty не давало ничего. Даже в recovery-mode без оболочки было то же самое.

Я нашёл форк самого первого (aircrack-ng) с ревертом одного проблемного коммита. Нашёл и другой форк, где сделали реверт уже всего pull-request с тем же коммитом. Также issues в репе aircrack-ng кагбэ намекают.

Были ли связаны мои проблемы с драйверами вообще и с описанными косяками — полагаю, да, аффектило явно всю систему и KDE тут ни при чём.

Так что сейчас решение для меня такое: либо поставить первый с откатом на коммит 63cf0b45:

либо поставить этот форк с уже откатанным проблемным ПР:

Их установка точно такая же, как описано выше.


А вот — драйвер, который мне удалось установить, однако у меня он не заработал ни на одной версии ОС:

Пусть тебя не смущает другая модель контроллера в названии: по заверениям мейтейнеров, он тоже должен подойти. Мне не подошёл, но почему тогда я выделил именно его среди прочих?

  • На него чаще всех ссылаются разные источники, поэтому он стал первым, который мне (и наверняка тебе тоже) попался.
  • Это один из немногих, который всё ещё активно поддерживается (помимо описанного выше).
  • В нём есть гора полезной технической (и не только) инфы по самому драйверу (и не только).

Попробуй, может быть у тебя получится поднять и этот драйвер. Инструкции там описаны.

4 комментария

  1. Спасибо за подробную инструкцию!) Драйвер все-таки слетел в какой-то момент, помогла переустановка.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *