Привет. Я тут прикупил вот такой девайс:
Зачем — рассказал здесь. Предполагаю когда-нибудь заменить его нормальным 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
:
либо поставить этот форк с уже откатанным проблемным ПР:
Их установка точно такая же, как описано выше.
А вот — драйвер, который мне удалось установить, однако у меня он не заработал ни на одной версии ОС:
Пусть тебя не смущает другая модель контроллера в названии: по заверениям мейтейнеров, он тоже должен подойти. Мне не подошёл, но почему тогда я выделил именно его среди прочих?
- На него чаще всех ссылаются разные источники, поэтому он стал первым, который мне (и наверняка тебе тоже) попался.
- Это один из немногих, который всё ещё активно поддерживается (помимо описанного выше).
- В нём есть гора полезной технической (и не только) инфы по самому драйверу (и не только).
Попробуй, может быть у тебя получится поднять и этот драйвер. Инструкции там описаны.
Вы сэкономили мне кучу времени, спасибо.
Спасибо за подробную инструкцию!) Драйвер все-таки слетел в какой-то момент, помогла переустановка.
СПС
Большое спасибо!
Долго парился, ваша статья очень помогла!