WLAN-Regulatory
Kaum hat man das neue WLAN-Gerät ausgepackt und eingeschalten, stellt man fest: "Da fehlen ja so ca. 200 WLAN-Kanäle!?" - "Da kann ich mich ja gar nicht mit den WLANs verbinden, die hier alle so herumgeistern..."
Aber es gibt Abhilfe: Man muss nur ein Land gründen, in dem die gewünschten Kanäle freigegeben sind. Das geht ganz einfach:
Regulatory-Database muss bearbeitet werden und digital signiert:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-regdb.git sudo apt-get install python-m2crypto make
Nun nur noch den Eintrag ergänzen:
vim db.txt
Beispiel:
# This is from www.bundesnetzagentur.de country 01: (1 - 9999 @ 40), (3, 60)
Ja, es muss leider mit 1 losgehen, sonst gibt es eine Fehlermeldung und
make
nicht vergessen.
Die entstehende regulatory.bin muss nun noch nach /usr/lib/crda im Router kopiert werden.
Wer sich den Aufwand nicht machen will, der kann eine fertige regulatory.bin auf dem Router herunterladen:
cd /usr/lib/crda/ rm regulatory.bin wget http://datatomb.de/mirror/stuff/regulatory.bin reboot
So, nun geht etwas mehr, es ist aber noch nicht alles freigeschaltet. Wir haben jetzt Alles freigeschaltet, was durch CRDA auf Anwendungsebene beschränkt ist. Es bestehen aber noch die Beschränkungen des WLAN-Treibers. Die jeweilige Einstellung muss von beiden Ebenen erlaubt sein. Deshalb muss jetzt OpenWrt mit anderen Einstellungen neu kompiliert werden:
make menuconfig
...und jetzt [1] -> Kernel modules -> Wireless Drivers -> kmod-ath -> Configuration -> Force Atheros drivers to respect user's regdomain settings
make
neu
CONFIG_CFG80211_INTERNAL_REGDB ist in den kernel-configs gesetzt.
Dateien die zu bearbeiten sind:
- build_dir/linux-ar71xx_generic/compat-wireless-2012-09-07/net/wireless/db.txt
- build_dir/linux-ar71xx_generic/linux-3.3.8/drivers/net/wireless/ath/regd.h
- build_dir/linux-ar71xx_generic/compat-wireless-2012-09-07/drivers/net/wireless/ath/ath9k/init.c
- build_dir/linux-ar71xx_generic/compat-wireless-2012-09-07/drivers/net/wireless/ath/ath9k/hw.h
Wird ein ungültiges Land angegeben (z. B. EU), dann wird World 00 genutzt. Es kommt keine Fehlermeldung.