"Neue" WLAN-Treiber (mac80211-basiert) und die Kanäle 12 und 13

Rain_Maker

Administrator
Teammitglied
"Neue" WLAN-Treiber (mac80211-basiert) und die Kanäle 12 und 13

In diversen Foren und verschiedenen Threads liest man immer wieder von Problemen mit den neuen WLAN-Treibern und der Benutzung der Kanäle 12 und 13.

Dieses "Problem" liegt eigentlich in einer absichtlichen Beschränkung der Treiber auf die Kanäle 1-11 und ist auch vom Betriebssystem unabhängig.

Hier nur ein Beispiel

Welche Kanäle die Karte bei den derzeitigen Einstellungen verwenden kann, erfährt man mit dem Befehl

Code:
/usr/sbin/iwlist [b]Interfacename[/b] f
Die typische Ausgabe sieht zu Beginn so aus:

Code:
 /usr/sbin/iwlist wlan0 f
wlan0      11 channels in total; available frequencies :
          Channel 01 : 2.412 GHz
          Channel 02 : 2.417 GHz
          Channel 03 : 2.422 GHz
          Channel 04 : 2.427 GHz
          Channel 05 : 2.432 GHz
          Channel 06 : 2.437 GHz
          Channel 07 : 2.442 GHz
          Channel 08 : 2.447 GHz
          Channel 09 : 2.452 GHz
          Channel 10 : 2.457 GHz
          Channel 11 : 2.462 GHz

Wer trotzdem die Kanäle 12 und 13 mit einer Karte, deren Treiber auf mac80211 basiert, freischalten möchte, der kann dies mit einem passenden Modulparameter tun.

Die in Frage kommenden Treiber sind:


ath5k

ath9k

at76c50x-usb

b43

b43legacy

iwl3945

iwl4965 / iwlagn

libertas_cs

libertas_sdio

p54pci

p54usb

rt2400pci

rt2500pci

rt61pci

rt2500usb

rt73usb

rtl8180

rtl8187

usb8xxx

zd1211rw


//Edit: Da sich die Treibersituation gerade bei den neuen "mac80211"-Treibern ständig ändert (= es werden mehr) und diese Liste daher mit der Zeit unvollständig sein wird ein einfacher Tipp:

Code:
lsmod|grep mac80211
Sollte dieser Befehl eine Ausgabe erzeugen, so wird ein mac80211-basierter Treiber verwendet.

Dabei macht es allerdings einen Unterschied, ob man die -etwas älteren- Versionen aus den openSUSE-Repositorien oder das "compat-wireless"-Paket verwendet, da der entsprechende Parameter entweder für das Kernelmodul "mac80211.ko" oder für das Kernelmodul "cfg80211" zu setzen ist.

A) Wer compat-wireless oder openSUSE >= 11.1 verwendet, der muss den Parameter dem Modul "cfg80211.ko" zuordnen,

Code:
/sbin/modinfo cfg80211 |grep parm
parm:           [B]ieee80211_regdom[/B]:IEEE 802.11 regulatory domain code (charp)
indem man eine Datei /etc/modprobe.d/cfg80211 mit folgendem Inhalt anlegt.

Code:
options cfg80211 ieee80211_regdom="EU"
Das geht mit einem Texteditor als root oder mit folgenden Befehlen

Code:
su

Passwort

echo "options cfg80211 ieee80211_regdom="EU"" > /etc/modprobe.d/cfg80211
B) Wer openSUSE <= 11.0 mit den Kerneltreibern aus den openSUSE-Repositorien verwendet, der muss den obigen Parameter dem Modul "mac80211.ko" zuordnen.

Code:
/sbin/modinfo mac80211 |grep parm
parm:           [B]ieee80211_regdom[/B]:IEEE 802.11 regulatory domain; 64=MKK (int)
parm:           ieee80211_japan_5ghz:Vendor-updated firmware for 5 GHz (int)
parm:           ieee80211_default_rc_algo:Default rate control algorithm for mac80211 to use (charp)
Also analoges Vorgehen und eine Datei /etc/modprobe.d/mac80211 mit dem Inhalt

Code:
options mac80211 ieee80211_regdom=64
anlegen.

Die "Befehlsserie" lautet hier also

Code:
su

Passwort

echo "options mac80211 ieee80211_regdom=64" > /etc/modprobe.d/mac80211
Danach entweder Neustart oder alle WLAN-Module entladen und neu laden.

//Edit:

C) Wer einen Kernel >= 2.6.29 verwendet (was ab openSUSE 11.2 der Fall sein wird), der sollte sich Posting #5 dieses Themas durchlesen).

Wer sich nicht sicher ist, für welches Modul er diesen Parameter ändern muss, der kann sich mit den oben gezeigten "/sbin/modinfo Modulname_ohne_die_Endung_.ko | grep parm"-Befehlen absichern; das Modul, bei welchem als Ausgabe der Parameter "ieee80211_regdom" ausgespuckt wird, ist das richtige.

Sollte das Ganze funktioniert haben, so muss der obige iwlist-Befehl folgende Ausgabe erzeugen.

Code:
/usr/sbin/iwlist wlan0 f
wlan0      13 channels in total; available frequencies :
          Channel 01 : 2.412 GHz
          Channel 02 : 2.417 GHz
          Channel 03 : 2.422 GHz
          Channel 04 : 2.427 GHz
          Channel 05 : 2.432 GHz
          Channel 06 : 2.437 GHz
          Channel 07 : 2.442 GHz
          Channel 08 : 2.447 GHz
          Channel 09 : 2.452 GHz
          Channel 10 : 2.457 GHz
          Channel 11 : 2.462 GHz
          Channel 12 : 2.467 GHz
          Channel 13 : 2.472 GHz
Anmerkung:

Ich rate niemandem, der nicht weiß, was er/sie da tut, explizit dazu diese Veränderungen vorzunehmen.

Sollte hinterher die Verbindung nicht mehr ordentlich funktionieren, so hilft das Löschen der angelegten "Parameter"-Datei und ein Neustart bzw. Entladen/Neuladen aller verwendeten WLAN-Treiber.

Testberichte sind wie immer gern gesehen, aber "Use at your own risk".

Anmerkung2:

Diese Vorgehensweise ist im übrigen die allgemeingültige, wenn man ein Modul immer mit einem bestimmten Parameter laden möchte.

- verfügbare Parameter suchen (/sbin/modinfo Modulname_ohne_die_Endung.ko | grep parm)

- Datei "/etc/modprobe.d/Modulname" mit dem Inhalt

Code:
options [B]Modulname Parameter1=Wert1 Parameter2=Wert2[/B] 
# man kann also auch mehrere Parameter mitgeben
anlegen und Module Entladen/Neuladen (oder Neustart für die Windowsumsteiger *scnr*).

Greetz,

RM
 

cal

Member
AW: "Neue" WLAN-Treiber (mac80211-basiert) und die Kanäle 12 und 13

Mal ein Test auf:
Code:
nescaya:~ # uname -a
Linux nescaya 2.6.25.16-0.1-default #1 SMP 2008-08-21 00:34:25 +0200 x86_64 x86_64 x86_64 GNU/Linux
nescaya:~ # cat /etc/SuSE-release
openSUSE 11.0 (X86-64)
VERSION = 11.0
Code:
04:08.0 Ethernet controller [0200]: Atheros Communications Inc. AR5212/AR5213 Multiprotocol MAC/baseband processor [168c:0013] (rev 01)
mit Treiber:
Code:
compat-wireless-kmp-default-20080714_2.6.25.9_0.2-rm.0
und file /etc/modprobe.d/cfg80211 mit Inhalt
Code:
options cfg80211 ieee80211_regdom="EU"
Code:
modprobe -rv ath5k && modprobe ath5k
nescaya:~ # iwlist wlan0 f
wlan0     13 channels in total; available frequencies :
          Channel 01 : 2.412 GHz
          Channel 02 : 2.417 GHz
          Channel 03 : 2.422 GHz
          Channel 04 : 2.427 GHz
          Channel 05 : 2.432 GHz
          Channel 06 : 2.437 GHz
          Channel 07 : 2.442 GHz
          Channel 08 : 2.447 GHz
          Channel 09 : 2.452 GHz
          Channel 10 : 2.457 GHz
          Channel 11 : 2.462 GHz
          Channel 12 : 2.467 GHz
          Channel 13 : 2.472 GHz
          Current Frequency:2.437 GHz (Channel 6)
Test der Funktion der Kanäle folgt noch falls mein Router die kennt...

EDIT: So, mein Router kennt 13 Kanäle in der Stellung "Europa" und die Verbindung klappt auch problemlos:
Code:
nescaya:/home/cal # iwlist scan
wlan0     Scan completed :
          Cell 01 - Address: 00:0F:B5:E3:B2:98
                    ESSID:"darkover"
                    Mode:Master
                    [B]Channel:13
                    Frequency:2.472 GHz (Channel 13)[/B]
                    Quality=29/100  Signal level:-54 dBm  Noise level=-73 dBm
                    Encryption key:on
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (1) : TKIP
                        Authentication Suites (1) : PSK
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              12 Mb/s; 24 Mb/s; 36 Mb/s; 9 Mb/s; 18 Mb/s
                              48 Mb/s; 54 Mb/s
                    Extra:tsf=000000000d7a0181
                    Extra: Last beacon: 92ms ago
 

cal

Member
AW: "Neue" WLAN-Treiber (mac80211-basiert) und die Kanäle 12 und 13

ok, dann gleich noch einen nachlegen:

ASUS F5SL-Series mit:

Code:
linux-7oni:~ # uname -a
Linux linux-7oni 2.6.25.16-0.1-pae #1 SMP 2008-08-21 00:34:25 +0200 i686 i686 i386 GNU/Linuxlinux-7oni:~ # cat /etc/SuSE-release
openSUSE 11.0 (i586)
VERSION = 11.0
linux-7oni:~ # lspci -nn |grep Ather*
02:00.0 Ethernet controller [0200]: Atheros Communications Inc. AR242x 802.11abg WirelessPCI Express Adapter [168c:001c] (rev 01)
Treiber:
Code:
linux-7oni:~ # rpm -q compat-wireless-kmp-pae
compat-wireless-kmp-pae-20080909_2.6.25.11_0.1-rm.0
und file:
Code:
linux-7oni:~ # nano /etc/modprobe.d/cfg80211
 options cfg80211 ieee80211_regdom="EU"
Code:
linux-7oni:~ # iwlist wlan0 f
wlan0     13 channels in total; available frequencies :
          Channel 01 : 2.412 GHz
          Channel 02 : 2.417 GHz
          Channel 03 : 2.422 GHz
          Channel 04 : 2.427 GHz
          Channel 05 : 2.432 GHz
          Channel 06 : 2.437 GHz
          Channel 07 : 2.442 GHz
          Channel 08 : 2.447 GHz
          Channel 09 : 2.452 GHz
          Channel 10 : 2.457 GHz
          Channel 11 : 2.462 GHz
          Channel 12 : 2.467 GHz
          Channel 13 : 2.472 GHz
          Current Frequency:2.472 GHz (Channel 13)
Code:
linux-7oni:~ # iwlist scan
lo        Interface doesn't support scanning.

eth0      Interface doesn't support scanning.

wmaster0  Interface doesn't support scanning.

wlan0     Scan completed :
          Cell 01 - Address: 00:0F:B5:E3:B2:98
                    ESSID:"darkover"
                    Mode:Master
                    Channel:13
                    Frequency:2.472 GHz (Channel 13)
                    Quality=87/100  Signal level:-42 dBm  Noise level=-98 dBm
                    Encryption key:on
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (1) : TKIP
                        Authentication Suites (1) : PSK
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              12 Mb/s; 24 Mb/s; 36 Mb/s; 9 Mb/s; 18 Mb/s
                              48 Mb/s; 54 Mb/s
                    Extra:tsf=0000000119c4d181
                    Extra: Last beacon: 92ms ago
Diesmal gings nicht ganz so glatt, ich brauchte mehrere modprobes bis er die 13 Kanäle anzeigte. Zwischendurch war ich schon am zweifeln ob ich auch wirklich den Compat-wireless benutze. Und wenn man dann das kmp-default sucht aber den pae-Kernel drauf hat ...:rolleyes:
Als ichs dann soweit hatte und mit dem Networkmanager die Verbindung auf Kanal 13 herstellen wollte verschluckte der sich erst mal so heftig daß ich die Kiste nicht mehr heruntergefahren bekam, auch nicht auf ein Terminal umschalten konnte.
Ausschalter und wieder einschalten, fährt hoch, Verbindung steht. :D
 

Rain_Maker

Administrator
Teammitglied
AW: "Neue" WLAN-Treiber (mac80211-basiert) und die Kanäle 12 und 13

Irgendwie war fast klar, wer sich hier als erstes "draufstürzen" würde. *g*

Dann funktioniert das Ganze also, gut zu wissen.

Eine wichtige Anmerkung für Querleser sei aber gestattet.

Wie man sieht, verwendet cal die compat-wireless Pakete und muss deshalb den entsprechenden Parameter für das Laden des Moduls "cfg80211" setzen.

Wer openSUSE 11.0 oder 10.3 und die Treiber im Kernel verwendet, der wird damit keinen Erfolg haben, da dort das Modul cfg80211 noch gar nicht existiert bzw. gar keine Parameter zulässt, weshalb der entsprechende Parameter dort noch dem Modul "mac80211" zuzuordnen ist.

Umgekehrt gilt allerdings auch, daß man mit neuen compat-wireless-Paketen den Parameter nicht dem Modul "mac80211" zuordnen darf, da sonst Folgendes passiert:

Code:
WARNING: Error inserting mac80211 (/lib/modules/2.6.25.18-0.2-default/updates/net/mac80211/mac80211.ko): Unknown symbol in module, or unknown parameter (see dmesg)
Also _unbedingt_ prüfen (siehe ersten Beitrag dieses Treads), welches der Module den Parameter "ieee80211_regdom" bereit stellt, sonst geht zunächst mal gar nichts mehr.

Besonders Umsteiger von 10.3/11.0 auf compat-wireless wird dieses Problem erwischen, wenn zuvor schon eine entsprechende Konfigurationsdatei angelegt wurde.

Hier hilft es, die alte Datein /etc/modprobe.d/mac80211 zu löschen, eine neue Datei /etc/modprobe.d/cfg80211 anzulegen und dann die passenden Einträge zu machen.

Das selbe dürfte dann auch nach dem Release der 11.1 für User zutreffen, die ein Update von 11.0 oder 10.3 gefahren haben, also Augen auf!

Greetz,

RM
 

Rain_Maker

Administrator
Teammitglied
Neuere Kernelversionen (>= 2.6.29)

In neueren Kernelversionen wurde die Option einen bestimmten "Ländercode" per Moduloption mitzugeben entfernt.

Hintergrundinformationen:

Regulatory - Linux Wireless

CRDA - Linux Wireless

iw - Linux Wireless

nl80211 - Linux Wireless

Die entsprechenden Modulparameter für mac80211 bzw. cfg80211 existieren _nicht_ mehr, wer entsprechende Konfigurationsdateien angelegt hat, wird beim Versuch die Kernelmodule seiner WLAN-Karte zu laden ähnliche Meldungen wie im vorigen Beitrag erhalten.

Wer also einen neueren Kernel (>= 2.6.29) verwendet, muss die entsprechenden Dateien "/etc/modprobe.d/cfg80211" bzw. "/etc/modprobe.d/mac80211" entfernen.

Wie man von Hand den Ländercode (z.B. mit iw) ändern kann (falls das überhaupt nötig sein sollte, in den meisten Fällen ist es das nicht), steht in den obigen Links beschrieben.

Greetz,

RM
 
Oben