Настройка wifi соединения в Linux на сетевой Level One WNC-0300

logoДосталась мне сетевая достаточно известного производителя сетевого оборудования Level One WNC-0300. Сама сетевая сделана на чипе atheros первых поколений. Для данного чипа в linux необходимо использовать модуль ядра ath5k. На сегодняшний день в ядре есть модуль и ath9k, но он предназначен для новых чипов сетевых wifi карт, которые уже умеют работать по стандарту IEEE 802.11n.

Итак, приступим у установке и настройке.

Установка необходимых пакетов и модулей

По сути дела , нам в системе необходимо иметь 3 установленных пакета.

  • wireless_tools (этот пакет ставите любым установщиком для вашего дистрибутива, тут я подробно описывать процесс установки не буду)
  • madwifi (версия та, которая подходит для вашего ядра, смотреть на сайте )
  • wpa_supplicant (сборка данного пакета, зависит от madwifi)

К сожалению разработчики пакета madwifi не всегда поспевает за выходом новых ядер. Так что сборка данного пакета может закончится неудачей, если у вас одно из последних версий ядра. В данном случае могу только посоветовать поискать “нестабильные” версии этого пакета или может кто-то из энтузиастов сделал патч для сборки пакета под ваше ядро.

Проверяем, что карта видна в системе

root@m1k:~# lspci |grep Ath
02:0b.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)

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

Драйвера madwifi

Возможно в вашем ядре уже будут присутствовать драйвера madwifi, но как показывает практика во многих дистрибутивах их нет.

Компиляция и установка до безобразия проста.

make
make install

Если читать мануал, там еще можно указать местонахождение исходников ядра в специальной переменной.. Но у меня все и так собралось.

Установка wpa supplicant

Теперь устанавливаем утилиту установки соединения через wifi, используя драйвера madwifi

Как сказано в мануале, а его лучше прочитать, надо исправить файл .config внутри которого указать опции, которые будут использоваться при подключении к беспроводной сети. Я по возможности указал как можно больше опций и методов шифрования. Те опции на которых у меня ругался компилятор я закоментировал.

Также, нужно обратить внимание на эти две строчки

  • CONFIG_DRIVER_MADWIFI=y
  • CFLAGS += -I../madwifi

Эти строчки нужны, чтобы пакет wpa_supplicant собрался с драйверами madwifi.

Перед компиляцией пакета я сделал символическую ссылку, чтобы было проще обращаться к директории madwifi.

ln -s /usr/src/madwifi-0.9.4 /usr/src/madwifi

Но можно этого и не делать, тогда надо указать в CFLAGS полный путь до madwifi.

Мой .config


CONFIG_DRIVER_HOSTAP=y
#CONFIG_DRIVER_HERMES=y
CONFIG_DRIVER_MADWIFI=y
CFLAGS += -I../madwifi
CONFIG_DRIVER_ATMEL=y
CONFIG_DRIVER_WEXT=y
#CONFIG_DRIVER_NDISWRAPPER=y
#CONFIG_DRIVER_BROADCOM=y
#CONFIG_DRIVER_IPW=y
#CONFIG_DRIVER_BSD=y
#CONFIG_DRIVER_NDIS=y
CONFIG_WIRELESS_EXTENSION=y
CONFIG_IEEE8021X_EAPOL=y
CONFIG_EAP_MD5=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_EAP_TLS=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_TTLS=y
CONFIG_EAP_GTC=y
CONFIG_EAP_OTP=y
CONFIG_EAP_SIM=y
CONFIG_EAP_AKA=y
CONFIG_EAP_PSK=y
CONFIG_EAP_SAKE=y
CONFIG_EAP_GPSK=y
CONFIG_EAP_PAX=y
CONFIG_EAP_LEAP=y
CONFIG_CTRL_IFACE=y

Компилируем пакет командой

make

и я вручную скопировал три файлика в /usr/local/bin

  • wpa_cli
  • wpa_passphrase
  • wpa_supplicant

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

Если хотите узнать как были скомпилированы ваши родные пакеты, то надо найти скрипты сборки этих пакетов. Ну или попробовать установить wifi соединение через wpa_supplicant использовав драйвер madwifi. В этом случае сразу будет ясно есть драйвер madwifi или нет.

Настройка WIFI соединения

Чтобы не делать перезагрузку, подгружаем модуль нашей карты

modpobe ath_pci

Смотрим на вывод dmesg, должно появиться нечто подобное:


ath_hal: 0.9.18.0 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413)
wlan: 0.8.4.2 (0.9.3.3)
ath_pci: 0.9.4.5 (0.9.3.3)
ath_rate_sample: 1.2 (0.9.3.3)
wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wifi0: turboG rates: 6Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wifi0: H/W encryption support: WEP AES AES_CCM TKIP
wifi0: mac 7.9 phy 4.5 radio 5.6
wifi0: Use hw queue 1 for WME_AC_BE traffic
wifi0: Use hw queue 0 for WME_AC_BK traffic
wifi0: Use hw queue 2 for WME_AC_VI traffic
wifi0: Use hw queue 3 for WME_AC_VO traffic
wifi0: Use hw queue 8 for CAB traffic
wifi0: Use hw queue 9 for beacons
wifi0: Atheros 5212: mem=0xfeae0000, irq=23

При загрузке компьютера модуль ath_pci и модули, необходимые в дальнейшем для шифрования стартуют автоматом, но на всякий случай, когда ничего не получается для отладки можно попробовать подгружать их вручную командой (modprobe).

например модули:

  • wlan_tkip
  • wlan_ccmp
  • wlan_wep

или другие, которые установились с пакетем madwifi и описаны в документации к этому пакету.

В процессе настройки были вычитаны эти команды для указания частоты и номера канала wifi точки, но в дальнейшем после перезагрузки ОС эти команды не потребовались.

iwconfig ath0 freq 2.437G
iwconfig ath0 channel 6

Поднимаем интерфейс без указания IP, если IP выдается через DHCP роутером. (В данной статье естественно не будет описан процесс настройки роутера, просто надо иметь ввиду, что роутер настроен на шифрование WPA через TKIP)


ifconfig ath0 up

или можно с указанием адреса


ifconfig ath0 192.168.10.2 netmask 255.255.255.0 up

Далее укажу все практичеки по мануалу.
Просканируем наличие беспроводных сетей


#iwlist ath0 scan
ath0      Scan completed :
          Cell 01 - Address: 00:1B:54:48:0D:A0
                    ESSID:"136-1"
                    Mode:Master
                    Frequency:2.437GHz
                    Quality:51/70  Signal level:-44 dBm  Noise level:-95 dBm
                    Encryption key:on
                    Bit Rate:1Mb/s
                    Bit Rate:2Mb/s
                    Bit Rate:5.5Mb/s
                    Bit Rate:6Mb/s
                    Bit Rate:9Mb/s
                    Bit Rate:11Mb/s
                    Bit Rate:12Mb/s
                    Bit Rate:18Mb/s
                    Bit Rate:24Mb/s
                    Bit Rate:36Mb/s
                    Bit Rate:48Mb/s
                    Bit Rate:54Mb/s
                    Extra:bcn_int=100
                    Extra:wpa_ie=dd160050f20101000050f20201000050f20201000050f202

Итак, наша сетевуха видит наш роутер. Методы шифрования и канал это надо четко знать из настроек роутера, а иначе можно долго биться и подбирать параметры. Из вышеперечисленного вывода мы можем только узнать частоту точки WIFI и SSID.

Настраиваем конфиг подключения


#wpa_passphrase 136-1 <здесь фраза wpa-psk> > /etc/wpa_supplicant.conf

В конфиг добавляем дополнительные строчки шифрования и аутентификации. Итого получаем:


ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=root
#ap_scan=2

network={
        ssid="136-1"
        scan_ssid=1
        proto=WPA
        key_mgmt=WPA-PSK
        pairwise=TKIP
        group=TKIP
        psk=60web2b91f2dd02c4451a251571b42c9c73dd921
}

Далее пробуем установить связь с роутером (обратите внимание на эту команду, здесь указано имя интерфейча и драйвер для установки соединения):


# wpa_supplicant -iath0 -Dmadwifi -c /etc/wpa_supplicant.conf
Trying to associate with 00:1b:54:48:0d:a0 (SSID='136-1' freq=2437 MHz)
ioctl[IEEE80211_IOCTL_SETMLME]: Invalid argument
Association request to the driver failed
Associated with 00:1b:54:48:0d:a0
WPA: Key negotiation completed with 00:1b:54:48:0d:a0 [PTK=TKIP GTK=TKIP]
CTRL-EVENT-CONNECTED - Connection to 00:1b:54:48:0d:a0 completed (auth) [id=0 id_str=]

Все, связь есть!

Для того, чтобы связь автоматом появлялась после загрузки ОС, внесите необходимые изменения в стартовые скрипты вашей ОС. У меня для экспериментов стоит Slackware, поэтому нижепреведенные вырезки из конфигов для дистрибутива Slackware.

Правим /etc/rc.d/rc1.inet.conf, добавив туда строчки для нашей новой сетевой


IFNAME[4]="ath0"
IPADDR[4]="192.168.3.17"
NETMASK[4]="255.255.255.0"
USE_DHCP[4]=""
WLAN_ESSID[4]=136-1
WLAN_WPA[4]="wpa_supplicant"
WLAN_WPADRIVER[4]="madwifi"
WLAN_WPACONF[4]="/etc/wpa_supplicant.conf"

перезапускаем скрипт сетевых соединений


/etc/rc.d/rc.inet1 restart

Вуаля! Теперь все должно запуститься при старте ОС.

Если что-то идет не так и wifi соединение нестабильно, то можно проверить статус соединения командой


# wpa_cli status
Запись опубликована в рубрике Linux с метками , , , . Добавьте в закладки постоянную ссылку.

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

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