30 grudnia 2009
Ubuntu: ath5k vs madwifi. Zmiana regdomain karty bezprzewodowej.
Kategorie: sieć, Techblog, ubuntu, urządzenia | 06:08:143 komentarze
Powróciłem ostatnio do ubuntu (9.10), mając nadzieję spędzać mniej czasu przy konfiguracji systemu i instalacji oprogramowania. Przyjazd do domu na święta, dużo innych rzeczy do zrobienia i kłopot z dostępem do netu spowodował, że znów zacząłem psuć.
Tym razem dobrałem się do karty bezprzewodowej tp-link wn610g. Karta jest na pcmcia z wyprowadzonym łączem do zewnętrznej anteny. Oparta jest na chipsecie Athero, a w ubuntu obsługiwana jest przez sterownik ath5k. Po włożeniu karty jakość połączenia była co tu dużo mówić żenująca. Strony albo wczytywały się minutę albo w ogóle. To, że na windowsie wszystko działało tak jak trzeba (eh) zachęciło mnie tylko do tego żeby coś z tym zrobić. Kiedy jeszcze na dysku gościło u mnie gentoo kartę obsługiwał sterownik madwifi i połączenie było o wiele lepsze więc postanowiłem wykorzystać go w ubuntu.
Instalacja sterowników madwifi
Zacząłem od pobrania najnowszych sterowników ze strony projektu
wget http://snapshots.madwifi-project.org/madwifi-trunk-current.tar.gz
ich rozpakowania
tar xvzf madwifi-trunk-current.tar.gz
i przejścia do powstałego katalogu
cd madwifi-trunk-r4099-20091230
Przed dalszymi krokami warto się upewnić czy mamy wymagane pakiety: build-essential oraz checkinstall dzięki, któremu wygenerujemy paczkę deb łatwą do późniejszej, ewentualnej deinstalacji.
sudo apt-get install build-essential checkinstall
Budujemy i instalujemy
make sudo checkinstll
Sterownik madwifi jest w ubuntu domyślnie zablokowany, aby móc z niego skorzystać musimy edytować plik /etc/modprobe.d/blacklist-ath_pci.conf wstawiając hasz przed poleceniem zabraniającym ładowania modułu ath_pci przy starcie systemu
##/etc/modprobe.d/blacklist-ath_pci.conf #blacklist ath_pci
jednocześnie blokując moduł ath5k przez dopisanie stosownej linii w /etc/modprobe.d/blacklist.conf
##/etc/modprobe.d/blacklist.conf blacklist ath5k
Po restarcie karta działała już na sterowniku madwifi.
Niestety pojawił się problem, a mianowicie karta nie mogła znaleźć sieci mojego dostawcy. Polecenie iwlist ath0 chan pokazało, że dostępne kanały to 1 do 11 zaś ap chodzi na 13 kanale :/. Wymuszenie skanowania na 13 kanale (sudo iwconfig ath0 channel 13) skończyło się fiaskiem .
Próbowałem też za madwifi-project.org załadować moduł z określonym kodem państwa bo z tego co się orientuję z 13 kanału można swobodnie korzystać w Europie a w USA już chyba nie.
sudo rmmode ath_pci //usuwamy moduł sudo modprobe ath_pci countrycode=616 //ładujemy z kodem Polski
Okazało się jednak, że kod państwa nie pasuje do ustawionego dla karty regionu (to samo np. z kodem Niemiec) więc została mi tylko próba zmiany tegoż regionu na inny co swoją drogą wydało mi się trochę dziwne, ale co tam.
Zmiana regdomain karty
Na wstępie należy zaznaczyć, że zmiana regionu karty nie jest czymś zalecanym. Panowie z madwifi piszą: kids, don’t do this at home! i pewno mają rację bo raz, że ingerujemy w wewnętrzne oprogramowanie karty i tu coś może pójść nie tak, dwa zmieniamy zakres warunków w jakich będzie pracować karta i wcale nie jest powiedziane, że będzie się w nich czuła dobrze.
Zacząłem od uśpienia interfejsu pod jakim jest widoczna karta
sudo ifconfig ath0 down
Później znalazłem adres pamięci, pod którym rezyduje urządzenie
grep ath_pci /proc/bus/pci/devices | cut -f4
Otrzymaną liczbę będącą adresem wykorzystałem w kolejnym poleceniu
sudo ath_info [adres]
Jeżeli otrzymałeś informacje o urządzeniu, które w moim przypadku wyglądały tak możemy przystępować do zmiany regionu, w przeciwnym razie lepiej to zostawić ;). Spotkałem się z radami by ustawić region na zero co pozwala na załadowanie modułu z jakimkolwiek kodem kraju i faktycznie tak jest. Po wykonaniu wcześnie przytoczonej komendy z Polskim kodem miałem dostęp do 13 kanału. Jednak po tej zmianie karta nie mogła znaleźć sieci na windowsie :D. Postanowiłem więc po potwierdzeniu, że jestem świadomy że mogę popsuć kartę, ustawić region na Francję gdzie mam 13 kanał a i windows poprawnie wykrywa sieć.
sudo ath_info -w [adres] regdomain 0x32
Po podniesieniu interfejsu
sudo ifconfig ath0 up
bez problemu połączyłem się z ap dostawcy
Sterownik nie wykrył jednak poprawnie standardu w jakim nadawał ap, ustawiając dla karty g zamiast b. Wymusiłem zmianę przez
sudo iwpriv ath0 mode 11b
co było ostatnim krokiem do przyzwoitego połączenia.
Myślę, że przy ath5k może być ten sam problem z doborem standardu, ale nie da się na nim wymusić póki co korzystania z konkretnego kodowania ..i dobrze bo tyle się narobiłem że wkurzyłbym się gdyby jedną komendą to zrobić.
Nie jest to rozwiązanie idealne chociażby z tego względu że to właśnie nad ath5k skupili się twórcy madwifi, i to on będzie rozwijany. Pod ath5k miałem paru procentowy wzrost sygnału w stosunku do madwifi ale może to tylko inny sposób odczytu. Poza tym przy każdej aktualizacji jądra systemu czeka mnie reinstalacja sterowników madwifi.

