REGDOMAIN bei ath5k / ath9k ändern
Intro
Viele WLAN-Karten werden mit einem fest programmierten REGDOMAIN-Wert von ‘0x00‘ ausgeliefert. Das sorgt dafür, dass man nicht alle Kanäle benutzen kann, die in Deutschland eigentlich zulässig wären, selbst wenn man im OPT_WLAN die richtige Länderkennung setzt (WLAN_REGDOMAIN=‘DE‘).
Es existieren im Internet zwar einige Anleitungen für Atheros-basierte Karten, jedoch nie für die Umgebung des Fli4l. In so ziemlich allen Fällen, die mir begegnet sind, wird außerdem ein falscher REGDOMAIN-Wert verwendet (meist 0x65). Dieser funktioniert nur bedingt, da er z.B. die Kanäle 12 und 13 im 2,4 GHz-Band nicht im AP-Mode zulässt.
Dieses HowTo beschreibt exemplarisch das Vorgehen um die im EEPROM der WLAN-Karte gespeicherte REGDOMAIN entsprechend auf den richtigen Wert zu ändern.
Ein Eingriff in das EEPROM der WLAN-Karte ist nicht trivial und kann unter Umständen zur Zerstörung der Karte führen. Außerdem gibt es Karten, die eine Änderung des EEPROM gar nicht erst zulassen.
Anmerkungen
Die hier beschriebenen Methoden stellen keinesfalls ein "Universalrezept" dar! Entsprechende Sorgfalt und Aufmerksamkeit sind auf jeden Fall ein absolutes Muss. Jeder sollte sich der möglichen Gefahr bewusst sein, die von einem Eingriff in die Firmware einer WLAN-Karte ausgehen kann.
Bisher wurden diese Methoden erfolgreich auf folgende Karten angewandt:
Compex WLM200NX (miniPCI), Atheros AR9220 Chipsatz
Compex WLM54AGP23 200mW (miniPCI), Atheros AR5414 Chipsatz
Compex WLE200NX (MiniPCIe), Atheros AR9280 Chipsatz
Voraussetzungen
Es wird ein lauffähiger Fli4l (ab Version 3.10.0) mit konfiguriertem OPT_WLAN vorausgesetzt. Die WLAN-Karte muss dabei entweder über einen ath5k oder ath9k Chipsatz verfügen und mit dem entsprechenden Treiber verwendet werden.
Der Fli4l muss einen Zugriff auf die Konsole per SSH, direkter oder serieller Verbindung ermöglichen.
Zusätzlich wird das Paket OPT_TOOLS benötigt, aus dem folgende Pakete aktiviert sein müssen:
OPT_LSPCI
OPT_IWLEEPROM (nur für ath9k)
OPT_ATH_INFO (nur für ath5k)
Es ist ebenfalls ratsam, über eine funktionierende Methode zu verfügen, um Dateien vom Fli4l kopieren zu können (z.B. SCP oder FTP). Dies dient lediglich dazu, sowohl die originale, als auch die modifizierte Firmware-Datei sichern zu können.
Anleitung für ath5k
Herstellen der Konsolen-Verbindung
Deaktivieren des WLAN-Interface
ip link set dev wlan0 down
Speicheradresse des Interface ermitteln. Benötigt wird der Wert bei "Memory at". In diesem Beispiel wird die Adresse e0080000 angenommen.
lspci -v
EEPROM auslesen und Backup erstellen. Die ermittelte Speicheradresse muss ab hier mit vorangestelltem "0x" angegeben werden. Der Dump wird im aktuellen Verzeichnis als "ath-eeprom-dump.bin" agbelegt
ath_info –d 0xe0080000
EEPROM Dump umbenennen
mv ath-eeprom-dump.bin ath5k_0x00.bin
Ändern der REGDOMAIN im EEPROM. Sicherheitsabfrage mit "y" bestätigen.
ath_info -w 0xe0080000 regdomain 37
Geändertes EEPROM auslesen und Backup erstellen. Der Dump wird wieder im aktuellen Verzeichnis als "ath-eeprom-dump.bin" agbelegt
ath_info –d 0xe0080000
EEPROM Dump umbenennen
mv ath-eeprom-dump.bin ath5k_0x37.bin
Treiber neu initialisieren und Interface wieder starten
rmmod ath5k
modprobe ath5k
ip link set dev wlan0 up
Die beiden EEPROM Dumps vom Fli4l sichern, z.B. per SCP oder FTP, um sie zu archivieren.
Den Fli4l neustarten
reboot
Anleitung für ath9k
Herstellen der Konsolen-Verbindung
Deaktivieren des WLAN-Interface
ip link set dev wlan0 down
Interfaceadresse der WLAN-Karte ermitteln. In diesem Beispiel wird die Adresse 00:0c.0 angenommen.
lspci
Die ermittelte Interfaceadresse muss ab hier mit vorangestelltem "0000:" angegeben werden. In diesem Beispiel also dann 0000:00:0c.0.
Interface initialisieren
iwleeprom -d 0000:00:0c.0 –I
Informationen des Interface auslesen
iwleeprom -d 0000:00:0c.0 –s
EEPROM Dump als Backup erstellen. Der Dump wird dabei im aktuellen Verzeichnis als „ath9k_0x00.bin“ abgelegt.
iwleeprom -d 0000:00:0c.0 -o ath9k_0x00.bin
Arbeitskopie erstellen und entsprechende Änderungen einfügen
cp ath9k_0x00.bin ath9k_tmp.bin
echo -ne '\x37' | dd of=ath9k_tmp.bin bs=1 seek=520 conv=notrunc
Modifizierte Firmware ins EEPROM schreiben
echo Y|iwleeprom -d 0000:00:0c.0 -i ath9k_tmp.bin