WLAN-Adapter am Raspberry Pi einrichten

Mit Raspbian Jessie geprüft.

Typischerweise ist der Raspberry Pi per Ethernet mit dem lokalen Netzwerk verbunden. Um vom kabelgebundenen Netzwerk wegzukommen soll der Raspberry Pi mit dem vorhandenen Funknetzwerk verbunden werden. Dazu muss ein WLAN-Adapter an einem USB-Port eingesteckt sein und anschließend konfiguriert werden.

Die folgende Anleitung bezieht sich auf die Einrichtung eines WLAN-Adapters unter der Distribution "Raspbian". Andere Distributionen erfordern unter Umständen eine Anpassung. Zum Beispiel das Installieren eines Treibers für den WLAN-Adapter. Man sollte nicht davon ausgehen, dass jede Distribution immer die notwendigen Treiber mitbringt.

Übersicht

Grundsätzlich gibt es verschiedene Vorgehensweisen, um einen WLAN-Adapter für den Raspberry Pi einzurichten. Welche man verwendet hängt von den Anforderungen und der persönlichen Bevorzugung ab.

  1. WLAN-Konfiguration in der Datei "/etc/network/interfaces"
  2. WLAN-Konfiguration mit "wpa_supplicant"
  3. WLAN-Konfiguration mit "systemd"

Viele Tutorials konfigurieren das WLAN über "wpa_supplicant". Das kann man machen, wenn man den Raspberry Pi mobil und in verschiedenen Netzen betreiben möchte und darauf angewiesen ist, dass das Roaming funktioniert (Variante 2). Wenn der Raspberry Pi nur in einem einzigen WLAN funktionieren muss, was die Regel sein dürfte, dann reicht eine einfache Lösung aus (Variante 1).
Die WLAN-Konfiguration mit systemd vorzunehmen kann für die Zukunft sinnvoll sein (Variante 3). Setzt allerdings voraus, dass man die komplette Netzwerk-Konfiguration über systemd vornimmt.

Lösung (Variante 1): WLAN-Konfiguration in der Datei "/etc/network/interfaces"

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.

Lösung (Variante 2): WLAN-Konfiguration mit "wpa_supplicant"

Diese Lösung ist unter Umständen zu bevorzugen. Denn das Software-Paket "wpa_supplicant" erkennt Funknetze und übernimmt den automatischen Verbindungsaufbau.

Für die Konfiguration der Funknetze existiert eine Datei, die auch von den Netzwerk-Managern der Desktop-Oberflächen verwendet wird.

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.

Lösung (Variante 3): 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.

Lösung: WLAN-Verbindung 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.

Alternative: WLAN mit "wicd-curses" einrichten

Das Einrichten eines WLANs für den Raspberry Pi ist nicht immer einfach. Vor allem deshalb, weil man Dateien editieren muss. Das ist sehr fehleranfällig und gelingt nur, wenn man eine bestimmte Reihenfolge so ziemlich exakt einhält. Einfacher geht es mit „wicd-curses“, ein grafischer Netzwerk-Manager, der alle wichtigen Informationen in einer Benutzeroberfläche darstellt, die mit der Tastatur bedient werden muss.

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.

Übersicht: WLAN-Adapter für den Raspberry Pi

Beliebter Klassiker Bedenkenswerte Alternative Alternative 2 Mehr Reichweite

Weitere verwandte Themen:

Teilen:

Produktempfehlungen