19.01.2013

RaspberryPi - WLAN einrichten

Ich beschreibe hier kurz, welche Schritte notwendig sind, um eine WLAN-Stick auf dem RaspberryPi einzurichten. In dem Beispiel wird der WLan-Stick TP-Link TL-WN727N mit einen Ralink-Chip verwendet. Der TP-Link TL-WN721N mit Athos-Chipsatz funktioniert aber auch problemlos.

Create New Project

Als erstes verbindet man sich mit dem RaspberryPi. In der Anleitung wird davon ausgegangen, dass man sich remote per SSH mit dem RaspberryPi verbunden hat. D.h., da das WLan ja noch nicht eingerichtet ist, muss ein Netzwerkkabel vom RaspberryPi zum Netzwerk-Router (FritzBox oder ähnliches) gelegt werden. Allerdings können die beschriebenen Schritte auch direkt am RaspberryPi mit angeschlossenem Monitor und Tastatur durchgeführt werden.

Wenn man eine FritzBox verwendet, kann über die URL http://fritz.box herausgefunden werden, welche IP-Adresse der RaspberryPi hat. Diese IP-Adresse wird für den Verbindungsaufbau mit SSH benötigt.

Die Verbindung über die Netzwerkverbindung und SSH funktioniert so, dass man ein Terminal öffnet und folgendes Kommando ausführt:

$ ssh pi@192.178.168.40

Man verbindet sich also als Benutzer pi mit dem Rechner 192.178.168.40. Standardmäßig lautet das Passwort: raspberry.

Wenn die Verbindung offen ist, wird der WLAN-Stick an einen der USB-Ports angeschlossen. Ich empfehle einen USB-Hub zu benutzen. Grund dafür ist, dass es mir nach dem Einrichten des WLan hin und wieder passiert ist, dass ich keine Verbindung mehr zum Raspberry herstellen konnte. Grund dafür war wohl ein Problem mit dem WLan-Treiber. Durch den USB-Hub ist es problemlos möglich, den WLan-Stick zu entfernen und erneut mit dem Hub zu verbinden. Wenn man den USB-Port direkt am RaspberryPi verwendet, dann startet dieser sich neu und laufende Prozesse werden beendet.

Create New Project

Zum Überprüfen, ob der WLan-Stick erkannt wurde, wird folgendes Kommando aufgerufen:

pi@raspberrypi / $ dmesg

Die Ausgabe sollte ungefähr so aussehen:

...
[    3.683545] usb 1-1.3.4: new high-speed USB device number 5 using dwc_otg
[    3.821555] usb 1-1.3.4: New USB device found, idVendor=148f, idProduct=5370
[    3.843113] usb 1-1.3.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    3.866144] usb 1-1.3.4: Product: 802.11 n WLAN
[    3.876042] usb 1-1.3.4: Manufacturer: TPlink
[    3.882852] usb 1-1.3.4: SerialNumber: 1.0
[    4.032430] udevd[137]: starting version 175
[    5.547217] cfg80211: Calling CRDA to update world regulatory domain
[    6.493501] usb 1-1.3.4: reset high-speed USB device number 5 using dwc_otg
[    6.731617] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[    6.733397] Registered led device: rt2800usb-phy0::radio
[    6.733528] Registered led device: rt2800usb-phy0::assoc
[    6.733666] Registered led device: rt2800usb-phy0::quality
[    6.733796] usbcore: registered new interface driver rt2800usb
...

In dem Beispiel wird ein TP-Link TL-WN727N mit einen Ralink-Chip angeschlossen, der den Treiber rt2800usb verwendet. Ich habe allerdings auch mit einem TP-Link TL-WN721N mit Athos-Chipsatz getestet. Auch dieser Chipsatz funktioniert.

Create New Project

Anschließend sollte man noch schnell überprüfen, ob die Treiber-Module alle geladen wurden:

pi@raspberrypi / $ lsmod

Als Ausgabe sollte man folgendes erhalten:

...
rt2800usb              13009  0
rt2800lib              47242  1 rt2800usb
crc_ccitt               1465  1 rt2800lib
rt2x00usb              11075  1 rt2800usb
rt2x00lib              41057  3 rt2x00usb,rt2800lib,rt2800usb
mac80211              236178  3 rt2x00lib,rt2x00usb,rt2800lib
cfg80211              171957  2 mac80211,rt2x00lib
...

Wenn die Treiber geladen wurden, kann ein Scan des WLan-Netzes durchgeführt werden:

pi@raspberrypi / $ sudo iwlist wlan0 scan

Wichtig dabei ist das Kommando sudo. Wenn man das vergißt, dann wird nichts gefunden. :-)

Wenn man eine Liste mit Netzwerken gefunden wird, dann wählt man sein eigenes Netz aus und konfiguriert die SSID. Dazu wird folgende Kommando verwendet:

sudo iwconfig wlan0 essid "WLAN_NAME"

Da sich der Raspberry Pi automatisch verbinden und nicht jedesmal das WLan-Passwort eingetippt werden soll, muss dieses auf dem RaspberryPi hinterlegt werden. Da das Passwort nicht unverschlüsselt auf der SD-Karte abgelegt werden sollte, kann mit dem Tool wpa_passphrase ein verschlüsselter Hash für den WPA2-Key erstellt werden. Das Kommando dafür ist wpa_passphrase WLAN_NAME 'WLAN_PASSWORD'.

pi@raspberrypi /etc/wpa_supplicant $ wpa_passphrase WLAN_NAME 'Geheimes Passwort'
network={
	ssid="WLAN_NAME"
	#psk="Geheimes Passwort"
	psk=81ab545f5a7e5ccd360abfcdede8ed8fedcdade5f648f6deda413de5a8b8bb8e
}

In der Ausgabe ist noch das geheime Passwort enthalten. Das sollte entfernt werden, wenn der erstelle network-Block in die Konfigurationsdatei übertragen wird.

Als nächstes wechselt man in das Verzeichnis /etc und ruft ls auf.

pi@raspberrypi /etc/wpa_supplicant $ ls
action_wpa.sh  functions.sh  ifupdown.sh  wpa_supplicant.conf

In dem Verzeichnis sollte sich die Datei wpa_supplicant.conf befinden.

Wenn noch kein WLan eingerichtet ist, dass sollte sie folgenden Inhalt haben, wenn man sie sich mit more ansieht:

pi@raspberrypi /etc/wpa_supplicant $ sudo more wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

Nun wird der oben generierte "network"-Block mit dem vi hinzugefügt.

pi@raspberrypi /etc/wpa_supplicant $ sudo vi wpa_supplicant.conf

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

network={
	ssid="WLAN_NAME"
	psk=81ab545f5a7e5ccd360abfcdede8ed8fedcdade5f648f6deda413de5a8b8bb8e
}

Nach einem Neustart des RaspberryPi sollte das Wlan verfügbar sein. Nun kann man versuchen sich per SSH über die WLan-Verbindung mit des Raspberry Pi zu verbinden.

Hinweis: Die IP-Adresse kann sich im Vergleich zu der, die oben bei der Verbindung über das Netzwerkabel verwendet wurde, verändert haben. Ggf. muss man über die Fritzbox die IP-Adresse erneut nachschauen.

Weitere Informationen

Wenn das WLan fertig eingerichtet ist, dann hat man vielleicht auch Spass daran, seinen RaspberryPi zu einer Wetterstation zu erweitern. In dem Artikel RaspberryPi - Wetterstation habe ich beschrieben, wie das funktioniert.