Raspberry Pi OS: WLAN konfigurieren

Die Konfiguration des WLANs ist in der Grundkonfiguration von Raspberry Pi OS enthalten. Außerhalb des Konfigurationsassistenten erreicht man die Konfigurationsoberfläche für das WLAN auf dem Desktop rechts oben. Wenn man auf das Funkwellen-Symbol mit der linken Maustaste klickt, erscheint eine Liste mit erreichbaren WLANs, die man auswählen kann. Ein grüner Haken kennzeichnet das WLAN mit dem man verbunden ist.

Um ein WLAN mit dem Raspberry Pi nutzen zu können, sind allerdings bestimmte Systemvoraussetzungen notwendig. Außerdem gibt es auch noch die Möglichkeit ein WLAN auf der Kommandozeile einzurichten.

Systemvoraussetzungen für WLAN mit dem Raspberry Pi

Einen Raspberry Pi kann man per Ethernet mit dem lokalen Netzwerk verbinden oder per WLAN. Für die Nutzung eines WLAN mit einem Raspberry Pi muss einer der beiden Voraussetzungen erfüllt sein:

  1. Raspberry Pi mit integrierten WLAN-Adapter.
  2. Externer WLAN-Adapter für USB, wenn der Raspberry Pi kein integriertes WLAN hat.

In der Regel werden externe WLAN-Adapter für den USB automatisch erkannt. Aber, nicht jeder WLAN-Adapter ist gleichermaßen geeignet. Beispielsweise ist nicht für jeden WLAN-Adapter der Treiber im Raspberry Pi OS integriert. Unter Umständen muss man diesen nachträglich installieren oder sogar den Quellcode kompilieren. In der Regel macht es Sinn, wenn man beides vermeidet und einen WLAN-Adapter verwendet, der explizit für den Betrieb an einem Raspberry Pi und für Linux-Distributionen geeignet ist.

Übersicht: WLAN-Konfiguration

  1. WLAN-Konfiguration auf dem Desktop
  2. WLAN-Konfiguration auf der Kommandozeile mit „raspi-config“
  3. WLAN-Konfiguration auf der Kommandozeile mit „wpa_supplicant“
  4. WLAN-Konfiguration mit „systemd“
  5. WLAN-Konfiguration in der Datei „/etc/network/interfaces“ (veraltet)
  6. WLAN-Verbindung auf der Kommandozeile prüfen

Es gibt verschiedene Vorgehensweisen, um ein WLAN in Raspberry Pi OS einzurichten. Welche man verwendet hängt von den Anforderungen und der persönlichen Bevorzugung ab. Wenn man Raspberry Pi OS mit Desktop betreibt, dann wird man in der Regel auch dort das WLAN einrichten. Einfacher geht es nicht.
Wenn man „raspi-config“ zur Konfiguration nutzt, dann ist es nicht verkehrt dieses Tool dafür zu benutzen. Letztlich wird bei allen Varianten immer „wpa_supplicant“ konfiguriert, dessen Konfigurationsdatei man auch manuell ändern kann. Wobei man sich dann mit der Syntax auseinandersetzen muss, um Fehler zu vermeiden.
Alternativ kann man die WLAN-Konfiguration auch mit „systemd“ oder in der Datei „/etc/network/interfaces“ vornehmen. Das setzt allerdings voraus, dass man die komplette Netzwerk-Konfiguration dort vornimmt. Bei letzterem handelt es sich um eine veraltete und zu vermeidende Vorgehensweise.

1. WLAN-Konfiguration auf dem Desktop

Raspberry Pi OS Desktop

Die WLAN-Konfiguration auf dem Raspberry Pi OS Desktop ist denkbar einfach. Hierfür gibt es rechts oben das Funkwellen-Symbol, dass von einem Punkt ausgeht. Wenn man mit der linken Maustaste darauf klickt, öffnet sich ein Menü mit aktuell in Reichweite befindlichen WLANs. Wenn man davon eines auswählt, muss man nur noch das Passwort eingeben. Anschließend wird die Verbindung zu diesem WLAN hergestellt. Das Passwort wird auch gespeichert. Das heißt, beim nächsten Mal verbindet sich der Raspberry Pi automatisch mit diesem WLAN.

2. WLAN-Konfiguration auf der Kommandozeile mit „raspi-config“

Auf der Kommandozeile konfiguriert man die Verbindung zu einem WLAN am einfachsten mit „raspi-config“. Dort findet man unter „Network Options / Wi-Fi“ die Möglichkeit, ein WLAN mit Namen und Passwort einzutragen, mit dem sich der Raspberry Pi verbindet.

Einschränkend muss man erwähnen, dass sich nur normale WLAN-Netzwerke mit dieser PSK-Authentifizierung eintragen lassen. Die Verbindung zu einem Enterprise-WLAN kann man damit nicht einrichten.
Für komplexere WLAN-Umgebungen muss man zwangsläufig eine manuelle Konfiguration des „wpa_supplicant“ gehen.

3. WLAN-Konfiguration auf der Kommandozeile mit „wpa_supplicant“

Bei der Konfiguration von „wpa_supplicant“ wirft man sozusagen einen Blick in den Maschinenraum der WLAN-Konfiguration. Bis auf wenige Ausnahmen wird „wpa_supplicant“ immer für die WLAN-Konfiguration verantwortlich sein. Das Software-Paket „wpa_supplicant“ ist für das Erkennen von Funknetzen und den automatischen Verbindungsaufbau zuständig. Dazu müssen die Zugangsdaten in eine Konfigurationsdatei geschrieben werden. Diese Datei wird auch von den Netzwerk-Managern der Desktop-Oberfläche verwendet.

Öffnen und bearbeiten der Konfigurationsdatei:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Hier müssen sich folgende Zeilen befinden oder ergänzt werden.

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE

Gefolgt von den einzelnen WLAN-Netzen:

network={
   ssid="WLAN-SSID"
   psk="WLAN-PASSWORT"
}

Anschließend speichern und schließen: Strg + O, Return, Strg + X.

Es ist aber gar nicht notwendig, die Datei zu öffnen und zu bearbeiten. Man kann die Einträge auch automatisch erstellen.

sudo wpa_passphrase "WLAN-NAME" "WLAN-PASSWORT" >> /etc/wpa_supplicant/wpa_supplicant.conf

Es erscheint folgende Fehlermeldung: "-bash: /etc/wpa_supplicant/wpa_supplicant.conf: Keine Berechtigung".

Was ist das Problem? Mit "sudo" wird das Kommando mit Root-Rechten ausgeführt, aber die Konfigurationsdatei lässt sich so nicht beschreiben. Man muss echt "root" sein, damit es funktioniert.

sudo -i
wpa_passphrase "WLAN-NAME" "WLAN-PASSWORT" >> /etc/wpa_supplicant/wpa_supplicant.conf
exit

Schauen wir mal, was wir angestellt haben:

sudo cat /etc/wpa_supplicant/wpa_supplicant.conf

Dieses Kommando hat ein neues WLAN-Netz mit der richtigen Syntax am Ende der Konfigurationsdatei hinzugefügt. Gleichzeitig hat es das WLAN-Passwort in einen Hash-Wert umgewandelt, damit die WLAN-Verbindung schneller zustande kommt. Wenn man möchte kann man jetzt noch das Klartext-Passwort aus der Datei löschen (optional).

Jetzt kann man sich noch testweise mit dem WLAN verbinden.

sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf

Alternativ:

sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf &

Das abschließende "&" schickt den Prozess in den Hintergrund.

Sofern die Datei "/etc/network/interfaces" dem Original entspricht, sollte nach einem Reboot die Verbindung zum WLAN automatisch aufgebaut werden.

4. WLAN-Konfiguration mit „systemd“

Hinweis: Bevor man diese Lösung für die WLAN-Konfiguration wählt, muss die Netzwerk-Konfiguration auf systemd umgestellt sein und dabei auf jeglichen Netzwerk-Manager verzichtet. Ansonsten macht diese Lösung keinen Sinn.

Zuerst legen wir eine WLAN-Konfiguration für "wpa_supplicant" an. Diese Variante erfordert den Einsatz von "root", zu dem wir zuerst wechseln müssen.

sudo -i

Anschließend tragen wir mit einem Kommando die WLAN-Konfiguration in eine vorhandene Konfigurationsdatei ein.

wpa_passphrase "WLAN-NAME" "WLAN-PASSWORT" >> /etc/wpa_supplicant/wpa_supplicant.conf

Die Platzhalter für WLAN-Name und WLAN-Passwort sind durch die eigenen Werte zu ersetzen.

An der Stelle ist es nicht verkehrt, einen Blick in diese Datei zu werfen und zu prüfen, ob der Eintrag angelegt wurde.

cat /etc/wpa_supplicant/wpa_supplicant.conf

Die Datei sollte beispielhaft wie folgt aussehen:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE

network={
   ssid="WLAN-NAME"
   #psk="WLAN-PASSWORT"
   psk=WLAN-PASSWORT_CODIERT
}

Hierbei ist zu beachten, dass das WLAN-Passwort im Klartext in die Datei geschrieben wurde. Aus Sicherheitsgründen sollte man die Zeile mit dem Klartext-Passwort löschen (optional).

Dann kehren wir zum regulären Benutzer zurück:

exit

Dann erzeugen wir eine systemd-Unit. Hierbei ist zu beachten, dass diese Lösung nur dann Sinn macht, wenn man auf jeglichen Network-Manager verzichtet.

sudo nano /lib/systemd/system/wpa_supplicant@wlan0.service
[Unit]
Description=WPA-Supplicant-Daemon (wlan0)
Requires=sys-subsystem-net-devices-wlan0.device
BindsTo=sys-subsystem-net-devices-wlan0.device
After=sys-subsystem-net-devices-wlan0.device
Before=network.target
Wants=network.target

[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/sbin/wpa_supplicant -qq -c/etc/wpa_supplicant/wpa_supplicant.conf -Dnl80211 -iwlan0
Restart=on-failure

[Install]
Alias=multi-user.target.wants/wpa_supplicant@wlan0.service

Speichern und schließen mit Strg + O, Return, Strg + X.

Dann aktivieren und starten wir die neue systemd-Unit.

sudo systemctl enable wpa_supplicant@wlan0.service
sudo systemctl start wpa_supplicant@wlan0.service

Was genau jetzt passiert, ist von verschiedenen Faktoren abhängig. Gehen wir davon aus, dass die Konfiguration korrekt erfolgt ist, dann sollte jetzt die Verbindung zum WLAN hergestellt werden. Je nach WLAN-Adapter haben wir hier eine andere Reaktion. Beispielsweise fängt eine Status-LED am WLAN-Adapter zu blinken an und geht bei erfolgreichem Verbindungsaufbau in ein Dauerleuchten über.

Unabhängig davon sollte man die WLAN-Verbindung prüfen:

sudo systemctl status wpa_supplicant@wlan0.service

In der Zeile "Loaded:" sollte hinten "enabled" stehen. Ein Log-Eintrag weiter unten sollte "Started WPA-Supplicant-Daemon (wlan0)." entsprechen. Dann war der Verbindungsaufbau zum WLAN erfolgreich.

5. WLAN-Konfiguration in der Datei „/etc/network/interfaces“ (veraltet)

Um eine Verbindung zu einem WLAN einzurichten muss man die Netzwerk-Konfiguration bearbeiten. Dazu öffnet man folgende Datei:

sudo nano /etc/network/interfaces

Hier trägt man folgende Zeilen ein:

# WLAN
allow-hotplug wlan0
iface wlan0 inet manual
wpa-ssid "WLAN-NAME"
wpa-psk "WLAN-PASSWORT"

Selber eintragen muss man noch den WLAN-Name (SSID) und das WLAN-Passwort (Pre-Shared-Key, PSK). Beide Werte sollten in Anführungszeichen ("") gesetzt sein. Es ist nicht zwingend notwendig, aber zu empfehlen, wenn Name und Passwort Zeichen enthalten, die in dieser Datei anders gewertet werden. Beispielsweise ein Leerzeichen.

Anschließend speichern und schließen: Strg + O, Return, Strg + X.

Danach starten wir das Interface neu. Erst danach werden die Netzwerk-Einstellungen übernommen und auch die Verbindung zum WLAN aufgebaut.

sudo ifdown wlan0
sudo ifup wlan0

Ist die WLAN-Konfiguration in den Netzwerk-Einstellungen korrekt, dann hat der Raspberry Pi vom DHCP-Server eine IP-Adresse bekommen. Man erkennt das am "DHCPACK". In der darauffolgenden Zeile wird auch die IPv4-Adresse angezeigt. Wenn nicht, dann ist der WLAN-Name, das WLAN-Passwort oder beides falsch.

Mit "ifconfig" kann man sich nochmal die Netzwerk-Schnittstellen ausgeben lassen. Wenn die Schnittstelle "wlan0" eine IP-Adresse zugewiesen bekommen hat, dann ist der Raspberry Pi mit dem WLAN verbunden.

6. WLAN-Verbindung auf der Kommandozeile prüfen

Prüfen, ob das WLAN-Interface vorhanden ist:

ip l

Prüfen, ob eine Verbindung zu einem WLAN besteht:

wpa_cli status

Ist ein bekannter Access Point in Reichweite, sollten hier Informationen zur Verbindung angezeigt werden.

Lösung: Netzwerk-Konfiguration prüfen

Ob die Netzwerk-Konfiguration erfolgt ist, ist wie folgt zu prüfen.

ip a

Hier wird angezeigt, ob das Interface "wlan0" eine IP-Adresse bekommen hat.

Troubleshooting

Als erstes empfiehlt es sich das System zu aktualisieren und dann ein Tool zu installieren, mit dem man sich bei der Konfiguration von WLANs etwas leichter tut.

sudo apt-get update
sudo apt-get install iw

Dann steckt man den WLAN-Adapter an einen freien USB-Port ein. Dann geht es darum herauszufinden, ob der WLAN-Adapter überhaupt erkannt wurde. Dazu lässt man sich alle USB-Geräte anzeigen.

lsusb

Wenn hier etwas von "wireless" oder "802.11" steht, dann hat man schon fast gewonnen. Jetzt sollte auch eine Netzwerk-Schnittstelle mit der Bezeichnung "wlan0" oder "wlan1" vorhanden sein. Dazu lässt man sich alle Netzwerk-Schnittstellen anzeigen.

ip l

Befindet sich in der Liste eine Netzwerk-Schnittstelle mit der Bezeichnung "wlan0" oder "wlan1", dann ist mit der Hardware-Erkennung und Treiber-Installation alles optimal gelaufen. Jetzt kann man sich an die Konfiguration des WLAN-Clients und der IP-Einstellungen machen.

Danach prüfen wir, ob das WLAN, in das wir den Raspberry Pi einbuchen wollen, auch in Reichweite ist.

iwlist wlan0 scan | grep -i ssid

Die Ausgabe zeigt alle WLAN-Netzwerke, die sich in der Umgebung befinden. Dasjenige, in das der Raspberry Pi eingebucht werden soll, sollte ebenfalls in der Liste sein. Voraussetzung dafür ist, dass der Raspberry Pi sich in dessen Reichweite befindet.

Problem: Verbindungsabbrüche bei SSH-Verbindung über WLAN-Adapter

Normalerweise sind SSH-Verbindungen äußerst stabil. Wenn keine Timeouts auf Client- oder Server-Seite eingestellt sind, dann bleibt die Verbindung theoretisch unendlich bestehen.
Es kann aber trotzdem zu Verbindungsabbrüchen kommen. Beispielsweise bei Verbindungen über WLAN. Typischerweise sind hier zwei Probleme verantwortlich. Entweder die Powersaving-Funktion des WLAN-Adapters oder er ist schlampig entwickelt oder weist billige Komponenten auf. Besonders billige WLAN-Adapter, sogenannter Chinaschrott, können hier Probleme verursachen. Abhilfe schafft nur der Austausch gegen einen besseren WLAN-Adapter.

Problem: Kein Auto-Reconnect

Wenn man das WLAN manuell eingerichtet hat und der Access Point einmal abgeschaltet wird, dann bricht die WLAN-Verbindung ab. Logisch. Wenn der Access Point wieder in Betrieb geht, dann verbindet sich der Raspberry Pi allerdings nicht automatisch mit dem WLAN.

Erweiterung: Energiesparmodus des WLAN-Adapters abschalten

Standardmäßig ist bei einigen WLAN-Adaptern das "Power Saving" aktiviert. Das ist ein "Schlafmodus" oder besser gesagt eine Energiesparfunktion. Das bedeutet, dass der Adapter bei Inaktivität die Netzwerkverbindung abschaltet. Das ist kein Problem, wenn man den Raspberry Pi als Client benutzt. Dann wird die WLAN-Verbindung einfach wieder aktiviert. Doch wenn man aus der Ferne über WLAN zum Beispiel per SSH auf den Raspberry Pi zugreifen möchte, dann ist dieser unter Umständen nicht erreichbar.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Alles was Sie über Netzwerke wissen müssen.

Netzwerktechnik-Fibel

Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.

Das will ich haben!

Elektronik-Set Raspberry Pi Edition
Elektronik-Set Raspberry Pi Edition

Elektronik erleben mit dem Raspberry Pi mit Python und GPIO Zero

  • Leichter Einstieg ins Hardware-nahe Programmieren mit Python und GPIO Zero
  • Experimentieren und Programmieren ohne Vorkenntnisse
  • Sofort Loslegen mit All-in-one-Set

Elektronik-Set jetzt bestellen

Alles was Sie über Netzwerke wissen müssen.

Netzwerktechnik-Fibel

Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.

Das will ich haben!