2 narzędzia umożliwiające korzystanie z kart bezprzewodowych w Linuksie

Tags:

Żaden inny sprzęt nie jest obecnie tak słabo wspierany pod Linuksem jak karty bezprzewodowe. Wciąż pojawiają się nowe modele, najwięksi producenci nie są zainteresowani wspieraniem tego systemu, zaś stworzenie otwartych sterowników dla tych kart jest niemal niemożliwe. Nie znajdziesz też wielu detalistów, którzy by zmieniali konfigurację sprzętową laptopów równie chętnie jak w przypadku PC-tów. W tej sytuacji ndiswrapper i Broadcom firmware cutter są funkcjonalnym, choć nie do końca satysfakcjonującym rozwiązaniem.

Te 2 programy nie są satysfakcjonujące z dwóch przyczyn. Po pierwsze, zaliczają się one do tej samej kategorii, która w repozytoriach Debiana określana jest jako "contrib": program sam w sobie jest otwarty, ale wymaga zamkniętego oprogramowania by działać. Wymienione programy umożliwiają używanie sterowników przeznaczonych dla Windows w systemie Linux, co budzi kontrowersje w środowisku Open Source, i choć sterowniki te są dostępne za darmo, może to być formalnie rzecz biorąc nielegalne. Po drugie, używanie tych dwóch narzędzi jest na tyle skomplikowane, że może zniechęcić wielu użytkowników, szczególnie że wiele zależy od dystrybucji GNU/Linuksa.

Tym gorzej, że w Internecie można znaleźć dużo ale niepełnej i niepewnej dokumentacji. Trudno ocenić jej jakość, bez wypróbowania samodzielnego danej metody, a po nieudanej próbie twój system może nie nadawać się do przetestowania innych metod.

Aby ułatwić sprawę, w tym artykule zawarte są informacje o użyciu obu narzędzi i ich wymaganiach. Na ile to możliwe, przedstawione są sposoby ogólne, ale w niektórych przypadkach może być potrzeba pomoc dokumentacji przeznaczonej dla twojej dystrybucji.

ndiswrapper
Ndiswrapper (Network Driver Interface Specification wrapper) dostarcza interfejsu, który umożliwia użycie windowsowych sterowników do bezprzewodowych kart pod Linuksem. Są dostępne co najmniej 2 graficzne nakładki na ndiswrapper, jednak większość opisów konfiguracji nie wspomina o tym, gdyż konfiguracja w linii poleceń jest w zupełności wystarczająca.

Musisz mieć kernel w serii 2.4 lub 2.6, w wersjach odpowiednio co najmniej 2.4.26 i 2.6.6. Ponadto pliki nagłówkowe kernela, gcc i pakiet wireless-tools. Jeśli twoja dystrybucja oparta jest na RPM, możesz z FreshRPMS ściągnąś pakiet dkms-ndiswrapper, który zawiera nagłówki kernela. Jeśli w repozytoriach twojej dystrybucji nie ma wireless-tools, możesz je ściągnąć ze strony HP Wireless LAN Resources Page.

Zanim zaczniesz instalować, musisz upewnić się czy twoja karta będzie działać z ndiswrapperem. Wykonaj lspci i skopiuj pierwszą kolumnę w linii dotyczącej twojej karty bezprzewodowej. Następnie lspci -n i znajdź linijkę odnoszącą się do twojej karty za pomocą skopiowanego uprzednio numeru. W 3 lub 4 kolumnie jest PCI ID tej sieciówki, składający się z 4 cyfr, dwukropka i kolejnych 4 cyfr, np. 14e4:4311. Na liście wspieranych kart znajdź swój sprzęt wg nazwy, i sprzawdź czy twój PCI ID jest wymieniony. Jeśli tak, instalacja powinna się udać, jeśli nie to możesz spróbować z Broadcom firmware cutter.

Jeżeli już próbowałeś używać ndiswrapper'a, musisz go dokładnie odinstalować. Najpierw odinstaluj sterowniki za pomocą polecenia ndiswrapper -r sterownik. Następnie usuń program, za pomocą narzędzia zarządzania pakietami twojej dystrybucji, lub gdy kompilowałeś ze źródeł, uruchamiając make uninstall w katalogu, gdzie znajdują się pliki ndiswrapper'a. Teraz usuń moduł z kernela za pomocą modprobe -r ndiswrapper. Jeśli utworzyłeś alias za pomocą ndiswrapper -m, usuń go poleceniem rm -f /etc/modprobe.d/ndiswrapper. Wreszcie, usuń z katalogu /usr/sbin plik loadndisdrive i inne odnośniki do ndiswrapper'a, a także moduł z /lib/modules/kernel_wersja/misc. Jeśli twoja dystrybucja umieszcza pewne pliki w innych miejscach, użyj narzędzia wyszukiwania aby znaleźć pliki powiązane z ndiswrapper'em.

Zainstaluj ndiswrapper z pakietu odpowiedniego dla twojej dystrybucji, lub ze źródeł dostępnych na stronie projektu. Aby skompilować, wykonaj polecenia distclean, make, make install.

Teraz możesz instalować sterownik. Strona projektu z listą wspieranego sprzętu zawiera także nazwę i url do sterownika którego potrzebujesz. Ściągnij go do nowego katalogu, i rozpakuj za pomocą unzip -a plik_sterownika.

Zauważ, że w niektórych z wielu opisów jakie znajdziesz w Internecie, możesz znaleść inne sterowniki, z innych źródeł, i niektóre z nich mogą nawet działać. Jakkolwiek, sterowniki dla innej wersji karty bezprzewodowej mogą też nie działać, lub umożliwić jedynie wykrycie sprzętu przez system bez możliwości połączenia z siecią. Ponadto ndiswrapper wspiera jedynie sterowniki do Windows XP, więc te dla Visty mogą nie działać. Możesz spróbować sterowników z innych źródeł jeśli te zalecane nie działają - ale musisz być wtedy gotowy na błędy i niepewne rozwiązania.

Jeśli masz zainstalowany system Windows XP, możesz znaleźć nazwę pliku *.sys sterownika wchodząc w Panel Sterowania -> System -> Sprzęt -> Menedżer Urządzeń. Znajdź w katalogu \Windows\inf odpowiednie pliki *.inf i *.sys, i skopiuj je do swojego systemu Linux. Jeśli użyjesz sterownika, który ściągnąłeś i rozpakowałeś, znajdziesz te pliki w podfolderze /DRIVER.

Aby zainstalować sterownik użyj polecenia ndiswrapper -i nazwa.inf . Niezbędne pliki zostaną skopiowane do /etc/ndiswrapper i utworzony zostanie plik konfiguracyjny dla karty. Poleceniem ndiswrapper -l możesz sprawdzić czy sterownik jest zainstalowany, i czy system wykrywa sprzęt.

Teraz skonfiguruj interfejs sieciowy za pomocą programów zawartych w pakiecie wireless-tools. Najbardziej zwięzłe instrukcje znajdziesz w dokumentacji do ndiswrapper'a.

Jeżeli połączenie bezprzewodowe działa, możesz wykonać ndiswrapper -m, by program wraz ze sterownikiem ładował się za każdym razem gdy interfejs bezprzewodowy jest wywoływany przez narzędzia typu wifi-radar czy network-manager. Jeśli chcesz by moduł był ładowany wraz ze startem systemu, sprawdź w dokumentacji swojej dystrybucji jak to zrobić - zazwyczaj wystarczy dodać linię ndiswrapper w /etc/modules lub linię modprobe ndiswrapper w pliku /etc/rc.d/rc.local.

Broadcom firmware cutter
Narzędzie to jest przeznaczone dla kart firmy Broadcom. Używa ono sterownika napisanego dla systemu Linux, ale potrzebny firmware uzyskuje z plików dla systemów Windows lub Mac OS (plik bcm43xx lub bcm43xx_mac80211).

Musisz mieć kernel w wersji co najmniej 2.6.17-rc2. Podobnie jak przy ndiswrapperze, wireless-tools przydadzą ci się by skonfigurować połączenie.

Sprawdź też, czy wersja firmware dla twojej karty jest wspierana przez program. Wpisz polecenie lspci i skopiuj pierwszą kolumnę linii dotyczącej twojej karty, następnie lspci -vn i za pomocą skopiowanego numeru znajdź wpis dla twojej karty. W 3 lub 4 kolumnie jest Chip ID (4 cyfry, dwukropek, kolejne 4 cyfry). Skopiuj ostatnie 4 cyfry, i znajdź je na stronie z listą wspieranych urządzeń projektu. Jeśli niedawno kupiłeś komputer, to twoja karta jest najprawdopodobniej wspierana, ale należy się upewnić.

Jeśli próbujesz po raz kolejny instalować firmware cutter, musisz usunąć z systemu sterownik. Możesz to zrobić za pomocą modprobe -r sterownik lub echo 'blacklist sterownik' >> /etc/modprobe.d/blacklist, dzięki czemu moduł nie będzie ładowany. By uniknąć pomyłek, warto także usunąć poprzednio ściągnięte pliki. W przeciwieństwie do ndiswrapper'a nie musisz usuwać starej wersji programu przed instalacją nowej.

Firmware cutter jest w repozytoriach wielu dystrybucji. Można też ściągnąć najnowszą wersję z repozytoriów projektu poleceniem checkout svn:://svn.berlios.de/bcm43xx/trunk/sprom.

Gdy już zainstalujesz narzędzie, ściągnij firmware Broadcomu. Najpopularniejszym źródłem jest repozytorium OpenWrt, ale niektóre dystrybucje jak Ubuntu mają inne źródła, więc sprawdź na forum użytkowników dystrybucji, czy nie ma specjalnych wersji firmware. Takie specjalnie przygotowane wersje mogą dać ci większą szansę powodzenia.

Przejdź do katalogu do którego ściągnąłeś firmware, i uruchom /usr/bin/bcm43xx-fwcutter -w /lib/firmware wl_apsta.o. Niektóre how-to sugerują dodanie też firmware do katalogu kernela bcm43xx-fwcutter -w /lib/firmware/`uname -r` wl_apsta.o, ale z mojego doświadczenia wynika że niczego to nie zmienia.

Jeśli z pomocą wireless-tools udało ci się uzyskać połączenie, możesz dodać modprobe sterownik przy uruchamianiu systemu. Wiele poradników pomija ten krok, ale wspominam o tym dla ścisłości.

Podsumowanie
Sposób działania ndiswrappera i firmware cutter jest nieco karkołomny, dlatego nie zniechęcaj się jeśli twoje pierwsze próby ich użycia zakończą się niepowodzeniem. Zajrzyj na listy mailingowe i kanał IRC twojej dystrybucji, by dowiedzieć się czy mają jakieś specyficzne informacje na temat użycia tych programów, i staraj się instalować na czystym systemie by zwiększyć szanse. Czasem może pomóc inne źródło z którego pobierasz lub inna wersja pliku.

Być może kiedyś używanie tych narzędzi będzie równie przestarzałe jak edytowanie config.sys w DOSie, ale obecnie wielu użytkowników nie ma innego wyjścia. Jedyne alternatywne rozwiązania to czekać w nadziei że natywny support pojawi się zanim nasz sprzęt stanie się przestarzały, lub kupić kartę wspieraną natywnie.

Artykuł w języku angielskim ukazał się w serwisie Linux.com