Raspberry Pi Zero OTG Mode

  • Tach'chen,


    nachdem ich gestern auf der Maker Faire in Berlin einen PiZero ergattert habe, musste ich heute mal den OTG Mode ausprobieren.
    inzwischen gibt es ja ganz passable Anleitungen z.B. und es ist mir
    gelungen mich unter Linux mit dem Zero über das usb0 ethernet device zu verbinden. Mit den korrekten Einstellungen
    fürs IP-Forwarding kommt der Zero auch über den host-pc ins Internet. Ich wollte nun ein script schreiben um diesen
    Prozess zu automatisieren.



    Leider ändert sich bei jedem Neustart die MAC-Addresse von usb0, so dass sich der NetworkManager nicht automatisch verbinden
    kann - irgendwie nervig!


    Die Forensuche war zwar ergebnislos, aber vielleicht kennt jemand von euch einen Trick, wie man eine feste MAC Adresse
    für den DWC OTG Controller vergeben kann. Eine Modul-option scheint es nicht zu geben und


    Code
    1. ip link set dev usb0 address XX:XX:XX:XX:XX:XX


    wird ignoriert. dmesg zeigt mit immer wieder an, dass eine random address verwendet wird.




    Jemand 'ne Idee?


    Beste Grüße,
    /luetzel

  • Möchtest du eine static MAC weil dem Pi sonst ständig eine andere IP zugewiesen wird? Wenn ja, dann stell einfach eine static IP ein:


    Code
    1. echo -e "interface usb0 \nstatic ip_address=192.168.0.20" | sudo tee -a /etc/dhcpcd.conf


    //EDIT:


    Alternativ:

    Code
    1. nano /etc/network/interfaces


    Code
    1. allow-hotplug usb0
    2. iface usb0 inet static
    3. address 192.168.0.20
    4. netmask 255.255.255.0
    5. network 192.168.0.0
    6. broadcast 192.168.0.255
    7. gateway 192.168.0.1


    Oder:

    Code
    1. echo 'options g_ether host_addr=26:7f:62:5c:48:86 dev_addr=d6:fe:44:ad:8f:13' >> /etc/modprobe.d/g_ether.conf
    Quote

    host_addr determines the MAC-address on the PC-side of the connection, and dev_addr determines the MAC address on the PiZero-side of the connection


    Oder in der cmdline.txt nach dem Eintrag " rootwait modules-load=dwc2,g_ether " das eintragen:

    Code
    1. g_ether.dev_addr=11:22:33:44:55:66

    ACHTUNG: Keine neue Zeile sondern alles in einer Zeile!


    Als besser und sicherer gilt aber die Methode über /etc/modprobe.d/g_ether.conf da die cmdline.txt evtl. mal überschrieben werden könnte.


    Bevor irgendein Wert für die MAC eingetragen wird, lieber die aktuelle ermitteln und die dann eintragen:

    Code
    1. dmesg -T | grep MAC



    Ich empfehle auch mal das zu lesen:

    https://learn.adafruit.com/tur…anced-networking-fixed-ip
    https://github.com/raspberrypi/linux/issues/1212
    http://wiki.openmoko.org/wiki/USB_Networking

    http://raspberryjamberlin.de/z…berry-pi-zeros-to-a-pi-3/

  • Hi


    hier http://blog.gbaman.info/?p=791 hat jemand gepostet, dass man die MAC-Adressen in der cmdline.txt. angeben kann, mit
    “g_ether.host_addr=xx:xx:xx:xx:xx:xx g_ether.dev_addr=xx:xx:xx:xx:xx:xx”


    hab das selbst leider noch nicht ausprobieren können.


    Unter Mint ist es bei mir so, dass jedesmal eine neue Verbindung angelegt wird. Darum würde ich auch gerne eine fixe Mac-Adresse setzen.
    Hast du eine Ahnung warum ich "Nur per Link-Local" auswählen muss.
    Mit einer Fixen IP über interfaces könnte es vielleicht auch gehen, bin mir nicht sicher ob ich das schon versucht habe. Die müsste dann aber auch zur Zero passen - sonst gibts ein komisches Verhalten. Ich wollte das aber über die GUI machen.


    Ich hab noch nicht das optimale Setting für mich gefunden, muss da noch herumprobieren.


    Auch unter Windows bin ich nicht zufrieden, ohne Bonjour ist das recht mühsam, geht aber wenn Zero und PC eine statische IP haben.


  • Hi meigrafd,


    besten Dank dafür, Deine Links hatte ich zwar schon mal auf dem Schirm, hab' die Zeile mit der Modul-Option jedoch nicht gefunden/ übersehen.
    Manchmal ist man einfach :auslachen: textblind! Konnte mir ehrlich gesagt gar nicht vorstellen, dass keine Optionen für das Modul existieren.



    Habe das gerade ausprobiert und funktioniert. der SuSE Connection Manager verbindet sich nun automatisch. Vorher funktionierte
    es nicht, weil usb0 bei jedem Booten des Zero die MAC gewechselt hat. (IP ist mir nicht so wichtig, weil man sich über hostname.local
    einloggen kann)


    Danke,
    /luetzel

  • Über Windows und Bonjour lief bei mir gar nichts, erst als ich dem Pi ne feste IP gegeben hatte lief es. Dabei fiel mir wieder auf wie sehr ich Debian Jessie mit systemd ablehne. ;)

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

    Edited once, last by dbv ().


  • Über Windows und Bonjour lief bei mir gar nichts, erst als ich dem Pi ne feste IP gegeben hatte lief es. Dabei fiel mir wieder auf wie sehr ich Debian Jessie mit systemd ablehne. ;)


    Windows 7 habe ich heute Vormittag kurz mit dem PiZero testen können. Das war hier ein ziemliches "Gefrickel", weil sich Windows weigerte den RNDIS Treiber zu installieren,
    mit den typischen Fehlermeldungen, von wegen "kann Gerät nicht erkennen" usw. Nach einem Reboot des PiZero funktionierte es dann plötzlich und ich bekam ein Netzwerk-Adapter angezeigt (IP wurde automatisch vergeben).


    Mit Putty und hostname.local konnte ich mich jedoch nicht einloggen, das funktionierte erst nach Installation von Bonjour, dass ich mit 7zip aus dem aktuellen iTunes-Installer extrahiert hatte. Als separaten Download scheint es Bonjour für Win ja nicht zu geben.


    Ist eigentlich schade, dass das unter Windows nicht out-of-the-box funktioniert, denn der OTG-Mode wäre ja gerade für Raspi-Kurse/ Schulunterricht interessant, weil Kosten und Installationsaufwand vergleichsweise gering sind (kein Netzteil, Wifi-Dongle), einmal abgesehen von der Lieferbarkeit des Zero ...


    Problem war bei mir nicht systemd, sondern eher die "zugenagelten" Win-PCs mit "Dr. Kaiser PC-Wächter Karte" im Computerkabinett ...


    /luetzel

  • Bonjour einzeln gibts u.a. bei Chip (ich die Seite meide wo es geht). Wie gesagt unter Win10 ging nix, obwohl der NDIS Treiber nach manueller Installation zu funktionieren schien. Ist echt ne Qual das halbwegs zügig und nachvollziehbar zum laufen zu kriegen. Warum kann es nicht ein einfaches Flag geben, welches man setzen kann. Nein, man muss x Datein editieren und noch nen Service laufen haben.

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

    Edited once, last by dbv ().

  • Bonjour gibts bei Apple zum runter laden.
    https://support.apple.com/kb/DL999?locale=de_AT


    Bin damit auch ned so glücklich, aber die fix IP- kann man aus Windows nicht einstellen - da braucht man dann ein Linux um auf die zweite Linux Partition zugreifen zu können.
    Ich wills auch für einen Raspi-Workshop verwenden. Aber ohne Eingriffe auf Host und Pi gehts nicht. Also werde ich die Images vorkonfiguriert ausgeben. Einrichtung ist nicht zumutbar bzw. würde zuviel Zeit in Anspruch nehmen.
    Hier muss ich dann gleich mal sagen das die Installation von Raspbian unter Linux sowieso ein graus ist. Windows: Programm starten, SD rein, Image brennen, fertig.
    Linux: https://www.raspberrypi.org/do…nstalling-images/linux.md
    Für Anfänger ungeeignet - was ist wenn jemand dd /dev/sda nimmt statt der SD Karte?

    Edited once, last by evil ().

  • Für diejenigen von euch, die die Foren-Suche bemühen hier noch ein kurzes Update zum OTG-Mode.


    Leider hat sich bei meinem Zero das Problem eingeschlichen, dass trotz des Eintrags einer festen HW
    Adresse in der /boot/cmdline.txt bzw. /etc/modprobe.d/g_ether.conf, bei jedem zweiten
    Kaltstart dem usb0 device eine zufällige HW-Adresse zugewiesen wurde. :s


    Keine Ahnung was genau dieses Verhalten bewirkt. Vielleicht kennt jemand von euch den Grund?


    Jedenfalls hat sich der NetworkManager meines Linux Host-PC wegen der geänderten HW-Adresse
    nicht mehr automatisch mit usb0 verbunden und ließ sich auch nicht mit der neuen, zufälligen
    Adresse dazu bewegen :wallbash: Leider musste ich jedes Mal das Kabel abziehen und wieder anschließen,
    was der SD-Karte nicht unbedingt gut getan hat ...


    Deshalb mein Tipp für diejenigen, die sich auch damit herumschlagen:
    Abstellen lässt sich dieses Verhalten durch einen weiteren Eintrag in der /etc/rc.local:

    Code
    1. ifconfig usb0 hw ether aa:bb:cc:dd:ee:ff



    /luetzel

  • Ich hab keine Probleme bei mir funktioniert die MAC Angabe einwandfrei. Mint erkennt immer die gleiche Verbindung.
    Ich verwendet die IP-Adressvergabe über /etc/dhcpcd.conf , das ist für mich die beste Variante bei anderen hatte ich immer irgendwelche Probleme.
    Verwende IP 192.168.1.137 für Host und 192.168.1.10 für die Zero weil das beim Internet Routing unter Windows benötigt wird.


  • Ich hab keine Probleme bei mir funktioniert die MAC Angabe einwandfrei. Mint erkennt immer die gleiche Verbindung.


    Tach'chen,


    Ja, keine Frage, feste IP usw habe ich ja auch alles eingestellt. Ich konnte das Problem inzwischen auf dem Raspberry Jam in Berlin
    mit anderen Nutzern diskutieren. Der Fehler tritt sporadisch auf und es ist nicht jeder Zero davon betroffen. Grund dafür konnte
    mir niemand nennen. Das ist zwar unbefriedigend, aber James Mitchell konnte mir dann noch den Tipp geben, dass man eine udev-rule
    dafür anlegen kann. Das network device bleibt unabhängig von der MAC dann immer usb0. Weil sich die MAC bei mir immer geändert
    hat, wurde vom NM immer ein neues Device erkannt, obwohl es ja immer noch das alte war.
    Mit der udev-rule funktioniert es nun an all meinen Host-Rechnern :thumbs1:


    Code
    1. SUBSYSTEM=="usb", SYSFS{idVendor}=="0525", SYSFS{idProduct}=="a4a2", NAME="usb0"


    Edit: Ausführlich kann man das noch im Blog-Beitrag zur PanoCam nachlesen.


    Beste Grüße,
    /luetzel