Pull to refresh

Как заставить заработать wifi на чипе broadcom 43xx под Linux

Reading time2 min
Views15K
Когда где-то год назад я поставил на свой Dell Latitude D520 с чипом broadcom 4311 Ubuntu 8.10, то столкнулся с тем, что wi-fi работать напрочь отказывался. Я погуглил, пару дней поизучал посты на различных форумах, сделал какие-то шаманские действия и благополучно забыл и про проблему и про те действия, которые делал.

Все бы хорошо, но черт меня дернул поставить Karmic Koala с нуля… Про проблему я вспомнил сразу. А вот решение было забыто напрочь.


Решение быстрое


Итак, загрузившись, я обнаружил, что wi-fi у меня не работает. Посмотрев в /var/log/syslog увидел там следующие подзрительную строчку:
ERROR: Firmware file «b43/ucode5.fw» not found or load failed


Пройдясь по гуглу я нашел блог, в котором было решение проблемы вида «распакуй архив туда-то и все заработает». Скачал оттуда архив, в котором было недостающее firmware, распаковал в /lib/firmware/ и все действительно заработало.

Надо сказать, что в 8.10 проблема так легко не решалась, потому что там были другие драйвера. В 8.10 были bcm43xx, сейчас же грузятся b43.
Попутно с поиском решения я набрел на сайт с этими самыми драйверами b43, где есть много информации по поддержке этими драйверами различных чипсетов broadcom 43xx.

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

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

Запуск драйверов производителя — решение посложнее


Родные драйвера я скачал с сайта поддержки Dell. Были они в виде self-extracting архива, но без проблем распаковались file-roller'ом

Далее делаем следующее:


  • Устанавливаем ndiswrapper — утилиту, которая позволяет драйверам Windows для беспроводных карт работать в Linux.
  • Удаляем модуль b43 из автозагрузки помещая его в blacklist:
    sudo vim /etc/modprobe.d/blacklist.conf
    добавляем туда строчку: blacklist b43
  • Загружаем виндовые драйвера:
    sudo ndiswrapper -i /path_to_drivers/bcmwl5.inf
  • Чтобы ndiswrapper запускался при загрузке системы, дописываем его в /etc/modules (sudo vim /etc/modules и добавляем туда строчку ndiswrapper)
  • Далее после перезагрузки все должно бы заработать, но не тут то было.
    Перезагрузился, а wi-fi по прежнему не работает.

    Причиной тому яляется модуль ssb, который загружается перед ndiswrapper и не дает ему взять на себя управление wi-fi картой.

    Если этот модуль загружен (смотрим с помощью lsmod | grep ssd ), то опять открываем /etc/modprobe.d/blacklist.conf и добавляем туда ssd и b44 — который вызывает загрузку ssd.
  • Далее запускаем sudo update-initramfs -u и обновляем список подгружаемых модулей, чтобы ssb не грузился
  • Теперь можно перезагрузиться или же вручную выгрузить ненужные модули и загрузить нужный ndiswrapper и wi-fi заработает


По субъективным ощущениям на виндовых драйверах все работает действительно лучше и стабильнее.
Tags:
Hubs:
Total votes 11: ↑10 and ↓1+9
Comments20

Articles