Raspberry Pi Zero W „headless“ Setup – so geht’s

Raspberry Pi Zero W im Größenvergleich

Der Raspberry Pi Zero W kommt für wenig Geld daher. Er verfügt ab Werk über WLAN (und Bluetooth). Sind Adapter für Mini-HDMI und Micro-USB nicht im Haus, kommt ein Setup mit Monitor und Tastatur nicht infrage. Und die fehlende LAN-Buchse am Zero bedeutet: Der Kaugummistreifen muß erstmal ins WLAN.

Eine lösbare Herausforderung …

Den Zero W gibt es für unter 15 EUR (ohne Zubehör) bzw. für unter 30 Euro als Essential Paket (z.B. bei Amazon). Für die Installation wird eine geeignete Micro-SD-Karte mit mindestens 8GB Kapazität benötigt. Außerdem ein Kartenleser (z.B. von Lexar, bei Amazon), welcher an einen weiteren Rechner angeschlossen wird.

Vorbereitung

Das Bespielen der SD-Karte mit Raspbian lt. Install Guide ist schnell erledigt und mündet folgender Partitionierung:

  1. die boot-Partition, welche das DOS-Dateisystem nutzt und
  2. die root-Partition, welche das Linux Ext-Dateisystem nutzt.

Wir werden ausschließlich den Inhalt der boot-Partition erweitern, dank DOS-Dateisystem sind die folgenden Änderungen unter allen populären Betriebssystemen möglich.

OpenSSH-Service aktivieren

Gemäß offizieller Anleitung (Abs. 3) ist im Stammverzeichnis der boot-Partition eine Datei namens ssh zu erstellen. Die reine Existenz dieser Datei führt im Raspian-Boot-Prozess dazu, dass der OpenSSH Server automatisch aktiviert wird und eingehende Verbindungen auf Port 22 annimmt.

WLAN-Konfiguration vorbereiten

Der zweite Schritt ist etwas umfangreicher. Ebenfalls im Stammverzeichnis der boot-Partition wird die Datei wpa_supplicant.conf erstellt. Lt. ungeprüfter Aussagen muss sie Linux-Zeilenenden aufweisen. Wie in den Hintergrundinformationen angekündigt, wird diese Datei beim Start automatisch an die richtige Stelle /etc/wpa_supplicant/ verschoben.

Die Datei hat folgenden Inhalt:

country=DE 
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev 
update_config=1 
network={
     ssid="WLAN SSID"
     scan_ssid=1
     psk="WLAN PASSWORT"
     key_mgmt=WPA-PSK
}

Die Werte WLAN SSID und WLAN PASSWORT sind natürlich durch die tatsächlichen Angaben zu ersetzen. Befindet man sich nicht in Deutschland, ist DE durch den ISO-Code des aktuellen Landes zu ersetzen.

Start

Damit sind die Vorbereitungen für den ersten Start abgeschlossen. Die SD-Karte wird nun in den Raspberry Pi gesteckt und dieser mit Energie versorgt. Nach einigen Sekunden sollte der Raspberry Pi im WLAN auftauchen, als Standard-Hostname wird dabei raspberrypi verwendet. Im WLAN-Access Point sollte sich auch die vergebene IP-Adresse ermitteln lassen.

Mittels eines geeigneten SSH-Clients kann nun die Anmeldung erfolgen. Das Passwort zum Standard-Benutzer pi ist in der offiziellen Dokumentation zu finden und sollte nach der 1. Anmeldung unbedingt geändert werden.

Das Verfahren zur WLAN-Client-Definition kann übrigens wiederholt werden und eignet sich somit auch, um eine nachträgliche Änderung headless durchzuführen.


28 Antworten zu “Raspberry Pi Zero W „headless“ Setup – so geht’s”

    • Eine gängige Beschreibung für die Kodierung des Zeilenumbruchs unter Linux. Dort wird ausschließlich das Line Feed („LF“, ASCII Code 10) Zeichen verwendet, während bei Windows bzw. DOS zunächst der Wagenrücklauf (Carriage Return, „CR“, ASCII Code 13) gefolgt von LF zum Einsatz kommt. Dieses (aus Linux-Sicht) überschüssige Zeichen am Zeilenende wird manchmal dem Zeileninhalt zugeordnet und verändert dadurch seine logische Bedeutung.

      Siehe auch Wikipedia.

  1. Danke für die schöne Beschreibung – in 5 Minuten ist alles erledigt und funktioniert prima. Was war das früher immer für ein Umstand, als ich mich noch mit dem neu zu installierenden Raspi im Wohnzimmer vor den Fernseher setzen musste …

    Zur Datei wpa_supplicant.conf mit den „Linux-Zeilenenden“: Wer – wie ich – auf seinem Windows-Rechner Cygwin hat, kann sie mit vi/vim erzeugen, dann passt bereits alles. (Die leere Datei ssh erzeugt man in der Shell dann mit „>ssh“.)

    Alternativ kann man sie unter Windows mit notepad++ anlegen (oder sonst einem Editor, bei dem sich das Format der Zeilenenden beeinflussen lässt).

    Thomas

  2. War ich froh, diese Anleitung gefunden zu haben. Leider hat es überhaupt nicht funktioniert. An der Micro-SD-Karte, dem Abbild von Raspian, dem Router und dem Netzteil liegt es nicht, denn mit einem Raspi 3b+ funktioniert das mit den Teilen ganz normal. Ich habe es mehrfach versucht, SSID und Passwort mal mit, mal ohne „“, keine Chance. Der Zero ist im WLAN nicht sichtbar. Muss man noch DHCP aktivieren? Oder irgendwo eine feste IP vergeben? Da in anderen Anleitungen im Netz exakt wie hier vorgegangen wird und es bei anderen Besuchern dieser Seite hier auch tadellos funktioniert hat, nehme ich mal an, dass höchstwahrscheinlich mein Zero defekt ist. Wäre ärgerlich… Wie kann man das feststellen? Nach Stromzufuht flackert die grüne LED ein paar mal, das hört nach ca. 1 Minute auf. Dabei zieht der Zero so zwischen 0,04 und 0,18 A. Nach einer Minute bleibt es bei 0,05 A. Sieht alles plausibel aus. Irgendwelche Ideen?

    • Schwer zu sagen, woran es liegen könnte, zumal die gleiche SD-Karte mit einem RPi3 zum gewünschten Ergebnis führt. Wenn Du einen Mini-HDMI Adapter zur Hand hast, wäre ein Anschluß des Zeros an einen Fernseher oder Monitor vermutlich der einfachste Weg zu einer Analyse. Mehr fällt mir da leider auch nicht ein.

  3. Hallo Christoph, hallo Frank,

    ich hatte heute das gleiche Problem. Die Ursache liegt wohl in einem Zeilenumbruch im Listing oben (wie auch immer der da reingekommen ist):

    falsch (zwei Zeilen):
    ctrl_interface=DIR=/var/run/wpa_supplicant
    GROUP=netdev

    richtig (in einer Zeile):
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

    Siehe z.B. https://desertbot.io/blog/setup-pi-zero-w-headless-wifi

    Getestet mit dem aktuellen Raspbian Image (Raspbian Stretch Lite, Version: November 2018, Release date: 2018-11-13, Kernel version: 4.14)

    Grüße
    Johannes

  4. Hi!

    ich habe ebnen Stunden damit verbracht zu merken, dass
    die Zeile „GROUP=netdev“ dazu führt, dass das Skript nicht verarbeitet wird. Ohne Fehlermeldung.

    Also auskommentieren, dann geht es.

  5. *Kopfschüttel**Kopfschüttel**Kopfschüttel*

    1.) Das Wifi-Passwort als plaintext, in eine frei zugängliche Datei unter fat32, abzulegen ist besonders intelligent.

    wie wäre es z.B. mit
    $ sudo wpa_passphrase „WLAN SSID“ „WLAN PASSWORT“ >> /etc/wpa_supplicant/wpa_supplicant.conf

    und anschließendem Löschen der Quelldatei?

    2.) Der Verzicht auf ssh-keys steigert das ganze. Wenn ssh aktiviert wird, wird es auch benötigt, dann bitte aber keys (mit oder ohne Passwort) verwenden!
    $ ssh-keygen
    $ ssh-copy-id user@machine

    mit diesem extremen Aufwand, 3 Befehle einzutippen, krümmt sich niemand ein Haar.

    3.) Vielleicht geht man einen Schritt weiter und entfernt auch den Hinweis, das Startpasswort sofort zu ändern…
    $ passwd pi

    *Kopfschüttel**Kopfschüttel**Kopfschüttel*

    • Hallo Mr. AtiX,

      danke für Deinen Kommentar. Die von Dir angeführten Schritte sind sinnvoll und wichtig zur Absicherung des Zielsystems. Sie gehen allerdings über den „Scope“ meines Beitrags hinaus.

      Gruß

      Christoph

  6. Sehr schöne Anleitung,

    leider löscht mein Raspberry pi Zero W immer wieder die SSH und wpa_supplicant Datei aus der Boot Partition. An der SD Card liegt es nicht. Insgesammt 10 Stück (Neue und etwas ältere) habe ich getestet, leider alle das selbe Ergebnis.

    Vielleicht jemand eine Idee woran es liegen könnte? Die Logs geben leider auch nichts sinnvolles dazu aus.

  7. @Luftgoofy:
    die Dateien werden regulär dort gelöscht.

    Wenn das System „oben“ ist, dann hat die „SSH-Datei“ dazu geführt, dass der SSHD beim booten automatisch läuft (auch in Zukunft) und die wpa_supplicant.conf befindet sich nun dort, wo sie hingehört: /etc/wpa_supplicant/wpa_supplicant.conf

  8. @Mr. AtiX

    Bevor du vor zu viel Kopfschütteln ein Schleudertrauma bekommst:

    1) Das ist eine Anleitung für die ERST-Inbetriebnahme ohne dass Tastatur und Monitor an der PI angeschlossen sind. Da tut man sich ein wenig schwer, Befehle auf der Konsole auszuführen …

    2) Die Dateien ssh und wpa_supplicant.conf werden nach dem Start vom System automatisch aus dem /boot Verzeichnis gelöscht, weil sie nur zur Konfiguration benötigt werden …

    Dass danach noch andere Schritte notwenig sind, um das System abzusichern ist selbstverständlich. Hier gehts aber darum, wie man überhaupt mal aufs System kommt.

  9. Übrigens – bei einem RASPI Zero ohne WLAN geht’s headless auch mit einem mikro-USB auf Ethernet Adapter. Praktisch sind auch die die gleich noch einen USB Hub mit z.B. 3 weiteren Ports eingebaut haben. Da brauchts dann nur die leere „ssh“ Datei zusätzlich auf der MikroSD Karte. Und natürlich ein Netzwerkkabel ..

  10. Guten Morgen,
    Ich habe auch einige Stunden erfolglos versucht, den headless-setup durchzuführen.
    So war ich schliesslich erfolgreich:
    Zero durch usb-hub mit einer tastatur und Maus verbunden, mit hdmi-adapter an einen Bildschirm angeschlossen. Anschliessend habe ich die WLAN-Einrichtung im Zuge des Installationsprozesses mit dem NICHT headless-Image durchgeführt. Dann habe ich die wpa_supplicant.conf kopiert und den hier beschriebenen Ablauf für headless mit der kopierten wpa_supplicant durchgeführt. Vorteil: Alle Einträge in der wpa_supplicant (Zeilenenden, ssid, Verschlüsselung, Ländercode, …) sind korrekt und funktionieren.

  11. @Robert Stiller: Die Quelldatei wird zwar gelöscht, aber das Klartextpasswort ist danach in der Datei „/etc/wpa_supplicant/wpa_supplicant.conf“ einsehbar => kein guter Zustand, oder?

    @Mr. Atix: Der Vorschlag „$ sudo wpa_passphrase „WLAN SSID“ „WLAN PASSWORT“ >> /etc/wpa_supplicant/wpa_supplicant.conf“ führt dazu, dass
    a) das „wpa_passphrase“-Kommando mit SUDO ausgeführt wird, das „Anhängen“ an „wpa_supplicant.conf“ mit user-Rechten, dh. es schlägt fehl.
    a.1) zudem werden Anführungszeichen als Teil der SSID bzw. des Passworts interpretiert, so dass der Befehlsvorschlag zu für unbedarfte User fehlerhaftem Ergebnis führt.
    a.2) Richtig wäre z.B.
    sudo sh -c ‚wpa_passphrase SSID PASSWORT >> /etc/wpa_supplicant/wpa_supplicant.conf‘
    b) allerdings wäre auch dies Kamikaze, da das „wpa_passphrase“-Kommando das Klartextpasswort auskommentiert in den generierten Configvorschlag übernimmt, dh. man hat absolut nichts gewonnen.

    $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
    country=DE
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1
    network={
    ssid=“SSID“
    #psk=“PASSWORT“
    psk=a76a8dce6a07582a553c35baa7bc1de6e3763b4a4354e53b769602cf608ac14e
    }
    b.1) daher hier noch der Hinweis, die Zeile mit „#psk“ manuell zu löschen.

    @Webmaster Christopn:
    Bitte bei Hinweisen auf die Unvollständigkeit anderer User nicht mit einem „Scope“ argumentieren, der im Artikel nicht enthalten ist 😉

    Der zu ergänzende Scope könnte lauten: Dies ist eine unvollständige Anleitung deren Umsetzung zu einem möglicherweise nicht für den praktischen Einsatz geeigneten Raspberry-Pi führt. Die Aufzählung der noch erforderlichen Schritte würden den Rahmen dieses Artikels sprengen. Bitte informieren sie sich im Internet.

    Meine 2ct, sorry für den ungebetenen Ratschlag.

    Mir hat ihr Beitrag dennoch geholfen – ich bedanke mich!

  12. Hallo,
    mit dem aktuellen Imager (1.7.3) braucht man diese (gute und knappe!) Anleitung nicht mehr, der Imager fragt diese Daten jetzt direkt in der Software ab und schreibt alles sauber auf den Pi Zero W beim Erstellen der SD-Karte.

    • Hallo,
      der Imager hat das bei mir leider nicht richtig übernommen. Daher war die Anleitung doch nochmal sinnvoll. Einfach auf der SD Karte in /etc/wpa_supplicant die conf-Datei editieren (sudo!) und die fehlenden Zeilen ergänzen.
      Nach dem Start wird offensichtlich die psk in der Datei auch automatisch verschlüsselt.

  13. vielen Dank für den Beitrag. Mit Notepad++ habe ich die Dateien erstellt und unter „Bearbeiten-Format Zeilenende UNIX(LF) eingestellt. GROUP=netdev“ habe ich auch weggelassen. Damit hat der PI zero einwandfrei in mein WLan gebootet 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert