7.14.2. Konfiguracja karty WLAN pod Linuksem

Karty sieciowe WLAN mają zwykle postać albo kart PCI, albo kart PCMCIA (w przypadku notebooków), albo modułów podłączanych przez USB. Większość producentów dołącza sterowniki tylko dla różnych wersji Windows. Niemniej większość obecnie produkowanych kart można zmusić do współpracy z Linuksem.

Producentów i modeli urządzeń jest bardzo dużo, natomiast wiele urządzeń opartych jest na tym samym chipsecie (układzie). Sterowniki pisane są nie dla konkretnych modeli urządzeń, ale dla poszczególnych chipsetów. Stąd też podstawową informacją jaką musimy uzyskać o karcie, to na jakim chipsecie jest ona oparta. Następnie należy ustalić, czy dla danego chipsetu istnieją sterowniki pod Linuksa.

Pomocne mogą to być następujące strony internetowe:

W ustaleniu chipsetu karty mogą być pomocne polecenia lspci i lsusb (dla urządzeń USB). Polecenia te wypisują informacje o zainstalowanych w komputerze urządzeniach. Szczególnie interesujący może być identyfikator PCI/USB (w postaci dwóch czterocyfrowych liczb szesnastkowych, oddzielonych dwukropkiem, np. 8086:1050, gdzie pierwsza liczba jest identyfikatorem producenta, w tym przykładzie jest to Intel, a druga - konkretnego urządzenia). Aby uzyskać identyfikator w postaci numerycznej (a nie tekstowego opisu, wyświetlanego w przypadku znanych urządzeń), należy do wyżej wymienionych poleceń dać parametr -n.

Po ustaleniu chipsetu należy ściągnąć odpowiednie sterowniki. Może się zdarzyć, że sterowniki będą od razu obecne w używanym przez nas jądrze, ale obecnie raczej trudno na to liczyć. Jeżeli nie znajdziemy wersji sterowników przystosowanej dokładnie do używanej dystrybucji i jądra, trzeba ściągnąć najlepiej źródła sterowników (gdyż sterowniki mają postać modułu do jądra i może być problem z ich użyciem z konkretną używaną przez nas wersją jądra) i próbować załadować moduł zgodnie z dokumentacją dołączoną do sterowników. Ten etap może różnie wyglądać zależnie od konkretnego modelu karty i sterowników. W szczególności urządzenia USB wymagają także działającego wsparcia dla USB, podobnie jest z PCMCIA. Problemy związane z ładowaniem modułu najlepiej śledzić analizując logi, a więc plik /var/log/messages (pod RedHat'em) lub /var/log/kern.log (pod Debianem). Na przykład używając sterowników z projektu linux-wlan należy zwrócić uwagę, jakie wersje modułów są naprawdę ładowane - zdarza się, że niektóre jądra zawierają już starsze wersje używanych sterowników i są one ładowane zamiast zainstalowanych przez nas nowych (w takim przypadku należy nadpisać pliki ze starymi wersjami).

Oczywiście w przypadku zmian czy dodawania modułów warto wykonać komendę depmod -a (pod Debianem update-modules). Zakładam przy tym, że używamy dość nowej wersji jądra (wsparcie dla urządzeń WLAN pojawiło się w jądrach 2.4). W RedHat i dystrybucjach pochodnych warto utworzyć alias dla ładowanego modułu z nazwą używanego urządzenia sieciowego, dodając do pliku /etc/modules.conf wpis typu:

alias eth1 8211
czy
alias wlan0 prism2_usb
Umożliwi to automatyczne ładowanie modułu przez skrypty konfigurujące sieć. Pod Debianem moduł należy dodać do pliku /etc/modules.

Ostatecznym testem na poprawność załadowania modułu powinno być uruchomienie programu iwconfig z pakietu wireless-tools (obecny w nowszych dystrybucjach, w razie czego należy doinstalować z http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html). Program ten jest podobny do programu ifconfig, pozwala na ustawienie parametrów dotyczących interfejsów bezprzewodowych, a także wyświetla informację o nich. Po wywołaniu bez parametrów powinien wyświetlić informację o wszystkich dostępnych interfejsach sieciowych, sprawdzając czy są to interfejsy WLAN. Wyświetlana przez program informacja może mieć np. postać:

lo        no wireless extensions.

wlan0     IEEE 802.11-b  ESSID:"SSID"  Nickname:""
          Mode:Managed  Frequency:2.437GHz  Access Point: 00:02:B3:93:28:9C
          Bit Rate:11Mb/s   Tx-Power:2346 dBm
          Retry min limit:8   RTS thr:off   Fragment thr:off
          Encryption key:off
          Link Quality:32/92  Signal level:-81 dBm  Noise level:-100 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

eth0      no wireless extensions.

Poszczególne parametry można ustawić za pomocą odpowiednich wywołań ifconfig:

# iwconfig wlan0 essid "MOJ_INDENTYFIKATOR"
# iwconfig wlan0 mode ad-hoc
# iwconfig wlan0 channel 2

Oddzielną sprawą jest automatyczne uruchamianie interfejsu podczas startu systemu. Sposób uzyskania tego różni się zależnie od dystrybucji. Dokładna instrukcja opisująca większość obecnych dystrybucji jest zawarta w pliku DISTRIBUITIONS.txt wchodzącym w skład pakietu wireless-tools. Dla RedHata w wersji 7.3 zaleca się po prostu uruchomienie narzędzia redhat-config-network, które posiada wsparcie dla urządzeń WLAN. Narzędzie to dodaje odpowiedni wpis do /etc/modules.conf oraz tworzy odpowiedni plik, np. /etc/sysconfig/network-scripts/ifcfg-wlan0 o zawartości:

DEVICE=wlan0
BOOTPROTO=static
NETMASK=255.255.255.0
ONBOOT=yes
MODE=Ad-Hoc
ESSID=NAZWA
CHANNEL=2
IPADDR=192.168.2.101

W Debianie interfejs konfiguruje się w pliku /etc/network/interfaces tak jak każdy inny, z tym że należy dodać wpisy specyficzne dla sieci WLAN. Przykładowo cała sekcja może wyglądać następująco:

auto wlan0
iface wlan0 inet static
	address 10.4.0.26
	netmask 255.255.255.0
	wireless-essid IDENTYFIKATOR_SIECI
	wireless-mode Managed
	gateway 10.4.0.1

Do diagnostyki połączenia do sieci bezprzewodowej przydatny może się okazać program wavemon, który można ściągnąć z http://www.janmorgenstern.de/projects-software.html. Dostarcza on na bieżąco informacji o poziome sygnału i szumu dla połączenia. Przydatne może też być narzędzie iwlist z pakietu wireless-tools, które potrafi wyświetlić listę widocznych punktów dostępowych:

# iwlist wlan0 scanning
wlan0     Scan completed :
          Cell 01 - Address: 00:06:25:BC:88:3B
                    ESSID:"IDENTYFIKATOR_SIECI"
                    Protocol:IEEE 802.11b
                    Mode:Managed
                    Frequency:2.412 GHz (Channel 1)
                    Quality:0/100  Signal level:-47 dBm  Noise level:-256 dBm
                    Encryption key:off
                    Bit Rate:1 Mb/s
                    Bit Rate:2 Mb/s
                    Bit Rate:5.5 Mb/s
                    Bit Rate:11 Mb/s
#