WPA(2) mit wpa_supplicant und den Ralink "Legacy"-Treibern rt73/rt61 (openSUSE 10.X)
In diesem Tutorial möchte ich die Einrichtung von WPA(2) mittels wpa_supplicant für Adapter mit rt73/rt61 Chipsatz unter Verwendung der so genannten "Legacy"-Treiber beschreiben.
Dabei wird außerdem besonderer Wert darauf gelegt, daß
- das Ganze "SuSE-konform", also über die ifup-Scripte der Distribution erfolgt
und
- so wenig wie möglich "Handarbeit" nötig ist (alle notwendigen Programme werden als rpm installiert).
0. Wer braucht dieses HowTo überhaupt?
Besitzer von Ralink WLAN-Adaptern mit rt61- (PCI/PCMCIA) bzw. rt73-Chipsatz (USB), bei denen die "neuen" Serialmonkey-Treiber "rt61pci" bzw. "rt73usb" nicht verfügbar sind oder nicht ordentlich funktionieren und die WPA/WPA2 als Verschlüsselung verwenden möchten (wozu man in Anbetracht der nicht mehr vorhandenen Sicherheit von WEP nur _dringend_ anraten kann).
Dies sind:
- Alle Nutzer von SuSE Linux 10.1
- Die meisten Nutzer von openSUSE 10.2, auch wenn es dort bereits die neuen Treiber rt2x00 im Paket "wlan-kmp"-*Kernelflavor* gab, welche jedoch sehr buggy waren.
- Einige wenige Nutzer von openSUSE 10.3, bei denen die Treiber aus dem Paket "rt2x00-kmp"-*Kernelflavor* Probleme machen.
Trotzdem gilt vor allem für Benutzer der 10.3, daß man zuerst die neuen Treiber ausprobieren sollte, bevor man dieses Tutorial in Angriff nimmt, denn einen "Nachteil" hat das Ganze, diese Variante funktioniert zu 99% _NUR_ wenn man die "traditionelle Methode mit ifup" zur Einrichtung verwendet, also sehr wahrscheinlich KEINE Unterstützung durch den NetworkManager.
1. Vorarbeiten
Zunächst sollten _unbedingt_ die neuen Treiber probiert werden, also
- Paket wlan-kmp-*Kernelflavor* (openSUSE 10.2) oder "rt2x00-kmp"-*Kernelflavor* (openSUSE 10.3) installieren.
(Kernelflavor = default, bigsmp, ...... Ausgabe von "cat /etc/SuSE-release" beachten)
- Firmware installieren.
Dieser Schritt ist auf jeden Fall auch für die rt2x00-Treiber nötig. Da sowohl die rt2x00 als auch die legacy-Treiber aus dem Serialmonkey-Projekt mittlerweile das selbe Verzeichnis für die Firmwaredateien verwenden, braucht man nur dieses eine Firmwarepaket.
rt2x00-firmware-1.1-1.noarch.rpm
Nach der Installation zuerst die rt2x00-Treiber versuchen.
a) Es klappt damit
=> Sehr schön, dann hat sich das Problem ja erledigt.
b) Die neuen Treiber wollen nicht so recht.
//Edit:
Für openSUSE 10.3 (und NUR für openSUSE 10.3) sollte man nun Beitrag Nr. 3 lesen und abarbeiten und nur dann auf die "Legacy-Treiber" umsteigen, wenn die dort vorgestellten "neuen" rt2x00-Treiber nicht funktionieren.
Am einfachsten ist es nun, das entsprechende Paket wlan-kmp oder rt2x00-kmp zu deinstallieren, diese Lösung ist aber IMHO suboptimal, besonders da im Paket wlan-kmp noch weitere Funktionen stecken, die man vielleicht noch braucht.
Deshalb empfehle ich hier das "Blacklisten" des entsprechenden Kernelmoduls.
- Die Datei /etc/modprobe.d/blacklist mit einem Texteditor als root öffnen und folgende Zeile ans Ende setzen.
oder
- Eine eventuell schon vorhandene Kartenkonfiguration in YaST => Netzwerkgeräte => Netzwerkkarte löschen.
- Die Datei /etc/udev/rules.d/30-net_persistent_names.rules (SuSE Linux 10.1/openSUSE 10.2) bzw. /etc/udev/rules.d/70-persistent-net.rules als root mit einem Texteditor öffnen und alle Zeilen löschen, die "wlan0" bzw. "wmaster0" enthalten.
- In YaST die Einrichtungsmethode von "Benutzergesteuert mit NetworkManager" auf "traditionell mit ifup" umstellen.
- Die Pakete "Kinternet" und ggf. auch "smpppd" über YaST nachinstallieren.
- In YaST => System => Runleveleditor den Dienst "smpppd" aktivieren oder auf der Kommandozeile als root:
- In YaST => Sicherheit und Benutzer => Benutzer prüfen, ob der eigene Nutzer in der Gruppe "dialout" ist, ansonsten hinzufügen oder auf der Kommandozeile als root:
2. Passenden Treiber und wpa_supplicant installieren
openSUSE 10.3:
rt61:
rt61-cvs-kmp-default-2008020205_2.6.22.16_0.1-4.1.i586.rpm (32 Bit und Kernel >= 2.6.22.16)
rt61-cvs-kmp-default-2008020205_2.6.22.16_0.1-4.1.x86_64.rpm (64 Bit und Kernel-default >= 2.6.22.16)
rt73:
rt73-cvs-kmp-default-2008020205_2.6.22.16_0.1-4.1.i586.rpm (32 Bit und Kernel >= 2.6.22.16)
rt73-cvs-kmp-default-2008020205_2.6.22.16_0.1-4.1.x86_64.rpm (64 Bit und Kernel >= 2.6.22.16)
Andere Kernelversionen/Flavors => mal bei schmolle vorbeischauen:
Index of /pub/opensuse/repositories/home:/schmolle1980
wpa_supplicant:
wpa_supplicant-0.6.3-rm.1.i586.rpm (32 Bit)
wpa_supplicant-0.6.3-3.1.x86_64.rpm (64 Bit)
Wer kein passendes Paket findet => Rebuild aus dem src.rpm, siehe hierzu:
http://www.pc-forum24.de/linux-howtos/2882-rpm-umbau-aus-einem-src-rpm-mit-rpmbuild-beispiele-wlan-kmp-fcdslsl.html
und
http://www.pc-forum24.de/suse-internetkonfiguration/2493-opensuse-10-2-avm.html#post12784
rt61-cvs-2008020205-4.1.src.rpm
rt73-cvs-2008020205-4.1.src.rpm
Pakete herunterladen und am einfachsten als root in der Kommandozeile installieren:
Dieses Paket braucht man auf _jeden_ Fall.
Und dann noch den passenden Treiber:
oder
3. Anpassen des Scripts "ifup-wireless"
- Mit einem Texteditor als root die Datei /etc/sysconfig/network/scripts/ifup-wireless öffnen und folgenden Abschnitt suchen:
- Folgende Zeilen einfügen (rot markiert) und zwar _exakt_ so, wie es da steht (mit Einrückungen).
und abspeichern.
Damit wird beim Aktivieren der Karte den beiden Treibern "rt73" bzw. "rt61" (und NUR diesen beiden Treibern) die Erweiterung "ralink" des wpa_supplicant zugeordnet, die für die legacy-Treiber notwendig ist (die neuen Treiber verwenden die eingebaute Erweiterung "wext").
Somit wird die Funktionalität des ifup-Scripts _nicht_ eingeschränkt, sondern um die zusätzlich vorhandene Funktionalität des zuvor installierten wpa_supplicant erweitert (der mit der Distribution mitgelieferte wpa_supplicant unterstützt dies im Übrigen nicht).
4. Laden des Treibermoduls
bzw.
Nun sollte sich etwas tun, was man mit einem /usr/sbin/iwconfig überprüfen kann.
5. Karte mit YaST einrichten
Hierzu nicht allzu viele Details, einzig die Anmerkungen, daß man
- die "Benutzersteuerung" aktivieren sollte, damit man auch als "normaler" User mittels Kinternet die Verbindung steuern kann
- sofern kein neues Interface in YaST angezeigt wird, man über "Hinzufügen" => Drahtlos ein neues Interafce definieren muss
- Bei Modulname entweder rt61 oder rt73 eingetragen werden sollte (bei 10.3 möglicherweise nicht mehr nötig, udev sei Dank).
Das wars ....
Wer sich ein Beispiel ansehen möchte, daß diese Methode auch wirklich funktioniert (und auch wie dieses Tutorial entstanden ist), der sollte sich diesen Thread zu Gemüte führen:
http://www.pc-forum24.de/suse-internetkonfiguration/8493-geloest-ralink-rt2561-rt61-auf-opensuse-10-3-wpa2-legacy-treiber-wpa_supplicant.html
Da der obige Thread auch noch weitergehende Tests und ein paar "umschiffte Klippen" auf dem Weg zum funktionierenden WLAN enthält, ist die Lektüre wärmstens zu empfehlen.
Greetz,
RM
In diesem Tutorial möchte ich die Einrichtung von WPA(2) mittels wpa_supplicant für Adapter mit rt73/rt61 Chipsatz unter Verwendung der so genannten "Legacy"-Treiber beschreiben.
Dabei wird außerdem besonderer Wert darauf gelegt, daß
- das Ganze "SuSE-konform", also über die ifup-Scripte der Distribution erfolgt
und
- so wenig wie möglich "Handarbeit" nötig ist (alle notwendigen Programme werden als rpm installiert).
0. Wer braucht dieses HowTo überhaupt?
Besitzer von Ralink WLAN-Adaptern mit rt61- (PCI/PCMCIA) bzw. rt73-Chipsatz (USB), bei denen die "neuen" Serialmonkey-Treiber "rt61pci" bzw. "rt73usb" nicht verfügbar sind oder nicht ordentlich funktionieren und die WPA/WPA2 als Verschlüsselung verwenden möchten (wozu man in Anbetracht der nicht mehr vorhandenen Sicherheit von WEP nur _dringend_ anraten kann).
Dies sind:
- Alle Nutzer von SuSE Linux 10.1
- Die meisten Nutzer von openSUSE 10.2, auch wenn es dort bereits die neuen Treiber rt2x00 im Paket "wlan-kmp"-*Kernelflavor* gab, welche jedoch sehr buggy waren.
- Einige wenige Nutzer von openSUSE 10.3, bei denen die Treiber aus dem Paket "rt2x00-kmp"-*Kernelflavor* Probleme machen.
Trotzdem gilt vor allem für Benutzer der 10.3, daß man zuerst die neuen Treiber ausprobieren sollte, bevor man dieses Tutorial in Angriff nimmt, denn einen "Nachteil" hat das Ganze, diese Variante funktioniert zu 99% _NUR_ wenn man die "traditionelle Methode mit ifup" zur Einrichtung verwendet, also sehr wahrscheinlich KEINE Unterstützung durch den NetworkManager.
1. Vorarbeiten
Zunächst sollten _unbedingt_ die neuen Treiber probiert werden, also
- Paket wlan-kmp-*Kernelflavor* (openSUSE 10.2) oder "rt2x00-kmp"-*Kernelflavor* (openSUSE 10.3) installieren.
(Kernelflavor = default, bigsmp, ...... Ausgabe von "cat /etc/SuSE-release" beachten)
- Firmware installieren.
Dieser Schritt ist auf jeden Fall auch für die rt2x00-Treiber nötig. Da sowohl die rt2x00 als auch die legacy-Treiber aus dem Serialmonkey-Projekt mittlerweile das selbe Verzeichnis für die Firmwaredateien verwenden, braucht man nur dieses eine Firmwarepaket.
rt2x00-firmware-1.1-1.noarch.rpm
Nach der Installation zuerst die rt2x00-Treiber versuchen.
a) Es klappt damit
=> Sehr schön, dann hat sich das Problem ja erledigt.
b) Die neuen Treiber wollen nicht so recht.
//Edit:
Für openSUSE 10.3 (und NUR für openSUSE 10.3) sollte man nun Beitrag Nr. 3 lesen und abarbeiten und nur dann auf die "Legacy-Treiber" umsteigen, wenn die dort vorgestellten "neuen" rt2x00-Treiber nicht funktionieren.
Am einfachsten ist es nun, das entsprechende Paket wlan-kmp oder rt2x00-kmp zu deinstallieren, diese Lösung ist aber IMHO suboptimal, besonders da im Paket wlan-kmp noch weitere Funktionen stecken, die man vielleicht noch braucht.
Deshalb empfehle ich hier das "Blacklisten" des entsprechenden Kernelmoduls.
- Die Datei /etc/modprobe.d/blacklist mit einem Texteditor als root öffnen und folgende Zeile ans Ende setzen.
Code:
blacklist rt61pci
Code:
blacklist rt73usb
blacklist rt2500usb
- Die Datei /etc/udev/rules.d/30-net_persistent_names.rules (SuSE Linux 10.1/openSUSE 10.2) bzw. /etc/udev/rules.d/70-persistent-net.rules als root mit einem Texteditor öffnen und alle Zeilen löschen, die "wlan0" bzw. "wmaster0" enthalten.
- In YaST die Einrichtungsmethode von "Benutzergesteuert mit NetworkManager" auf "traditionell mit ifup" umstellen.
- Die Pakete "Kinternet" und ggf. auch "smpppd" über YaST nachinstallieren.
- In YaST => System => Runleveleditor den Dienst "smpppd" aktivieren oder auf der Kommandozeile als root:
Code:
insserv -d smpppd
Code:
groupmod -A *NameEuresNutzers* dialout
openSUSE 10.3:
rt61:
rt61-cvs-kmp-default-2008020205_2.6.22.16_0.1-4.1.i586.rpm (32 Bit und Kernel >= 2.6.22.16)
rt61-cvs-kmp-default-2008020205_2.6.22.16_0.1-4.1.x86_64.rpm (64 Bit und Kernel-default >= 2.6.22.16)
rt73:
rt73-cvs-kmp-default-2008020205_2.6.22.16_0.1-4.1.i586.rpm (32 Bit und Kernel >= 2.6.22.16)
rt73-cvs-kmp-default-2008020205_2.6.22.16_0.1-4.1.x86_64.rpm (64 Bit und Kernel >= 2.6.22.16)
Andere Kernelversionen/Flavors => mal bei schmolle vorbeischauen:
Index of /pub/opensuse/repositories/home:/schmolle1980
wpa_supplicant:
wpa_supplicant-0.6.3-rm.1.i586.rpm (32 Bit)
wpa_supplicant-0.6.3-3.1.x86_64.rpm (64 Bit)
Wer kein passendes Paket findet => Rebuild aus dem src.rpm, siehe hierzu:
http://www.pc-forum24.de/linux-howtos/2882-rpm-umbau-aus-einem-src-rpm-mit-rpmbuild-beispiele-wlan-kmp-fcdslsl.html
und
http://www.pc-forum24.de/suse-internetkonfiguration/2493-opensuse-10-2-avm.html#post12784
rt61-cvs-2008020205-4.1.src.rpm
rt73-cvs-2008020205-4.1.src.rpm
Pakete herunterladen und am einfachsten als root in der Kommandozeile installieren:
Code:
su
Passwort von root
rpm -Uvh /Pfad/zum/RPMs/wpa_supplicant*
Und dann noch den passenden Treiber:
Code:
su
Passwort
rpm -Uvh /Pfad/zum/RPMs/rt61-cvs-kmp*
Code:
rpm -Uvh /Pfad/zum/RPMs/rt73-cvs-kmp*
- Mit einem Texteditor als root die Datei /etc/sysconfig/network/scripts/ifup-wireless öffnen und folgenden Abschnitt suchen:
Code:
case $ACTION in
up)
case "${DRIVER}" in
ath_pci)
WPA_DRIVER=wext
;;
(ein paar weitere Zeilen)
rt2500*)
WPA_DRIVER=wext
;;
*)
WPA_DRIVER=unsupported
PREFER_WPA_SUPPLICANT=no
;;
esac
Code:
case $ACTION in
up)
case "${DRIVER}" in
ath_pci)
WPA_DRIVER=wext
;;
(ein paar weitere Zeilen)
rt2500*)
WPA_DRIVER=wext
;;
[COLOR='Red'][B] rt61|rt73)
WPA_DRIVER=ralink
;;[/B][/COLOR]
*)
WPA_DRIVER=unsupported
PREFER_WPA_SUPPLICANT=no
;;
esac
Damit wird beim Aktivieren der Karte den beiden Treibern "rt73" bzw. "rt61" (und NUR diesen beiden Treibern) die Erweiterung "ralink" des wpa_supplicant zugeordnet, die für die legacy-Treiber notwendig ist (die neuen Treiber verwenden die eingebaute Erweiterung "wext").
Somit wird die Funktionalität des ifup-Scripts _nicht_ eingeschränkt, sondern um die zusätzlich vorhandene Funktionalität des zuvor installierten wpa_supplicant erweitert (der mit der Distribution mitgelieferte wpa_supplicant unterstützt dies im Übrigen nicht).
4. Laden des Treibermoduls
Code:
su
Passwort von root
modprobe rt61pci -r #zur Sicherheit
modprobe rt61
udevtrigger
Code:
su
Passwort von root
modprobe rt73usb -r #zur Sicherheit
modprobe rt73
udevtrigger
5. Karte mit YaST einrichten
Hierzu nicht allzu viele Details, einzig die Anmerkungen, daß man
- die "Benutzersteuerung" aktivieren sollte, damit man auch als "normaler" User mittels Kinternet die Verbindung steuern kann
- sofern kein neues Interface in YaST angezeigt wird, man über "Hinzufügen" => Drahtlos ein neues Interafce definieren muss
- Bei Modulname entweder rt61 oder rt73 eingetragen werden sollte (bei 10.3 möglicherweise nicht mehr nötig, udev sei Dank).
Das wars ....
Wer sich ein Beispiel ansehen möchte, daß diese Methode auch wirklich funktioniert (und auch wie dieses Tutorial entstanden ist), der sollte sich diesen Thread zu Gemüte führen:
http://www.pc-forum24.de/suse-internetkonfiguration/8493-geloest-ralink-rt2561-rt61-auf-opensuse-10-3-wpa2-legacy-treiber-wpa_supplicant.html
Da der obige Thread auch noch weitergehende Tests und ein paar "umschiffte Klippen" auf dem Weg zum funktionierenden WLAN enthält, ist die Lektüre wärmstens zu empfehlen.
Greetz,
RM