openSUSE 11.3 WLAN: Ifup und WIRELESS_WPA_DRIVER (nl80211 vs. wext)

Rain_Maker

Administrator
Teammitglied
Dieser Hinweis gilt ab openSUSE 11.3 und NUR für die "traditionelle Methode mit ifup".

Seit openSUSE 11.3 wird bei der Benutzung einer WPA-verschlüsselten WLAN-Verbindung mittels der "traditionellen Methode mit ifup" der wpa_supplicant mit dem neuen WPA-Treiber "nl80211" statt wie zuvor mit "wext" gestartet.

Dieser Schritt macht in sofern Sinn, daß dieser neue WPA-Treiber einige Fähigkeiten mitbringt, die die alten wireless extensions (daher der Name "wext") nicht besitzen und ist für alle Treiber, die auf dem mac80211-Stack (daher der Name "nl80211") aufsetzen, die "zukunftssicherere" Wahl, unter anderem auch, weil eines der Ziele der Kernelentwickler darin besteht möglichst alle alten Treiber auf mac80211/cfg80211 zu portieren (bei einigen ist dies schon geschehen).

Das in der openSUSE-Implementierung verwendete Script "ifup-wireless" hat unter anderem auch die Funktion den wpa_supplicant mit entsprechenden Optionen zu starten, wozu es neben anderen Funktionen auch nachsieht, welcher Kerneltreiber die WLAN-Schnittstelle verwendet und -sofern eine entsprechende Regel für diesen Treiber vorhanden ist- die dazu gehörigen Optionen verwendet und im Falle, daß keine dezidierten Regeln für diesen Kerneltreiber vorliegen, die Standardoptionen verwendet.

Haken an der Sache, zumindest im "Auslieferungszustand" der 11.3 kann es bei bestimmten WLAN-Geräten dazu kommen, daß trotz korrekter Einrichtung mittels ifup eine WPA-verschlüsselte Verbindung nicht zu Stande kommt, weil das entsprechende Script "ifup-wireless" mangels einer dezidierten Regel für den verwendeten WLAN-Treiber statt wie in älteren Versionen nicht mehr "wext" (= alter Standard) sondern den neuen Standard "nl80211" für wpa_supplicant verwendet.

Sofern aber dieser "unbekannte" Kerneltreiber (noch) nicht auf die Funktionen des neuen mac80211/cfg80211-Codes zurückgreift, wird wpa_supplicant nicht über die Schnittstelle "nl80211" mit dem dazu gehörigen WLAN-Gerät kommunizieren können und das war es dann.

Betroffen dürften folgende WLAN-Treiber sein:

- Alle "Draft-n" Ralink Treiber vom Hersteller bzw. aus dem "Staging"-Bereich (rt2860sta, rt2870sta, rt3070sta, rt3090sta, rt3562sta, rt3572sta und rt5390sta)

- Alle "Draft-n" Realtek Treiber vom Hersteller und aus dem "Staging"-Bereich (r8192ce_pci, r8192e_pci, r8192se_pci, r8192u_usb, r8192s_usb, r8712u)

sowie möglicherweise einige weitere Treiber, die man sich z.B. von einer Herstellerseite geholt und kompiliert hat.

Dieses Problem ist allerdings sehr einfach zu lösen, da man in der entsprechenden Konfigurationsdatei für die drahtlose Schnittstelle über einen Parameter festlegen kann, welcher "WPA-Treiber" verwendet werden soll.

Dieser Parameter heisst "WIRELESS_WPA_DRIVER" und sollte bei den oben genannten Treibern auf "wext" gesetzt werden.

Hierzu editiert man entweder über den /etc/sysconfig-Editor in YaST oder mittels eines Texteditors (natürlich als root gestartet) die entsprechende ifcfg-Datei und startet das Interface neu, danach ist diese Änderung aktiv.

Hier ein Beispiel, angenommen man hat eine WLAN-Karte, der die Schnittstelle "wlan0" zugeordnet ist (/usr/sbin/iwconfig hilft einem bei der "Ermittlungsarbeit", wie die Schnittstelle heisst).

a) Welche Konfigurationsdatei ist zu bearbeiten?
Code:
ls -l /etc/sysconfig/network/ifcfg-*
-rw-r--r-- 1 root root  350 15. Dez 02:13 /etc/sysconfig/network/ifcfg-eth0
-rw-r--r-- 1 root root  188 23. Nov 14:40 /etc/sysconfig/network/ifcfg-lo
-rw-r--r-- 1 root root  324 15. Dez 02:13 /etc/sysconfig/network/ifcfg-modem0
-rw------- 1 root root 1181 12. Sep 14:59 [B]/etc/sysconfig/network/ifcfg-wlan0[/B]
b) Bearbeiten der Datei /etc/sysconfig/network/ifcfg-wlan0

Vorher:
Code:
WIRELESS_WPA_DRIVER=''
Nachher:
Code:
WIRELESS_WPA_DRIVER='wext'
Dies kann entweder mit einem Texteditor als root geschehen, oder aber über YaST => System => /etc/sysconfig-Editor (dort clevererweise das Suchfeld verwenden und den gewünschten Parameter, also "WIRELESS_WPA_DRIVER" als Suchbegriff verwenden).


c) Neustart des Interfaces wlan0

Code:
su - 

(Rootpasswort eingeben)

ifdown wlan0

ifup wlan0
d) Prüfen, ob die Änderung erfolgreich war

Code:
ps aux|grep [w]pa_supplicant

root      6845  0.0  0.0  20440   868 ?        Ss   10:45   0:00 wpa_supplicant -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant-wlan0.conf [B]-Dwext[/B] -P/var/run/wpa_supplicant/wlan0.pid -B
Noch einmal zum Mitschreiben; diese Aktion gilt NUR für die Einrichtung mittels ifup, wer NetworkManager verwendet, ist davon nicht betroffen (und kann sich diese Aktion hier sparen).

Greetz,

RM
 

z80

New Member
AW: openSUSE 11.3 WLAN: Ifup und WIRELESS_WPA_DRIVER (nl80211 vs. wext)

Vielen Dank für den Beitrag! War echt hilfreich, weil sich bei meinem Speedport-Router der LAN-Anschluss verabschiedet hatte. Zugriff ging nur noch über WLAN, was bei meinem Home-Server (an dem fast alle Rechner dranhängen) aber erst noch nachgerüstet werden musste. Hatte mir alle nötigen Pakete schon rüberkopiert und installiert - was fehlte war der erfolgreiche Start, was dank WIRELESS_WPA_DRIVER dann endlich auch klappte.
 
Oben