Archiwa tagu: rtl8187

Realtek 8187b (rtl8187) przez Ndiswrapper’a w Ubuntu 10.04.

Domyślny sterownik dla Realtek’a 8187 w Ubuntu jest niestety „niezbyt dobry”. Zasięgi łapie znakomite ale gorzej z bitrate’em. Prawdopodobnie przez obniżenie bitrate’u sterownik uzyskuje takie zasięgi. Postanowiłem wrócić do Ndiswrappera i sterownika z Win XP. Poradnik jest to kompilacja materiałów z sieci dotyczących instalacji tej karty w Ubuntu 8.04 oraz mojego poradnika napisanego dla forum Ubuntu.pl dotyczącego także Ubuntu 8.04.

1. Ściągamy sterownik dla Windows.

Ze strony Realtek’a, dział download ściągamy najnowszą wersję sterownika dla karty 8187B.

Rozpakowujemy archiwum.

2. Instalujemy ndiswrapper’a.

sudo apt-get install ndiswrapper-common ndiswrapper-utils ndiswrapper-utils-1.9

3. Instalacja sterownika Windows.

Przechodzimy do katalogu RTL8187B/WinXP w rozpakowanym archiwum ściągniętym w kroku 1. Operację tę wykonujemy oczywiście w konsoli. Jest to bardzo ważne aby być w tym katalogu. Następnie wydajemy polecenie:

sudo ndiswrapper -i net8187b.inf

Następnie:

sudo depmod -a

Następnie odnajdujemy oznaczanie naszej karty wifi:

lsusb

Szukamy linijki z nazwą Realtek Semiconductor Corp.. Przed nazwą powinno być tam podobne oznaczenie do tego: 0bda:8197. U mnie całą linijka wygląda tak:

Bus 006 Device 003: ID 0bda:8197 Realtek Semiconductor Corp.

Po odnalezieniu oznaczenie karty, każemy ndiswrappre’owi dla urządzenia o oznaczeniu xxxx:yyyy używać podanego wcześniej sterownika z Windows. Wydajemy polecenie:

sudo ndiswrapper -a tu_wpisujemy_oznaczenie_uzyskane_po_lsusb net8187b

czyli u mnie wygląda to tak

sudo ndiswrapper -a 0bda:8197 net8187b

Dodajemy wpis do /etc/modules

sudo nano /etc/modules

na końcu pliku dopisujemy:

ndiswrapper

Do pliku /etc/modprobe.d/blacklist.conf

sudo nano /etc/modprobe.d/blacklist.conf

dopsiujemy:

blacklist rtl8187

4. Usypianie i hibernacja.

Musimy teraz edytować kilka plików, aby po wybudzeniu komputera bądź to z uśpienia czy hibernacji, sieć wifi nam działał.

Sposób pierwszy to edycja pliku /usr/lib/pm-utils/sleep.d/55NetworkManager.

sudo nano /usr/lib/pm-utils/sleep.d/55NetworkManager

Edytujemy tylko ostatnią część pliku aby miała ona następującą postać:

case "$1" in
	hibernate|suspend)
		suspend_nm
		rmmod ndiswrapper
		;;
	thaw|resume)
		modprobe ndiswrapper
		resume_nm
		;;
	*) exit $NA
		;;
esac

Wadą tego rozwiązania jest jednak to, że po każdej aktualizacji pakietów odpowiedzialnych za zarządzanie energią czy pakietów NetworkManager’a plik ten zostanie nadpisany i potrzebna będzie ponowna edycja pliku.

Sposób drugi to utworzenie skryptu. Sposób nietestowany przeze mnie i nie wiem czy to rozwiązanie działa – w teorii powinno :). Tworzymy skrypt o jeden początkowy numerek większy niż nazwa pliku użytego w sposobie pierwszym. Czyli jeżeli nasza nazwa pliku dla skryptu NetworkManger’a to /usr/lib/pm-utils/sleep.d/55NetworkManager, to tworzymy plik /usr/lib/pm-utils/sleep.d/56ndiswrapper:

sudo nano /usr/lib/pm-utils/sleep.d/56ndiswrapper

Wklejamy to:

#!/bin/sh
 
. "${PM_FUNCTIONS}"
 
case "$1" in
	hibernate|suspend)
		rmmod ndiswrapper
		;;
	thaw|resume)
		modprobe ndiswrapper
		;;
	*) exit $NA
		;;
esac

Nadajemy prawa do wykonywania:

sudo chmod ugo+x /usr/lib/pm-utils/sleep.d/56ndiswrapper

Zalety tego sposobu to, że podczas aktualizacji nic nie powinno się dziać. Wady – nie wiem czy działa :).

5. Sprawdzamy czy działa.

Rozłączamy połączenie wifi w NetworkManger.

Usuwamy stary moduł odpowiadający za kartę:

sudo rmmod rtl8187

Ładujemy ndiswrapper’a:

sudo modprobe ndiswrapper

Próbujemy się połączyć. Jeżeli nie dział, powinien pomóc restart komputera.