Raspberry Pi Zero W und die OTG Funktion

Der neue Raspberry Pi Zero W wurde am 28. Februar 2017 vorgestellt. . Dieser verfügt nun über Wifi und Bluetooth On Board, dh. es sind keine externen Geräte wie Wifi-Stick etc. nötig. Unter anderem verfügt der neue PI Zero W über eine OTG-Schnittstelle.

OTG steht für “On The Go”, was soviel heißt wie “USB für unterwegs. Es gibt sogar eine Zertifizierung und ein eigenes Logo dafür. Mit dieser Technik kann man externe Geräte wie “Festplatten, Webcam, Speicher, Drucker usw.” an OTG taugliche Geräte anschließen. Dh. man benötigt nicht noch zusätzlich einen USB-Hub oder andere Zwischenlösungen um externe Geräte z.B. an ein Smartphone oder Tablet anzuschließen. Die Treiber sind oftmals in den Betriebssystemen wie Windows und Linux schon enthalten.

Nun hat der neu Pi Zero / und Zero W die Möglichkeit genau diese Schnittstelle zur Verfügung zu stellen. Ein Einsatz Szenario wäre z.B. , dass man ein Entwicklungssystem wie Node-Red, PHP, oder Cloud9 immer und überall dabei hat. Da der Raspberry oft Hatless betrieben wird also ohne Bildschirm und Tastatur ist es sinnvoll sich mit dem Raspberry irgendwie zu verbinden. Ja sicher man könnte Hostapd installieren denken sicher einige Leser . Ja, aber dann ist diese Schnittstelle verwirkt für zusätzliche WLAN-Anbindungen unterwegs. Elegant ist da doch die USB-Verbindung, weil damit sogar der Raspberry mit Strom versorgt wird. Dh. wir versorgen den Minicomputer mit Strom und haben eine direkte Netzverbindung.

Die Verbindung nennt sich auf Ethernet over USB. Wenn die nötigen Treiber und Konfigurationen vorhanden sind, kann man ganz einfach mit “ping 192.168.7.2” oder “ssh 192.168.7.2” den Rechner erreichen. Das Programm “Putty” ist unter Windows schnell mal installiert und schon hat man direkt Zugriff auf die “Command Line” Ebene oder auch Webdienste wie Node-Red, Apache und noch mehr.

Diese Modelle funktionieren NICHT, denn:

  1. die Schnittstelle auf dem Raspberry 2/3 nicht vorhanden ist
  2. die Stromaufnahme von 500 mA überschritten wird.

Der PI Zero W liegt bei einer ungefähren Stromaufnahme von 100 bis 200 mA und liegt somit in der USB-Spezifikation von max. 500mA pro USB-Schnittstelle.

Wir konfigurieren nun den Raspberry Pi Zero / Zero W:

Hier ist der Eintrag “modules-load=dwc2,g_ether” wichtig., genau so an dieser Stelle und in dieser Reihenfolge wie abgebildet. Mach es einfach so wie es hier steht und nicht anders bitte, Danke 🙂

sudo vi /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 splash plymouth.ignore-serial-consoles
sudo vi /boot/config.txt

dtoverlay=dwc2

Dann erstellen wir eine neue Schnittstelle :

allow-hotplug usb0
iface usb0 inet static
	address 192.168.7.2
	netmask 255.255.255.0
	network 192.168.7.0
	broadcast 192.168.7.255

Reboot mit “sudo init 6” , dann wieder über den üblichen Weg per SSH oder HDMI anmelden. Es sollte nun ein neues Interface vorhanden sein:

USB-OTG-Schnittstelle-Raspberry-Pi-Zero-W-1
USB-OTG-Schnittstelle
 Jetzt gibt es eine ganz wichtige Sache. Wie unten im Bild angezeigt, funktioniert OTG nur an dem USB Port und nicht an dem ersten Power-USB Port. BITTE nur dort anschließen, sonst funktioniert es nicht.

 

 Im zweiten Teil , zeige ich Dir wie Du diesen Raspberry Pi Zero W mit Windows verbindest. Hierzu muss ein Treiber installiert werden. Unter Linux sollte es direkt ohne Installation funktionieren.
Viel Spaß wünscht Dir Joachim

 

19 Kommentare

  1. Nettes Feature. Die OTG-Treiber des Linux-Kernels stellen auch einen Massenspeicher bereit, mit denen ein Dateisystemimage als Blockdevice an den Host freigegeben werden kann. Damit ist einfacher Dateitransfer möglich.

    Scahde, dass die Raspberrys keinen Mixed Mode uterstützen (OTG auf einem Port, Host auf den anderen). Das können bspw. Allwinners A20, womit es möglich ist, USB-Sticks per OTG durchzureichen.

  2. Ja die kann der Pi Zero auch , musst eben im Kernel aktivieren:

    Serial (g_serial)
    Ethernet (g_ether)
    Mass storage (g_mass_storage)
    MIDI (g_midi)
    Audio (g_audio)
    Keyboard/Mouse (g_hid)
    Mass storage and Serial (g_acm_ms)
    Ethernet and Serial (g_cdc)
    Multi (g_multi) – Allows you to configure 2 from Ethernet, Mass storage and Serial
    In addition to the above modules, a few other (less useful) modules are included.
    Webcam (g_webcam)
    Printer (g_printer)

    g_mass_storage – To have your Pi Zero appear as a mass storage device (flash drive), first create a mini filesystem in a file on your Pi with sudo dd if=/dev/zero of=/piusb.bin bs=512 count=2880 and set it up as a fat32 filesystem with sudo mkdosfs /piusb.bin. Then, when enabling it, add file=/piusb.bin stall=0 onto the end, for example sudo modprobe g_mass_storage file=/piusb.bin stall=0.

    1. Ich habe meinen Pi Zero jetzt richtig eingerichtet, er wird von Windowsauch erkannt. Mir fehlt jetzt nur noch der Treiber, den Windows leider nicht findet. Weiß jemand, wo man den Treiber downloaden kann?

    2. Mit g_midi und g_hid bin ich klargekommen, aber für die Verwendung von g_audio habe ich keine Informationen gefunden. Mein Ziel ist es, einen Raspberry 4 als 4-Kanal Audiogerät (2 * Stereo) erscheinen zu lassen und diese dann über zwei normale USB-Ports auf je einen USB/SPDIF-Wandler aufzuteilen.

    1. Leider funktioniert diese Anleitung nicht unter win 10.
      der Treiber RNDIS ist unauffindbar und die ssh kommt unter Windoof nicht.
      Mit meinem Linux klappt es ohne Probleme.
      Was stimmt nur nicht mit dem OTG bei Windoof?

        1. Hallo,

          hat nun funktioniert. musst mit den treibern etwas fummeln und Bonjour 1-2 mal neu aufspielen, dann hat es auch geklappt mit dem RNDIS.
          Tolle Anleitung 🙂

  3. Hallo Joachim. Vielen Dank für die Anleitung.

    Ist es möglich den PI Zero an einem RPI3 so zu betreiben?

    Meine Überlegung ist den PI Zero mit Kamera an den RPI3 anzuschließen und über den RPI3 auf die Kamera die am PI Zero angeschlossen ist zuzugreifen.

    Liebe Grüße

    1. Hallo Thomas

      ja klar geht , kein Problem. Auf dem Pi3 brauchst nur die grafische Oberfläche starten und dann einen Browser, fertig.

      Grüße , Joachim

  4. Hallo,
    würde den Pi Zero W gerne als USB Stick im Auto verwenden (Autoradio mit USB).
    Welches Dateisystem stellt der Pi als USB Stick zur verfügung? Mein Radio läuft nur mit FAT32.
    Gruß Frank

    1. Hallo Frank

      hab ich oben schon geschrieben in den Kommentaren, hab es selbst nie probiert, kann also dazu nichts weiter berichten.

      g_mass_storage – To have your Pi Zero appear as a mass storage device (flash drive), first create a mini filesystem in a file on your Pi with sudo dd if=/dev/zero of=/piusb.bin bs=512 count=2880 and set it up as a fat32 filesystem with sudo mkdosfs /piusb.bin. Then, when enabling it, add file=/piusb.bin stall=0 onto the end, for example sudo modprobe g_mass_storage file=/piusb.bin stall=0.

      Grüße Joachim

  5. Vielen Dank für diese wunderbare Anleitung. Mich würde interessieren, wie ich gleichzeitig eine WLAN Verbindung konfiguriere. Die per wpa_supplicant.conf bestehende, über die ich auch initial auf das Gerät zugreifen konnte, verbindet nämlich nicht mehr, sobald ich den eintrag in der /etc/network/interfaces geamcht habe. Wie müsste ich vorgehen, um die Schnittstelle gleichzeitig neben einer WLAN Verbindung zu betreiben?

    1. Hab das gleiche Problem.
      Finde die Anleitung toll! Kann vom Ipad über ssh auf den direkt angeschlossenen pi zero zugreifen.
      Jedoch verbindet dieser das wlan nicht mehr. Wenn ich ihn normal an einem Monitor anschliesse funktioniert das wlan wieder…
      Vielleicht gibt es dafür eine Lösung?
      Vielen lieben Dank

      1. Hallo,
        das klappt bei mir so:
        /etc/network/interfaces soll eigentlich seit debian stretch nicht mehr benutzt werden
        stattdessen die Datei /etc/dhcpcd.conf benutzen.
        Dort am Ende folgendes anhängen:
        interface usb0
        static ip_address=192.168.7.2
        #static routers=192.168.7.1
        #static domain_name_servers=192.168.7.1

        Mit route kann man sehen, wie linux routen will.
        pi@raspberrypi:~ $ route
        Kernel-IP-Routentabelle
        Ziel Router Genmask Flags Metric Ref Use Iface
        default fritz.box 0.0.0.0 UG 303 0 0 wlan0
        192.168.1.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0
        192.168.7.0 0.0.0.0 255.255.255.0 U 202 0 0 usb0

        Wenn hier zwei default Ziel stehen, dann klappt es nicht.
        ping 8.8.8.8 läuft dann ins Leere
        ping wlan0 8.8.8.8 würde funktionieren

        Für den Fall, dass man das Internet vom Laptop über USB Kabel an den Pi Zero geben will, muss man die auskommentierten Zeilen aktivieren.

  6. Hallo Joachin, erstmal ganz herzlichen Dank für Deinen wirklich informativen Blog. Ich bin hier per Zufall rein gestolpert und mich interessiert die Lösung “USB over Ethernet” wirklich sehr. Verzeih mir meine sehr simplen Fragen, aber der Zero Pi hat doch 2 Micro-USB-Buchsen. Ich habe noch nie einen USB-Ethernet-Adapter mit Micro-USB -> RJ45 gefunden, nur immer die A-Stecker. Wie hast Du das gelöst? Oder habe ich jetzt etwas ganz falsch verstanden?

    1. Hallo Werner

      es gibt für den Raspberry Zero diesen Adapter-Kit https://amzn.to/2tapKC9 .
      Damit lässt sich jeder USB-Ethernet Adapter anschließen wie in diesem Beispiel
      https://amzn.to/2LNWR5f
      Außerdem besteht die Möglichkeit des Anschluss mit einem USB-Hub. Da können mehrere Geräte angeschlossen werden. Ich schließe da sogar Ethernet und eine USB-Tastatur gleichzeitig an. Damit hat man maximale Möglichkeiten.

      Aber dass ist hier nicht das Thema , sondern es geht hier um Ethernet over USB. Dazu benötigt Du ein einfaches USB-Kabel wie in dem Adapter-Kit vorhanden ist. Also kein Ethernet Adapter. Hiermit kann man jeden Computer mit Linux, Windows oder Mac anschließen. Sofern der Treiber vorhanden oder installiert wird, ist ein zusätzliches Ethernet Gerät vorhanden.

      Grüße , Joachim

Kommentar hinterlassen

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