На моем ноутбуке стоит wifi адаптер BMC4313, который в Ubuntu с свободными драйверами работает ужасно. При установке проприетарных драйверов(firmware-b43-installer) из репозиториев Ubuntu ситуацию меняет в лучшую сторону, но все равно wifi работает не идеально. Решением для меня оказалась компиляция модуля ядра из исходных кодов, скачанных с официального сайта broadcom. Данное руководство подойдет для адаптеров BCM4311 , BCM4312 , BCM4322 , BCM4313 , BCM43224.
Для начала убедимся что на вашем ноутбуке wifi адаптер из вышеперечисленных, это можно сделать выполнив команду:
lspci
Эта команда выводит список всех pci устройств, среди которых должен быть интегрированный wifi адаптер.
В моем случае в результате команды я нашел следующее:
03:00.0 Network controller: Broadcom Corporation BCM4313 802.11bgn Wireless Network Adapter (rev 01)
Переходим на страницу скачивания драйверов Broadcom для Linux. Скачиваем Linux® STA driver 32 или 64 битные в зависимости от битности вашей ОС. Распаковываем скачанный архив.
Удаляем установленные драйвера:
sudo apt-get remove --purge b43-fwcutter broadcom-sta-common broadcom-sta-dkms broadcom-sta-source firmware-brcm80211 firmware-b43-installer && sudo apt-get autoremove --purge
Убираем из загрузки лишние модуля ядра, которые могут мешать:
echo "blacklist ssb" | sudo tee -a /etc/modprobe.d/blacklist-broadcom-wireless.conf echo "blacklist bcma" | sudo tee -a /etc/modprobe.d/blacklist-broadcom-wireless.conf echo "blacklist b43" | sudo tee -a /etc/modprobe.d/blacklist-broadcom-wireless.conf echo "blacklist brcmsmac" | sudo tee -a /etc/modprobe.d/blacklist-broadcom-wireless.conf sudo update-initramfs -u
Устанавливаем необходимые для сборки пакеты:
sudo apt-get install linux-headers-`uname -r` && sudo apt-get build-dep linux
Открываем консоль, переходим в папку в которую распаковали архив, запускаем компиляцию драйверов:
make
В результате выполнения этой команды в папке с исходными кодами должен появиться скомпилированный модуль wl.ko, который необходимо скопировать в /lib/modules/версия_ядра/kernel/net/wireless:
sudo cp ./wl.ko /lib/modules/версия_ядра/kernel/net/wireless
и выполняем следующие команды:
sudo depmod sudo modprobe wl
После перезагружаем ноутбук и если у вас работает wifi то вы все сделали правильно:)
Что то не получается:
voodoo@uber-note:~/Загрузки$ make
KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
make[1]: Вход в каталог `/usr/src/linux-headers-4.4.0-31-generic’
CFG80211 API is prefered for this kernel version
Using CFG80211 API
LD /home/voodoo/Загрузки/built-in.o
CC [M] /home/voodoo/Загрузки/src/shared/linux_osl.o
/home/voodoo/Загрузки/src/shared/linux_osl.c: In function ‘osl_getcycles’:
/home/voodoo/Загрузки/src/shared/linux_osl.c:935:2: error: implicit declaration of function ‘rdtscl’ [-Werror=implicit-function-declaration]
rdtscl(cycles);
^
cc1: some warnings being treated as errors
make[2]: *** [/home/voodoo/Загрузки/src/shared/linux_osl.o] Ошибка 1
make[1]: *** [_module_/home/voodoo/Загрузки] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-4.4.0-31-generic’
make: *** [all] Ошибка 2
Попробуйте распаковать драйвера в отдельную папку, и повторить make из каталога в который распакуете драйвера. Также проверьте установлены ли необходимые для сборки пакеты (в статье есть команда на установку их).
На этапе установки необходимых для сборки пакетов пишет:не удалось открыть файл блокировки /var/lib/dpkg/lock -open (13:отказано в доступе)
Не удалось выполнить блокировку управляющего каталога (var/lib/dpkg/); у вас есть права суперпользователя?
Допишите sudo перед apt-get. Исправил в статье.