Zanim napiszesz o problemach z WIFI !

Karty sieciowe, modemy, routery, WiFi, Bluetooth etc.
broken
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 233
Rejestracja: 23 kwie 2007, 00:46
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME

Zanim napiszesz o problemach z WIFI !

Post autor: broken »

Wraz z Ubuntu od wersji 8.04 dostarczany jest szereg najpopularniejszych sterowników dla kart bezprzewodowych PCI / PCMCIA oraz USB. Kupując kartę w sklepie, bądź kupując notebooka w większości wypadków użytkownik nie ma zasadniczego pojecia na jaką karte trafi - jeśli jeszcze stoisz przed wyborem notebooka warto zapytać sprzedawcy jaką kartę notebook posiada.

Po krótce chciałbym się podzielić moją wiedzą jeśli chodzi o karty bezprzewodowe i korzystanie z nich w systemie Linux (niekoniecznie tylko Ubuntu!), gdyż w wielu przeczytanych wątkach pojawia się szereg problemów które w dużej mierze dublują się lub wynikają z podstawowej wiedzy na temat tego jak Linux obsługuje karty radiowe.

1. Karty obsługiwane pod Linuxem

W odróżnieniu systemu Windows ilość dostępnych sterowników dla Linuxa jest niestety wyjątkowo uboga, niemniej jednak większość dostępnych kart radiowych da się z powodzeniem uruchomić na pingwinie. Problem zazwyczaj dotyczy albo kart nowych (np. bazujących na standardzie N albo Pre-N) albo też mało popularnych układów do których nikt nie napisał jeszcze sterowników. Aby dowiedzieć się czy dana karta jest obsługiwana najpierw warto się dowiedzieć na bazie jakiego układu dana karta działa. Tutaj wbrew pozorom układów nie jest szalenie dużo w odróżnieniu od modeli kart dostępnych na rynku. Można się czasami zdziwić, że karty radiowe kosztujące 39zł i te za 139zł to w sumie jeden i ten sam model - różniący sie zazwyczaj tylko pudełkiem i ew napisami. Ubuntu domyślnie posiada w sobie następujące sterowniki :

- madwifi-ng (sterownik obsługuje wszystkie karty PCI/PCMCIA (bez USB) na bazie chipsetu Atheros - większość kart takich firm jak SparkLAN, TP-Link bazują na układzie Atherosa choć zdarzają się wyjątyki.)
- b43, b43legacy, bcm43xx (3 różne sterowniki do kart radiowych firmy Broadcom bazujących na chipie BCM43XX - najczęściej są to układy zintegrowane bądź też dostępne w formie kart miniPCI - duża część notebooków ACER'a, Fujitsu-Siemens czy też HP - miało właśnie układy na bazie Broadcom'a.)
- hostap (sterownik układów Intersil PRISM2 - leciwe już karty, ale wciąż spotykane jako układy dla kart PCMCIA i PCI oraz miniPCI)
- libertas (sterownik dla układu MARVELL LIBERTAS - czasami spotykane karty PCI, miniPCI oraz USB)
- prism54 (sterownik dla układów Intersil PRISM54 (802.11g) - układ popularny wśród wczesnych kart 802.11g - Sweex, Planet robili karty na bazie tego układu).
- rt2x00 (Ubuntu posiada pakiet tych sterowników w kilku wersjach rt2400pci, rt2500pci, rt2500usb,rt2x00pci,rt2x00usb, rt61pci, rt73usb - wersje bez X są starszymi (LEGACY) sterownikami które powiny pracować ze starszymi układami firmy RaLink bez najmniejszych problemów - karty na bazie rt2500 produkowane są do dzisiaj i jest to najpopularniejszy układ w tej chwili na rynku. Wiele kart w formie wtyczki USB bazuje właśnie na układzie RaLink 2500 i nowszych wersjach RT61 (MIMO!) i 73(USB) itd.)
- zd1211rw i zd1201 (Chipset ZyDAS - w wiekszości produkowanych urządzeń chipset ten znalazł zastosowanie w wielu kartach USB - nie widziałem nigdy tego układu w kartach PCI czy miniPCI)
- adm8211 (Sterownik dla układu ADMTEK - leciwy i niezwykle rzadko stosowany )
- atmel (Kiedyś popularny układ dla wszelakiej maści kart na USB np. Linksys)
- hermes (Sterownik dla wszelkiego rodzaju maści kart PCI i PCMCIA na bazie starego układu HERMES - przede wszystkim stosowany w popularnych kartach Lucent Orinocco)
- ipw2100, ipw2200 (Sterownik dla kart na bazie Intel Pro Wireless 2100/2200 - w wiekszości wypadków układy zintegrowane bądź też dostępne w formie kart miniPCI).
- wl3501 - (Sterownik dla kart Planet 3501 - bóg raczy wiedzieć co to jest za układ)
- bcmw1 - (sterownik dla Broadcom Airforce One - stosowany w notebookach)
- rtl8187 - (sterownik wspierający układy Realtek RTL8180 (802.11b), RTL8185 (802.11g) oraz RTL8187 (802.11g))

Jak widać Linux ma trochę sterowników i bynajmniej nie są to wszystkie dostępne sterowniki. Z uwagi na to, że wiele układów nie może byc wspieranych przez developerów Ubuntu oraz innych dystrybucji Linuxa istnieje wiele sterowników które nie znalazły się w dystrybucji - być może za jakiś czas lista dostępnych sterowników się zwiększy - przynajmniej do tego czasu będziemy musieli sobie skompilować sterownik samemu - ale to na koniec. Sterowników z miesiąca na miesiąc troche przybywa : http://linuxwireless.org/en/users/Drivers - warto sprawdzać czy nie pojawiają się jakieś nowsze sterowniki lub też nie poprawiono istotnych błędów.

2. Co kraj to obyczaj czyli ieee80211 vs net80211

Niestety w Linuxie w dużej mierze nie zunifikowano w większości wypadków wszystkich sterowników jak ma to miejsce pod systemem Windows, gdzie istnieje dość dobrze opisany standard oraz API o nazwie NDIS (ang. Network Driver Interface Specification, NDIS) – interfejs programowania aplikacji (API) dla kart sieciowych. Stąd bardzo często pojawia się problem związany z tym, że do obsługi danej karty pod Linuxem musimy użyc specyficznych komend bądź też duże rzeczy zrobić ręcznie - w przeciwnym wypadku popularne konfiguratory sieci nie będą działać lub też karta radiowa będzie widziana jako zwykła karta LAN. To rodzi pewne problemy, ale w dużej mierze dotyczy to raczje leciwych sterowników które nie są już rozwijane. Developerzy Linuxa o ile w już dość dawno prowadzili tzw. stos ieee80211 do obsługi kart to wraz z rozwojem funkcjonalności poszczególnych sterowników wynikła potrzeba rozszerzenia istniejącej już obsługi kart WIFI, więc zaczęto pracować nad nowymi rozszerzeniami - na szczęście wiele rzeczy pozostało niezmienionych.

3. Działajmy !

Jeśli już posiadamy komputer/notebooka z kartą wifi trzeba byłoby w jakiś sposób określić jaką kartę posiadamy i czy możemy z niej skorzystać. Ubuntu ma to do siebie że w wiekszości wypadków sam automatycznie przy starcie systemu wykrywa większość sprzętu sieciowego. Aby sprawdzić czy Ubuntu załadował do naszej karty sterownik czy też nie należy wykonać w konsoli komendę

Kod: Zaznacz cały

sudo iwconfig
. Pokaże nam który z obecnych interfejsów sieciowych posiada tzw. rozszerzoną funkcjonalność o obsługę sieci bezprzewodowych.

Kod: Zaznacz cały

wlan0     IEEE 802.11b  ESSID:""
          Mode:Auto  Frequency:2.457GHz  Access Point: FF:FF:FF:FF:FF:FF         
          Bit Rate:11Mb/s   Tx-Power:20 dBm   Sensitivity=0/242700000
          RTS thr:2432 B   Fragment thr:2432 B
          Encryption key:off
          Power Management:off
          Link Quality:100/100  Signal level:-95 dBm  Noise level:-256 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
Jak widać coś jednak w naszym systemie zostało znalezione - widocznie Ubuntu znalazło sterownik do karty radiowej i moduł został załadowany. W przypadku kiedy iwconfig zwaraca nam przy wszystkich interfejsach "no wireless extensions" musimy sprawdzić jaką faktycznie mamy kartę. W tym celu należy użyć komendy

Kod: Zaznacz cały

sudo lspci 
. Zwróci nam wszystkie urządzenia PCI dostępne w systemie. Najistotniejsze są wpisy "Network controller:" które okreslają klasę sprzętu jako kartę sieciową. Przeanalizujmy co jest w tych linijkach - z pewnością da nam to podpowiedź do tego jaką kartę posiadamy - a więcej będziemy mogli szukać sterownika.

4. Podstawowe komeny do zarządzania połączeniem oraz diagnostyka

W Linuxie interfejsy mają kilka stanów w których działają i pozwalają na korzystanie z nich. Domyślnie komenda iwconfig wyświetla wszystkie dostępne interfejsy - niemniej czasami konfigurator (np. WICD czy Network Manager) może danej karty nie widzieć albo nie pozwoli jej na obsługę dopóki interfejs nie zostanie uaktywniony za pomocą komendy

Kod: Zaznacz cały

 sudo ifconfig nazwa_interfejsu up 
Warto o tym pamiętać - tyczy się to czasami też kart sieciowych LAN - uśpieniu komputera czasami karta może przejść w tryb wyłączony. W ekstremalnych przypadkach potrzeba będzie przeładowania modułu obsługującego kartę np.

Kod: Zaznacz cały

 
sudo rmmod rt2x00
sudo modprobe rt2x00


Tutaj dla przykładu użyliśmy sterownika rt2x00 dla kart firmy Ralink, w przypadku innych kart musimy podać nazwę modułu (listę wszystkich załadowanych modułów można wyświetlić za pomocą komeny

Kod: Zaznacz cały

 sudo lsmod 
).

Żeby sprawdzić czy karta faktycznie działa możemy skorzystać z prostych komend do konfiguracji :

Kod: Zaznacz cały

sudo iwconfig nazwa_interfejsu essid nazwa_SSID_nadajnika 
Jesli nie znamy nazwy_SSID_nadajnika to możemy wymusić kartę aby przeszukała eter w poszukiwaniu wszystkich dostępnych sieci za pomocą komendy :

Kod: Zaznacz cały

sudo iwlist nazwa_interfejsu scan
Jeśli karta działa ok, to powinniśmy otrzymać listę sieci będących w zasięgu np.:

Kod: Zaznacz cały

ath0      Scan completed :
          Cell 01 - Address: 00:1A:6B:05:C7:F1
                    ESSID:"neostrada_309e"
                    Mode:Master
                    Frequency:2.457 GHz (Channel 10)
                    Quality=31/70  Signal level=-64 dBm  Noise level=-95 dBm
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Extra:bcn_int=100
W przypadku komunikatu o błędzie bądź też jeśli karta nic nie znajdzie nadal możemy spróbować recznie skonfigurować kartę.

Jesli uzywamy szyfrowania WEP musimy podać kluczy szyfrujący - w tym wypadku wpisujemy komendę :

Kod: Zaznacz cały

sudo iwconfig nazwa_interfejsu key klucz_wep_w_hexach
lub jeśli klucz jest w postaci ASCII :

Kod: Zaznacz cały

sudo iwconfig nazwa_interfejsu key s:klucz_ascii
Ponowne wykonanie komendy iwconfig powinno wyświetlić nam mniej więcej takie coś :

Kod: Zaznacz cały

wlan0     IEEE 802.11b  ESSID:"bercik"
          Mode:Auto  Frequency:2.457GHz  Access Point: 00:10:a1:1a:28:10         
          Bit Rate:11Mb/s   Tx-Power:20 dBm   Sensitivity=0/242700000
          RTS thr:2432 B   Fragment thr:2432 B
          Encryption key:off
          Power Management:off
          Link Quality:20/100  Signal level:-60 dBm  Noise level:-95 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
Jak widac polaczylismy sie z punktem dostepowym (widac pole Access Point : Access Point: 00:1A:6B:05:C7:F1) oraz pojawily nam sie wskazania poziomu sygnalu (signal level) oraz link quality (signal to noise ratio). W przeciwnym wypadku coś nie działa - albo nasza karta nie działa całkowicie, albo jesteśmy poza zasięgiem sieci bądź punkt dostępowy nie pozwala naszej karcie się podłączyć. Tutaj już trzeba trochę głębiej poszukać.

4. Szyfrowanie WPA/WPA2

Szyfrowanie WPA oraz WPA2 opiera się na troszkę innych zasadach niż standardowe szyfrowanie WEP. Linux podobnie jak Windows czy też inne systemy do szyfrowania WPA wszelkiego rodzaju używa tzw. suplikanta - aplikacji która pośredniczy w szyfrowaniu i wymianie kluczy szyfrujących oraz steruje kartą radiową. W przypadku Linuxa oraz Ubuntu standardem jest tzw. pakiet WPA_Supplicant - który pozwala zarządzać kartą za pomocą tzw. Wireless Extensions (sterownik wext) oraz pozwala zestawiać różnego rodzaju szyfrowanie (EAP, LEAP, WPA-Radius itd.) Narzędzie jest naprawdę złożone i ciężko mi od razu opisać wszystkie jego możliwości oraz konfigurację. Dla początkującego użytkowniak zdecydowanie najlepiej będzie skorzystać z nakładki graficznej jaką jest np. WiCD ( http://czytelnia.ubuntu.pl/index.php/2007/07/28/wicd/ )
------------------------------------------------
Nie pomagam poza forum!
Zablokowany

Wróć do „Urządzenia sieciowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości