Raspberry Pi Zero [W] SSH per USB-LAN ohne Tastatur/Monitor

Der Raspi Zero hat eine coole neue Funktion, die ein virtuelles Netzwerk Gerät per USB emuliert und es per Avahi/Bonjour bereitstellt. Damit ist es möglich den Pi Zero per USB an einen PC anzuschließen und dieser erkennt ihn als virtullen USB Ethernet Adapter.img_6656.jpg

Somit kann man per SSH auf den Raspi ohne Tastatur/Maus und Montior von einem Host-PC aus zugreifen.

Zuerst installiert man ein aktuelles Raspbian Image (Jessie) auf eine MicroSD-Card: https://www.raspberrypi.org/downloads/raspbian/

Mit dd wird das Image auf die Karte geschrieben:

sudo dd if=2016-05-27-raspbian-jessie-lite.img of=/dev/sdX bs=4M
sudo sync

(/dev/sdX durch das korrekte Device ersetzen)

Bevor man nach dem Aufspielen des Image die SD-Card in den Raspi Zero einlegt und bootet, müssen noch zwei Files angepasst werden, um das USB Netzwerk Modul beim Booten zu aktivieren. Dazu mountet man die erste Partition der SD-Card (Raspbian Boot-Partition) an einem Linux-PC. Bei mir werden beide Partitionen beim Einlegen der SD-Card automatisch gemountet und die boot Partition /dev/sdc1 wird unter /run/media/juergen/boot eingebunden.

Dann fügt man „dtoverlay=dwc2“ in der config.txt als neue Zeile am Ende an:

sudo echo "dtoverlay=dwc2" >> /run/media/juergen/boot/config.txt

Anschließend wird noch die Datei cmdline.txt angepasst, indem man hinter rootwait folgendes einfügt: modules-load=dwc2,g_ether
Damit sieht die Zeile komplett so aus:

sudo vi /run/media/juergen/boot/cmdline.txt 

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait modules-load=dwc2,g_ether quiet init=/usr/lib/raspi-config/init_resize.sh

Jetzt erst steckt man die SD-Card in den Raspi, verbindet ein Micro-USB Kabel mit dem USB-Anschluss des Pi Zero und das andere Ende steckt man in die USB-Buchse des PC (Hinweis: Bei mir haben nicht alle USB/Micro-USB Kabel funktioniert! Z.B gab es mit bestimmten USB-Ladekabeln Probleme).
Der erste Bootvorgang vergrößert automatisch die Partition und dauert deshalb etwas länger. Nach spätestens 90 Sekunden sollte aber am PC ein USB-Ethernet Gerät erscheinen:

USBEthernet1

In den Einstellungen der Netzwerkverbindung ändert man unter IPv4 die Adresse auf „Nur Link-Lokal“ USBEthernet2

Anschließend sollte das USB-Ethernet Gerät eine 169.x.y.z IP Adresse bekommen.

USBEthernet3

Sollte das nicht funktionieren, überprüft man, ob der Avahi Daemon installiert und der Dienst gestartet ist.

sudo systemctl status avahi-daemon
● avahi-daemon.service - Avahi mDNS/DNS-SD Stack
   Loaded: loaded (/usr/lib/systemd/system/avahi-daemon.service; enabled; vendor preset: enabled)
   Active: active (running) since Mi 2016-08-31 10:54:42 CEST; 1 day 12h ago
 Main PID: 912 (avahi-daemon)
   Status: "avahi-daemon 0.6.32 starting up."
   CGroup: /system.slice/avahi-daemon.service
           ├─912 avahi-daemon: running [BlueCloud.local]
           └─938 avahi-daemon: chroot helper

Nun kann man sich vom PC aus per ssh auf die IP-Adresse, oder dem Hostnamen raspberrypi.local verbinden:

ssh pi@raspberrypi.local

 

Inspiriert durch: http://blog.gbaman.info/?p=791

2 Kommentare

  1. Hallo Tüfftler,…
    ich versuche einen Pi zero (Name A ) mit einem weiteren Pi zero (Name B) auf diese Art zu verbinden.
    Frage der avahi daemon muss der auf A oder B laufen?

    Mein Ziel ist es auf dem einem Pi (A) eine Kamera laufen zu lassen und diese per „export Display“ über usb an den anderen PI (B) zu verzögerungsfrei zu übertragen. Strecke ca 1,5m WLAN/Bluetooth geht nicht weil verzögert
    Beste Grüße
    Mahel Alt

    1. Hallo Mahel, entschuldige meine späte Antwort. Ich hab deinen Kommentar leider erst jetzt gelesen. Der AVAHI Deamon muss auf dem Rechner laufen, von dem aus die Steuerung erfolgen soll, also in deinem Beispiel Raspi B. Der AVAHI Daemon ist eine Art ZeroConf-Client der es ermöglicht ohne Konfiguration sehr leicht Netzwerkgeräte miteinander zu verbinden. Er findet damit automatisch den Raspi A der per USB angeschlossen ist, weil dieser eine ZeroConf Adresse 169…. bereitstellt. Ich hoffe ich konnte dir damit weiterhelfen.

Schreibe einen Kommentar zu Jürgen Wich Antworten abbrechen

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.