Ubuntu 16.04 Xenial Xerus
Ubuntu 14.04 Trusty Tahr
Das Subsystem rfkill des Linux-Kernels bietet eine Schnittstelle, um an das System angeschlossene drahtlose Kommunikationsgeräte – nachfolgend einfach "Funkgeräte" genannt – ein- und ausschalten zu können. Ziel ist, wenn diese Art der Kommunikation nicht benötigt wird, durch Ausschalten des entsprechenden Adapters sowohl das Senden von Radiowellen zu unterbinden als auch den Stromverbrauch des Systems zu senken.
In der Praxis kommt rfkill vor allem bei in Notebooks intern verbauten Adaptern für
WLAN – Wireless LAN, von Herstellern auch als Wi-Fi bezeichnet
UMTS – von Herstellern oft als WWAN für "Wireless WAN" bezeichnet
Wireless USB – auch als UWB für "Ultra Wide Band" bezeichnet
zum Einsatz. Es gibt aber auch unterstützte PCMCIA- bzw. Cardbus-Adapter.
Das Subsystem macht seine Steuerungsmöglichkeiten über die sysfs-Schnittstelle als Dateien unterhalb von /sys/class/rfkill/ und über die Gerätedatei /dev/rfkill zugänglich.
Zum einfachen Ein- und Ausschalten der Funkgeräte durch den Benutzer gibt es das Kommandozeilenprogramm rfkill , dessen Bedienung das Thema dieses Artikel sein soll.
Das Programm rfkill ist in Ubuntu über das Paket
rfkill
bereits standardmäßig installiert.
Die Liste der im System verfügbaren Funkgeräte erhält man im Terminal [1] mit diesem Kommando:
rfkill list
Die beispielhafte Ausgabe:
0: phy0: Wireless LAN Soft blocked: no Hard blocked: no 1: tpacpi_bluetooth_sw: Bluetooth Soft blocked: no Hard blocked: no 2: tpacpi_wwan_sw: Wireless WAN Soft blocked: no Hard blocked: no 4: hci0: Bluetooth Soft blocked: no Hard blocked: no
zeigt ein Notebook mit WLAN-, Bluetooth- und UMTS-Adapter. Alle Adapter sind eingeschaltet.
Um nur die Geräte einer Klasse anzuzeigen verwendet man:
rfkill list BEZEICHNER
Den BEZEICHNER
für die gewünschte Geräteklasse ermittelt man anhand Tabelle 1. So selektiert man z.B. nur die WLAN-Geräte mit:
rfkill list wifi
Ausgabe:
0: phy0: Wireless LAN Soft blocked: no Hard blocked: no
Die Ausgabezeile
Soft blocked: no / yes
zeigt den per Software gewählten Schaltzustand des Funkgeräts: no = ein
, yes = aus
.
Bei vielen Notebooks kann der Zustand "Soft blocked" auch über eine Taste geändert werden, z.B. Fn + F5 für Bluetooth und WLAN bei ThinkPads.
Manche Notebooks – insbesondere Business-Baureihen – verfügen zusätzlich über einen Hardwareschalter zum kompletten Deaktivieren der Funkgeräte (z.B. im Flugzeug). Betätigt man diesen, so ist bei allen Funkgeräten die Zeile
Hard blocked: yes
zu sehen.
Zum Schalten von "Soft blocked" benutzt man folgende Kommandos:
rfkill block BEZEICHNER # ausschalten rfkill unblock BEZEICHNER # einschalten
Den Zustand von "Hard blocked" kann man nicht per Software schalten. Siehe auch Problembehandlung.
Die BEZEICHNER
für die Geräteklassen zeigt folgende Tabelle:
Tabelle 1: Geräteklassen für Funkgeräte | |
Bezeichner | Geräteklasse |
all | alle Funkgeräte |
wifi , wlan | WLAN |
bluetooth | Bluetooth |
wwan | UMTS (WWAN) |
uwb , ultrawideband | Wireless USB |
wimax | WiMAX |
gps | GPS |
Alternativ kann man über die in der Ausgabe von rfkill list
gezeigte Nummer das zu schaltende Funkgerät auswählen:
rfkill block NUMMER # ausschalten rfkill unblock NUMMER # einschalten
Um das WLAN aus dem obigen Beispiel auszuschalten, verwendet man also:
rfkill block 0
Für Bluetooth zeigt rfkill list
meist zwei Geräte an – aus der obigen Beispielausgabe:
1: tpacpi_bluetooth_sw: Bluetooth 4: hci0: Bluetooth
Möchte man Strom sparen, sollte man das Gerät 1: tpacpi_bluetooth_sw
ausschalten. Das Gerät 4: hci0
steuert nicht die Stromversorgung des Bluetooth-Adapters. Um sicher zu sein, verwendet man besser die Geräteklasse bluetooth
.
Um Funkgeräte bereits beim Systemstart auszuschalten, fügt man die betreffenden Kommandos in /etc/rc.local hinzu. Das Beispiel schaltet Bluetooth und WLAN aus:
rfkill block bluetooth rfkill block wifi
Unter Umständen ist auch die umgekehrte Vorgehensweise – nämlich das Einschalten eines Adapters beim Systemstart – nötig:
rfkill unblock wifi
(beobachtet beim ThinkPad Edge E320)
Symptom: rfkill list
zeigt für alle Funkgeräte "Hard blocked: yes". Beispiel:
0: tpacpi_bluetooth_sw: Bluetooth Soft blocked: yes Hard blocked: yes 1: tpacpi_wwan_sw: Wireless WAN Soft blocked: yes Hard blocked: yes 2: phy0: Wireless LAN Soft blocked: yes Hard blocked: yes
Behebung: den Schalter betätigen. Er ist oft recht versteckt an einer der Schmalseiten des Notebooks angebracht, daher sollte man bei der Suche danach nicht zu schnell aufgeben.
Oft finden sich Hinweise auf einen Hardwareschalter auch mit der Abfrage
dmesg | egrep 'radio|kill|switch'
Einige Hardwareschalter funktionieren nur während des Systemstarts bevor Ubuntu (Linux) gestartet ist (z.B. beim Acer Aspire 1825PTZ).
Beim Acer Aspire One entfernt man "Hard blocked" durch einmaliges Betätigen der Hardwaretaste während sich das Netbook im BIOS-Setup befindet.
Symptom: eines (oder mehrere) der integrierten Funkgeräte des Notebooks taucht in der Ausgabe von rfkill list
nicht auf.
Behebung: zuständig für das Schalten sind die folgenden Kernelmodule (die Liste kann je nach Kernelversion abweichen):
acer_wmi
amilo_rfkill
asus_laptop
asus_wmi
classmate_laptop
compal_laptop
dell_laptop
eeepc_laptop
fujitsu_laptop
hp_wmi
ideapad_laptop
intel_oaktrail
msi_laptop
panasonic_laptop
samsung_laptop
sony_laptop
thinkpad_acpi
toshiba_acpi
toshiba_bluetooth
xo1_rfkill
Normalerweise wird das passende Kernelmodul automatisch geladen. Eine schnelle Überprüfung, ob eines der oben aufgelisteten Module geladen ist, macht man mit folgendem Kommando:
lsmod | egrep '_acpi|_bluetooth|intel_oaktrail|_laptop|_rfkill|_wmi'
Zeigt die Ausgabe keines der Module, lädt man probeweise einzelne Module aus der Liste – vorzugsweise beginnend mit dem zum Herstellernamen passenden – mittels
sudo modprobe MODULNAME
und prüft mit
rfkill list
ob das fehlende Funkgerät nun angezeigt wird.
Dabei ist es wichtig, die nicht passenden Module sogleich wieder zu entfernen mit
sudo modprobe -r MODULNAME
Hat man auf diese Weise das benötigte Modul gefunden, so kann man es künftig beim Systemstart automatisch laden, indem man eine zusätzliche Zeile mit dem Modulnamen an die Datei /etc/modules anfügt. Beispiel:
echo "hp_wmi" | sudo tee -a /etc/modules
Symptom: bei manchen Geräten, z.B. ThinkPad Edge wurde
0: tpacpi_bluetooth_sw: Bluetooth Soft blocked: yes Hard blocked: yes 1: phy0: Wireless LAN Soft blocked: yes Hard blocked: yes
bzw. beim Thinkpad X121e
1: tpacpi_wwan_sw: Wireless WAN Soft blocked: no Hard blocked: yes
beobachtet.
Behebung: folgende Maßnahmen sollte man in der angegebenen Reihenfolge probieren:
im BIOS unter "Config -> Network -> Wireless LAN ..." prüfen, ob der WLAN Adapter auch wirklich aktiviert ist (beobachtet beim ThinkPad Edge E520)
Einschalten des betroffenen Adapters über ein parallel installiertes Windows
Beim ThinkPad X121e kann der Hardware-Reset dazu führen, dass das Notebook überhaupt nicht mehr startet (2 Fälle im Forum aufgetreten) und das Gerät in die Werkstatt muss. Alle anderen Modelle sind von diesem Problem jedoch nicht betroffen.
Dieser Abschnitt beschreibt Probleme einzelner Kernelmodule. Ob eines der hier erwähnten Kernelmodule auf der eigenen Hardware geladen wurde, kann man mit dem Kommando
lsmod | egrep 'acer|dell'
herausfinden.
Das Modul acer_wmi wird bei einigen Notebook-Modellen geladen obwohl es dafür nicht vorgesehen ist und blockiert dadurch den rfkill-Mechanismus.
Symptom: in der Ausgabe von rfkill list
ist eine zweite WLAN-Instanz namens "acer-wireless" zu sehen. Beispiel:
1: acer-wireless: Wireless LAN Soft blocked: yes Hard blocked: no 3: phy0: Wireless LAN Soft blocked: no Hard blocked: no
Behebung: zuerst entlädt man acer_wmi
sudo modprobe -r acer_wmi
um danach ggf. das herstellerspezifische Modul (s.o.) zu entladen und erneut zu laden
sudo modprobe -r MODULNAME sudo modprobe MODULNAME
Bringt das Entladen von acer_wmi
den gewünschten Erfolg, so kann man künftig dessen automatisches Laden durch Blacklisting unterbinden:
echo "blacklist acer_wmi" | sudo tee /etc/modprobe.d/blacklist-acer_wmi.conf
In einigen Fällen hilft es acer_wmi
mit dem Parameter wireless=1
zu laden. Wenn der manuelle Test mit
sudo modprobe -rv acer_wmi # entladen sudo modprobe -v acer_wmi wireless=1 # neu laden
erfolgreich verläuft, kann man den Parameter mittels
echo "options acer_wmi wireless=1" | sudo tee /etc/modprobe.d/acer_wmi.conf
permanent machen.
Bei älteren Acer- bzw. FSC-Notebooks lohnt ggf. ein Blick in ACER Hotkeys.
Das fürs Schalten zuständige Modul dell_laptop
ist fehlerhaft und muss bei einigen Modellen seit Ubuntu 10.10 ebenfalls gesperrt werden, insbesondere wenn zusätzlich das Modul dell_wmi
(zuständig für Funktionstasten) verwendet wird (Beispiel).
Symptom: die Abfrage mit rfkill zeigt:
0: dell-wifi: Wireless LAN Soft blocked: yes Hard blocked: yes
Behebung:
echo "blacklist dell_laptop" | sudo tee -a /etc/modprobe.d/blacklist.conf
Dieser Abschnitt befasst sich mit Hardware, die nicht vom rfkill-Framework unterstützt wird. Die nachfolgend besprochenen Lösungen wurden nicht systematisch mit allen zu Beginn aufgeführten Ubuntu-Versionen geprüft.
Um den Adapter bereits beim Systemstart in den gewünschten Zustand zu bringen, fügt man den gezeigten Schalt-Befehl in /etc/rc.local hinzu.
Prüfung, ob die Steuermodule geladen werden:
lsmod | grep -i asus
Ausgabe ist dann in der Regel:
asus_nb_wmi asus_wmi
Das Modul asus_nb_wmi bietet die entsprechende Option wapf. Es können entsprechende Parameter vorgegeben werden, 0 - 1 oder 4 sind möglich:
echo "options asus_nb_wmi wapf=1" | sudo tee /etc/modprobe.d/asus.conf
Parameter 0 und 1 schaltet den Hardwareswitch für WLAN und Bluetooth, 4 entsprechend den Softswitch bei Systemstart.
Bei einigen älteren Modellen von ASUS schaltet man den WLAN-Adapter so (zuvor muss das Modul asus_laptop
geladen sein):
echo 1 | sudo tee /sys/devices/platform/asus_laptop/wlan # einschalten echo 0 | sudo tee /sys/devices/platform/asus_laptop/wlan # ausschalten
bzw. in rc.local:
echo 1 > /sys/devices/platform/asus_laptop/wlan # einschalten echo 0 > /sys/devices/platform/asus_laptop/wlan # ausschalten
Um Bluetooth und UMTS/WWAN zu schalten, verwendet man in den Kommandos /sys/devices/platform/asus_laptop/bluetooth bzw. wwan.
Zusätzlich kann ein Systemskript umgeschrieben werden um die Tastenkombination Fn + F2 zu aktivieren (Forenartikel). Dazu editiert man mit Root-Rechten [3] die Datei /etc/acpi/asus-wireless.sh und ersetzt den Inhalt durch:
#!/bin/sh WLAN_CTL=/sys/devices/platform/asus_laptop/wlan [ -w $WLAN_CTL ] || exit 1 if [ "$(cat $WLAN_CTL)" = "0" ] ; then echo 1 > $WLAN_CTL else echo 0 > $WLAN_CTL fi
In manchen Fällen wird das asus-nb-wmi Modul geladen, obwohl es nicht nötig ist (ähnlich wie das Modul acer_wmi, siehe oben). rfkill zeigt dann ebenfalls zwei WLAN Instanzen, so wie bei dem Modul acer_wmi, und führt zu einem softblock des Moduls.
Man kann das automatische Laden des Moduls so unterbinden:
echo "blacklist asus-nb-wmi" | sudo tee /etc/modprobe.d/blacklist-asus_wmi.conf
Dieser Adapter funktioniert nicht mit rfkill, da der Treiber mit lib80211 arbeitet. Er läßt sich jedoch wie folgt schalten:
for i in /sys/bus/pci/drivers/ipw2200/*/rf_kill ; do echo 0 | sudo tee $i ; done # einschalten for i in /sys/bus/pci/drivers/ipw2200/*/rf_kill ; do echo 1 | sudo tee $i ; done # ausschalten
bzw. in rc.local:
for i in /sys/bus/pci/drivers/ipw2200/*/rf_kill ; do echo 0 > $i ; done # einschalten for i in /sys/bus/pci/drivers/ipw2200/*/rf_kill ; do echo 1 > $i ; done # ausschalten
Bei einigen Modellen ist zudem ein Modulparameter nötig, um die WLAN-LED zu aktivieren. Ist der Test
sudo modprobe -rfv ipw2200 sudo modprobe -v ipw2200 led=1
erfolgreich, macht man die Einstellung permanent:
echo "options ipw2200 led=1" | sudo tee /etc/modprobe.d/ipw2200.conf
Im Fall der Intel 2100b ist ipw2200
durch ipw2100
zu ersetzen.
(nur 32bit-Systeme)
Bei einigen älteren Modellen der genannten Baureihen (vollständige Liste im Modulquelltext wistron_btns.c ab Zeile 260) läßt sich mit Hilfe des Kernelmoduls wistron_btns
die Hardwaretaste zum Schalten des WLAN in Betrieb nehmen. Zeigt das manuelle Laden des Moduls mit
sudo modprobe -v wistron_btns
den gewünschten Erfolg, so kann man es künftig beim Systemstart automatisch laden, indem man eine zusätzliche Zeile an die Datei /etc/modules anfügt:
echo "wistron_btns" | sudo tee -a /etc/modules
(nur Ubuntu 12.04)
Hier sind drei Varianten zu unterscheiden:
fsam7400
fsam7440
fsaa1655g
Benutzerberichten zufolge (Quellen: Ubuntu-Forum Artikel 1 , Ubuntu-Forum Artikel 2 ) funktioniert fsam7400
ab Kernel 3.0 bzw. Ubuntu 11.10 nicht mehr. Als alternative Lösung bietet sich das vorstehend beschriebene Modul wistron_btns
an.
Nun lädt man das Modul mit
sudo modprobe -v fsam7400 radio=1
und prüft, ob sich der Adapter im Terminal schalten läßt mit:
echo 1 | sudo tee /proc/fsam7400/radio # einschalten echo 0 | sudo tee /proc/fsam7400/radio # ausschalten
War der vorstehende Test erfolgreich, kann man das Modul automatisch beim Systemstart laden
echo "fsam7400" | sudo tee -a /etc/modules
und den gewünschten Schaltzustand festlegen
echo "options fsam7400 radio=1" | sudo tee /etc/modprobe.d/fsam7400.conf # an echo "options fsam7400 radio=0" | sudo tee /etc/modprobe.d/fsam7400.conf # aus
Quellcode des Moduls herunterladen:
Entpacken:
tar xvfz fsam7440-0.4_fixed_10.10_and_up.tar.gz cd fsam7440-0.4_fixed_10.10_and_up
Kompilieren und installieren (diesen Schritt bei einem Kernelupdate wiederholen oder DKMS verwenden):
sudo apt-get install linux-headers-$(uname -r) build-essential make sudo make install
Nun lädt man das Modul mit
sudo modprobe -rfv fsam7400 # ggf. Modul aus vorigem Fall entladen sudo modprobe -v fsam7440 radio=1
und verfährt danach wie im Abschnitt zu fsam7400 gezeigt – dabei sind alle Vorkommen von fsam7400
durch fsam7440
zu ersetzen.
Modul herunterladen und entpacken (Quellen: 1, 2 ):
wget http://www.marvec.org/amilo/fsaa1655g-kernel-2.6.26.tar.bz2 mkdir fsaa1655g tar xvCfj fsaa1655g fsaa1655g-kernel-2.6.26.tar.bz2
Kompilieren und installieren (diesen Schritt bei einem Kernelupdate wiederholen oder DKMS verwenden):
sudo apt-get install linux-headers-$(uname -r) build-essential cd fsaa1655g make sudo make install
Nun lädt man das Modul mit
sudo modprobe -rfv fsam7440 # ggf. Modul aus vorigem Fall entladen sudo modprobe -v fsaa1655g
und verfährt danach wie im Abschnitt zu fsam7400 gezeigt – dabei sind alle Vorkommen von fsam7400
durch fsaa1655g
zu ersetzen.
rfkill – Dokumentation der Kernel-Schnittstelle
linuxwireless.org rfkill – Dokumentation des Kommandozeilen-Werkzeugs
acer-wmi – Artikel zum Kernelmodul acer_wmi
Acer Hotkeys – Werkzeug für ältere Notebooks, nur 32-Bit Systeme
Kernelmodule Grundlagenartikel zur Handhabung von Kernelmodulen
Diese Revision wurde am 6. März 2017 13:42 von tomtomtom erstellt.