⌨ Labor omnia vincit ☮

openSUSE :: Broadcom wireless

Posted in SuSE [ru] by anaumov on 26.08.2012

Большинство wifi контроллерв поддерживаются ядром openSUSE из коробки. Тем не менее, некоторые драйверы (именно они обеспечивают поддержку контроллеров/устройств) не включаются в ядро из-за проблем с лицензией. В эту группу входит и модуль для broadcom контроллера, счастливым обладателем которого на своем lenovo S12 являюсь и я 🙂

Первый шаг в настройке wifi – определение чипсета (набора микросхем) и его производителя. Для этого можно воспрользоваться либо lspci (или lsusb, если карта подключенна через USB), либо hwinfo:

> /sbin/lspci | grep Network
07:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)

После того как мы узнали, что на борту у нас BCM4312 чип от broadcom, заходим к ним на страницу и смотрим, если ли у них драйвер для нашей wifi. Драйвер есть, и поддерживает он не только bcm4312 чипы, но и bcm4313, bcm4321, bcm4322, bcm43224, bcm43225, bcm43227 и bcm43228. Мы можем скачать архив с их сайта и установить драйвер из исходников, но лучше использовать rpm, инсталляция с помощью которого значительно упростит дальнейшую настройку wifi.

Кстати, если у вас более старый чип (bcm4303, bcm4306, bcm4309, bcm4311, bcm4318), вы можете использовать firmware из пакета b43-fwcutter:

> sudo zypper in b43-fwcutter
> sudo /usr/sbin/install_bcm43xx_firmware

Вы должны быть online пока не завершится установка.

Возвращаемся к чипу BCM4312. Необходимые пакеты лежат в suse-репозитории packman. Можно подключить вручную этот репозиторий и установить пакет broadcom-wl, который, в зависимости от используемого ядра, потянет за собой еще пару пакетов-зависимостей.

> sudo zypper ar http://packman.inode.at/suse/openSUSE_11.4 packman
> sudo zypper mr -r packman
> sudo zypper in broadcom-wl

То же самое можно сделать автоматически через механизм one-click-install. Для этого просто нажмите на иконку. Обратите внимание, что в примере я подключаю репозиторий openSUSE 11.4. One-click-install-метод автоматически добавит репозиторий для используемой вами версии openSUSE(12.1/12.2?).

После установки пакета в списке подгруженных модулей мы видим наш новый драйвер:

> pwd
/sys/bus/pci/devices/0000:07:00.0

> l | grep driver
lrwxrwxrwx 1 root root     0 Aug 26 22:20 driver -> ../../../../bus/pci/drivers/wl/

> lsmod | grep wl
wl                   2463028  0 
cfg80211              154761  1 wl
lib80211                5542  2 lib80211_crypt_tkip,wl

# hwinfo --wlan --short
network:                                                        
  eth1                 Broadcom BCM4312 802.11b/g

Имя нового сетевого интерфейса – eth1, вместо ожидаемого wlan0, но это не играет особой роли. Теперь выходим в инет или просто подключаемся к какой-нибудь wifi-сети. Список сетей, который видит наша карта, можно посмотреть с помощью iwlist:

> /usr/sbin/iwlist eth1 scan | grep ESSID
                    ESSID:"EasyBox-5DD252"
                    ESSID:"EasyBox-3CC555"
                    ESSID:"alex"
                    ESSID:"x23aatm.144"
                    ESSID:"WLAN-4B8775"
                    ESSID:"Arcor-C82816"
                    ESSID:"Hier gibts WLAN"
                    ESSID:"Leega-Speed"

Моя сеть называется “alex”, и для выхода в инет я буду использовать не NetworkManager, который является дефолтным для этого в openSUSE, а wpa_supplicant.
Единственное, что надо сделать перед его запуском – сгенерировать WPA/WPA2-Enterprise PSK для нашей SSID. Для этого запускаем wpa_passphrase и передаем ей два параметра – SSID и пароль. Например:

> wpa_passphrase alex alexalex
network={
        ssid="alex"
        #psk="alexalex"
        psk=9036fc877e43a122dab5454ecbb3245d8bd4edbc50d903c8a9b6182311522517
}

Это вывод wpa_passphrase. Копируем теперь это в любой файл, например в ~/wifi.conf и добавляем в начало две строчки:

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel

Все, конфиг готов (более подробная информация о синтаксисе/параметрах конфиг-файла). Теперь скармливаем его wpa_supplicant, указывая также имя устройства, под которым драйвер зарегистрировал wifi-карту. Не забываем после этого сделать dhcp-запрос:

> wpa_supplicant -i eth1 -c wifi.conf &
> dhclient eth1

Все достаточно просто, проблем возникнуть не должно. Через ifconfig проверь IP и, если dhcp-сервер ответил, доступ в сеть открыт. Обрати внимание, что для настройки wifi и выхода в сеть нам не понадобился ни X-сервер, ни какие-либо GUI.

4 Responses

Subscribe to comments with RSS.

  1. Derp said, on 08.01.2013 at 07:22

    Привет, может это уже не актуальная тема, но спрошу – у меня на OpenSUSE 12.1 (wi-fi 4313) видит сети, но при подключении постоянно переподключается(спрашивает пароль, либо есть ad-hoc открытый, постоянно говорит что переподключается). В чем может быть проблема?

    • anaumov said, on 08.01.2013 at 08:13

      Привет.

      Причин может быть много. Например, при использовании NetworkManager, это может быть баг в апплете (особенно, если это KDE). В логах демона есть что-нибудь?

      Причина может быть также в силе сигнала. В этом случае сеть видна, а зайти в нее не получится, потому что процесс авторизации будет постоянно обрываться. У меня была такая проблема в универе, когда точка доступа была на первом этаже, а первая пара – на третьем 🙂

      • Derp said, on 14.01.2013 at 08:49

        Да, я забыл сказать что ad-hoc я создаю с windows. То есть у меня есть интернет на стационарном компьютере с вин, а подключаюсь с нетбука. Заметил что к обычным точкам он спокойно присоединятется. Подключасюь через Network Manager.

  2. Андрей said, on 15.03.2013 at 23:59

    Отлично. на suse 12.3 все заработало.(пришлось только в сетевых настройках yast для интерфеса принудительно прописать маршутезацию)


Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.