Instalacja kart radiowych opartych o chipset RTL8180

Slackware FAQ - czyli baza pytań i odpowiedzi.

Moderatorzy: Moderatorzy, Administratorzy

ODPOWIEDZ
Awatar użytkownika
difrost
Moderator
Posty: 2802
Rejestracja: 2006-03-11, 12:31
Lokalizacja: Wrocław
Kontakt:

Instalacja kart radiowych opartych o chipset RTL8180

Post autor: difrost » 2006-08-01, 16:51

Instalacja kart radiowych opartych o chipset RTL8180


CEL: Wielu użytkowników posiada karty radiowe oparte na chipsecie RTL8180 firmy Realtek. Celem tego FAQ jest opisanie procesu instalacji takich kart w systemie Slackware Linux.

---------------------------------------------------------------------

SPIS TREŚCI:

Kod: Zaznacz cały

 1. Wstęp.
 2. Instalacja z wykorzystaniem ndiswrappera.
 3. Instalacja z wykorzystaniem otwartych sterowników.
 4. Zestawianie połączenia.
[/b]

1. Wstęp.
Do konfiguracji łącza poprzez kartę radiową potrzebne będzie pakiet wireless_tools w możliwie jak najnowszej wersji. Ponadto w jądrze musimy zaznaczyć opcję Wireless LAN drivers (non-hamradio) & Wireless Extensions - użytkownicy dystrybucyjnego jądra mają tę opcję na pewno zaznaczoną.

UWAGA: Karty z RTL8180 potrafią się blokowaę, tj. mają czasem problemy z połączeniem się z Access Pointem i wtedy trzeba jeszcze raz powtórzyć sekwencję czynności konfiguracji łącza (iwconfig)!

2. Instalacja z wykorzystaniem ndiswrappera.

Ndiswrappera można pobrać z tej strony. Nie musi to być koniecznie ostatnia wersja, gdyż wsparcie dla tej karty istnieje już we wcześniejszych. Nowsze wersje powinni pobrać posiadacze ostatnich jąder, gdyż znajdują się tam poprawki adaptacyjne do zmian w jądrach. Z kolei jeśli będziemy używać zbyt starej wersji, to mogą pojawić sie konflikty z ACPI. Rozwiązaniem może być podanie do jądra przy bootowaniu opcji acpi=ht.

Wszystkie czynności wykonujemy jako użytkownik root:
*) Rozpakowujemy pobrane źródła.
**) Instalujemy ndiswrappera komendą

Kod: Zaznacz cały

make install
Jeśli posiadamy wersję > 1.8, to możemy odchudzic moduł instalując go w ten sposób:

Kod: Zaznacz cały

make install DISABLE_USB=1
UWAGA: Jeśli wcześniej instalowano ndiswrappera to należy wykonać wcześniej komendę make uninstall jeśli posiadamy źródła, z których ta wersja była budowana. W przeciwnym wypadku należy użyć make distclean.

***) Ściągamy sterowniki dla systemu MS Windows XP stąd.

****) Po ich rozpakowaniu wydajemy komendę, która zainstaluje sterowniki:

Kod: Zaznacz cały

ndiswrapper -i NET8180.INF
*****) Poprawność instalacji weryfikujemy komendą

Kod: Zaznacz cały

ndiswrapper -l
Powinna ona w efekcie dać

Kod: Zaznacz cały

net8180   driver installed, hardware present
******) Jeśli wszystko przebiegło bez błędów ładujemy moduł ndiswrappera

Kod: Zaznacz cały

modprobe ndiswrapper
Komendę powyższą należy dopisać do /etc/rc.d/rc.modules, tak aby moduł był ładowany za każdym razem przy starcie systemu.

UWAGA!!! Istnieją karty robione na chipsecie RTL8180, do których trzeba przerabiać sterowniki podane w tym HOWTO, np. DWL-510 firmy D-Link. Więcej informacji na ten temat można znaleźć na stronie domowej projektu.

3. Instalacja z wykorzystaniem otwartych sterowników.

Strona domowa dla tych sterowników, to: http://sourceforge.net/projects/rtl8180-sa2400

*) Sterowniki pobieramy z CVS

Kod: Zaznacz cały

cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/rtl8180-sa2400 co -P rtl8180-sa2400-dev
**) Kompilacja jest bardzo prosta

Kod: Zaznacz cały

cd rtl8180-sa2400-dev
make
UWAGA:Sterowniki te nie kompilują się z jądrami 2.6.17.x. Po wpisaniu make źrodła są kasowane prze Makefile jądra! Problem rozwiązują te dwa patche:
a) Patch na Makefile

Kod: Zaznacz cały

--- Makefile.orig	2006-07-25 14:01:23.000000000 +0200
+++ Makefile	2006-07-25 14:01:32.000000000 +0200
@@ -59,7 +59,7 @@
 	make -C $(KSRC) SUBDIRS=$(PWD) modules
 
 2.6:
-	$(MAKE) -C $(KSRC) SUBDIRS=$(PWD) MODVERDIR=$(PWD) modules
+	$(MAKE) -C $(KSRC) SUBDIRS=$(PWD) modules 
 
 clean:
 	rm -f *.mod.c *.mod *.o .*.cmd *.ko .*.flags
Jest on dostępny również tutaj.

- Nakładanie:

Kod: Zaznacz cały

cd rtl8180-sa2400-dev 
patch -p0 < mk_patch.diff
b) Patch na MODULE_PARM w r8180_core.c

Kod: Zaznacz cały

--- r8180_core.c.orig	2006-07-25 13:57:51.000000000 +0200
+++ r8180_core.c	2006-07-25 13:59:55.000000000 +0200
@@ -134,16 +134,20 @@
 MODULE_AUTHOR("Andrea Merello <andreamrl@tiscali.it>");
 MODULE_DESCRIPTION("Linux driver for Realtek RTL8180 / RTL8185 WiFi cards");
 
-MODULE_PARM(ifname,"s");
+/*MODULE_PARM(ifname,"s");*/
+module_param(ifname, charp, 0400);
 MODULE_PARM_DESC(devname," Net interface name, wlan%d=default");
 
-MODULE_PARM(hwseqnum,"i");
+/*MODULE_PARM(hwseqnum,"i");*/
+module_param(hwseqnum, int, 0400); 
 MODULE_PARM_DESC(hwseqnum," Try to use hardware 802.11 header sequence numbers. Zero=default");
 
-MODULE_PARM(hwwep,"i");
+/*MODULE_PARM(hwwep,"i");*/
+module_param(hwwep, int, 0400); 
 MODULE_PARM_DESC(hwwep," Try to use hardware WEP support. Still broken and not available on all cards");
 
-MODULE_PARM(channels,"i");
+/*MODULE_PARM(channels,"i");*/
+module_param(channels, int, 0400); 
 MODULE_PARM_DESC(channels," Channel bitmask for specific locales. NYI");
Jest on dostępny również tutaj.

- Nakładanie:

Kod: Zaznacz cały

patch -p0 < r81_patch.diff
***) Jako root uruchamiamy skrypt:

Kod: Zaznacz cały

./module_load
Jeśli pojawi się błąd, to należy zmienić nagłówek skryptu module_load i module_unload z

Kod: Zaznacz cały

#!/bin/env
na odpowiednią ścieżkę do env (which env - da całą ścieżkę).

****) Weryfikacja:
Po wydaniu komendy lsmod w wyniku powinny znaleźć się następujące moduły:
- r8180
- ieee80211_r8180
- ieee80211_crypt_wep_r8180
- ieee80211_crypt_r8180

Natomiast w dmesg powinny znaleźć się podobne komunikaty jądra

Kod: Zaznacz cały

Linux kernel driver for RTL8180 / RTL8185 based WLAN cards
Copyright (c) 2004-2005, Andrea Merello
rtl8180: Initializing module
rtl8180: Wireless extensions version 19
rtl8180: Initializing proc filesystem
rtl8180: Configuring chip resources
ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [LNKB] -> GSI 10 (level, low) -> IRQ 10
rtl8180: Memory mapped space @ 0xe7001000
rtl8180: Hardware frame sequence numbers disabled
rtl8180: MAC controller is a RTL8180
rtl8180: This is a PCI NIC
rtl8180: Reported EEPROM chip is a 93c46 (1Kbit)
rtl8180: Card MAC address is 00:50:fc:f1:c2:25
rtl8180: EEPROM version 103
rtl8180: RfParam: 16
rtl8180: WW:Card reports RF frontend by GCT.
rtl8180: WW:This driver has EXPERIMENTAL support for this chipset.
rtl8180: WW:use it with care and at your own risk and
rtl8180: WW:**PLEASE** REPORT SUCCESS/INSUCCESS TO andreamrl@tiscali.it
rtl8180: Energy threshold: 2
rtl8180: PAPE from CONFIG2: 6
rtl8180: Antenna B is default antenna
rtl8180: Antenna diversity is disabled
rtl8180: Carrier sense 1
rtl8180: 40-bit WEP is NOT supported in hardware
rtl8180: 104-bit WEP is NOT supported in hardware
rtl8180: IRQ 10
rtl8180: Driver probe completed

rtl8180: Bringing up iface
rtl8180: Card successfully reset
4. Zestawianie połączenie
a) ustwiamy tryb połączenia

Kod: Zaznacz cały

iwconfig wlan0 mode Managed
Krok ten może być niepotrzebny w niektórych przypadkach, ale ogólnie powinno się go wykonać.

b) Ustawiane essid

Kod: Zaznacz cały

iwconfig wlan0 essid ESSID_SIECI
c) ,,Podnosimy'' interfejs

Kod: Zaznacz cały

ifconfig wlan0 up
d) Ustawiamy IP dla intefejsu

Kod: Zaznacz cały

ifconfig wlan0 NR_IP netmask MASKA
Jeśli IP jest ustalane dynamicznie (DHCP), to wystarczy wydać komendę

Kod: Zaznacz cały

dhcpcd wlan0
e) dodajemy domyślną bramę

Kod: Zaznacz cały

route add default gw ADRES_IP_GW
---------------------------------------------------------------------------------------

AUTOR: difrost
Fragment dotyczący natywnych sterowników (moduły, modyfikacje module_[load,unload] i informacje wyrzucane przez jądro) zaczerpnięte z postu kB_a
Ostatnio zmieniony 2006-09-14, 22:38 przez difrost, łącznie zmieniany 6 razy.

ODPOWIEDZ