Raspberry Pi zero als USB-Speicherstick (funktioniert nicht)

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hi

    Vorweg, ich bin Linux-DAU.

    Ich kann nach Anleitung Befehle eingeben und Dateien ändern, aber verstehe nicht wirklich, was ich da tue.

    Zum Problem:

    Im Internet gibt es eine Menge Anleitungen, wie ich einen Raspberry Pi zero zu einem USB-Speicherstick mache.

    Ich habe davon etliche mit aktuellem RaspiOs lite (und auch full) ausprobiert.
    Alle haben eines gemeinsam: Sie funktionieren nicht!
    Auf der Raspi-Seite scheint alles zu funktionieren, der Speicher ist da, ich kann Dateien reinspeichern und auslesen.
    Aber am PC (Win7 und Win10) wird der USB-Stick nicht erkannt. Der PC findet zuerst ein unbekanntes USB-Gerät und läd auch noch den Linix-USB-Gadget-Treiber. Dann nichts weiter.
    In der Datenträgerverwaltung wird der Pi dann als unzugeordneter, nicht initialisierter und schreibgeschützter Speicher angezeigt.

    Woran liegt das? Was mache ich falsch?
    Gibt es Links zu Anleitungen, die funktionieren?

    bd. Alv

  • Raspberry Pi zero als USB-Speicherstick (funktioniert nicht)? Schau mal ob du hier fündig wirst!

  • Wenn Du am Windows PC einen Stick (oder SD) ansteckst, dessen Partition mit EXT4 formatiert ist, wirst Du auch nichts sehen.

    Wenn Du das root-Filesystem des Zero als USB Laufwerk verwenden willst, musst Du mit Linux (anderem Pi) darauf zugreifen.

    Oder einem speziellen Windows Programm, das als USB Laufwerk Linux EXT4 lesend und schreibend versteht.

    Servus !

    RTFM = Read The Factory Manual, oder so

  • Da wir nicht wissen welche Anleitung Du schon versucht hast, funktioniert vielleicht diese hier: https://magpi.raspberrypi.org/articles/pi-ze…usb-flash-drive

    Ok, nehmen wir die als Beispiel.

    Der Raspi0 steckt als USB-Stick in meinem PC.

    Bedient wird er per WLan mittlels Putty/ssh.

    Verwendet habe ich RaspiOs lite vom März/21

    Angefangen habe ich bei Step 04

    Step 05:

    Win7 vermeldet "unbekanntes USB-Gerät"

    Step 06:

    Statt in den Fenseher habe ich den Pi einmal aus dem PC rausgezogen und wieder reingesteckt

    Step 09:

    Unterstrich bei "usbshare" fehlt und die Downloaddatei ist nicht mehr vorhanden.

    Step 10:

    Nichts tut sich, außer daß im der Datenträgerverwaltung ein "Datentröger 0", unbekannt, nicht initialisiert, 2GB nicht zugeordnet, auftaucht.

    Bei "sudo modprobe -r g_mass_storage" verschwindet er wieder.

    Step 11- brauche ich für diesen Test nicht.

    Ein erneutes aus-/einstecken des Pi erzeugte wieder die Meldung "unbekanntes USB-Gerät", ohne Datenträger in der Datenträgerverwaltung.

    Vermutlich muß die Zeile "sudo modprobe g_mass_storage file=/piusb.bin stall=0 ro=1" noch in irgendeine Systemdatei.

    Genau so lief bisher jeder Versuch ab.

    bd. Alv

  • Moin!

    Dann geb dir Mühe.

    Ich bekomme es händisch hin, aber nicht automatisch.

    Lösung interessiert mich auch.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Moin hyle,

    ich habe mit "sudo modprobe -v g_mass_storage file=storage" das Teil gestartet. Dann "sudo poweroff". An einen Win-Rechner und angesteckt. Nix, wie beim User. Dann per SSH auf den RPi und wieder modprobe. Nun wurde der RPI als Laufwerk erkannt.

    Ich habe "/etc/modprobe.d/Stick.conf" eingerichtet damit es durch systemd gestartet wird, aber es greift nicht. Habe nochwas getestet, bekomme ich nun aber nicht mehr aus dem Kopp hin.

    Soweit meine Erkenntnisse....

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

    • Offizieller Beitrag

    Dann per SSH auf den RPi und wieder modprobe.

    Was passiert, wenn Du den modprobe-Befehl direkt in eine Systemd Unit steckst, diese aktivierst und somit beim Systemstart ausführen lässt?

  • Moin!

    Habe ich nicht probiert.

    Du meinst so eine oneshot.service?

    muss ich mal probieren

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Jetzt wird es zu kompliziert für mich.

    Ich gehe davon aus, daß die Anlieitungen irgendwann mal funktioniert haben, also muß sich irgendwas geändert haben.
    Nur was und wo?

    Hat sich an den Raspberry Pi zero W mal was geändert?

    Oder am RaspoOS? Aber ich habe auch mal ein altes Jesse-Image probiert, ohne Erfolg...

    bd. Alv

  • muss ich mal probieren

    Probier mal auch mit der "/etc/modules"-Datei. Z. B.:

    Code
    :~ $ cat /etc/modules
    # /etc/modules: kernel modules to load at boot time.
    #
    # This file contains the names of kernel modules that should be loaded
    # at boot time, one per line. Lines beginning with "#" are ignored.
    #

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    • Offizieller Beitrag

    Mit

    Code
    sudo modprobe g_mass_storage file=/piusb.bin stall=0 removable=1 iSerialNumber=1234567890

    habe ich es jetzt halbwegs hinbekommen, dass das Laufwerk am Win10 als solches erkannt wird. Erst erscheint zwar noch eine Meldung, dass ein Problem damit besteht, aber dann wird es geöffnet.

    Jetzt versuche ich noch den 13. Schritt.

    Btw. Da ist dem Autor der Anleitung im Step 09 ein Fipptehler passiert. Hier fehlt ein Unterstrich "cd /mnt/usb_share". Aber das Video scheint eh nicht mehr zu existieren.

    • Offizieller Beitrag

    So, also bei mir läuft es jetzt auf einem RPi Zero W mit aktuellem Raspberry Pi OS Lite.


    Ich habe noch ein paar kleine Anpassungen gemacht.

    Hier meine Notizen dazu:


    # Treiber aktivieren

    sudo nano /boot/config.txt und folgendes hinzufügen:

    Code
    dtoverlay=dwc2

    sudo nano /etc/modules und folgendes hinzufügen:

    Code
    dwc2

    ##########

    # Container erstellen und formatieren

    sudo dd bs=1M if=/dev/zero of=/piusb.bin count=2048

    sudo mkdosfs /piusb.bin -F 32 -I


    ##########

    # Container mounten

    sudo mkdir /mnt/usb_share

    sudo nano /etc/fstab und folgendes hinzufügen:

    Code
    /piusb.bin /mnt/usb_share vfat users,umask=000,nofail 0 2

    mounten mit:

    sudo mount -a


    ##########

    So, erster Test:

    sudo modprobe g_mass_storage file=/piusb.bin stall=0 removable=1 iSerialNumber=1234567890

    im Windowslaufwerk Textdatei erstellt und was reingeschrieben.

    Dann das Laufwerk wieder ausgehängt:

    sudo modprobe -r g_mass_storage

    ##########

    # zwischendurch mal ein Neustart des RPi

    sudo reboot

    ##########

    Samba habe ich nicht installiert, also weiter mit Step 13

    # pip3 installieren

    sudo apt update && sudo apt install python3-pip

    # watchdog installieren

    sudo pip3 install watchdog

    # Skript runterladen, verschieben und ausführbar machen

    cd /usr/local/share

    sudo wget http://rpf.io/usbzw -O usb_share.py

    sudo chmod +x usb_share.py

    Das Skript angepasst

    sudo nano /usr/local/share/usb_share.py

    Zeile 7 ist jetzt

    Python
    CMD_MOUNT = "modprobe g_mass_storage file=/piusb.bin stall=0 removable=1 iSerialNumber=1234567890"

    und Zeile 12

    Python
    ACT_EVENTS = [DirDeletedEvent, DirMovedEvent, DirCreatedEvent, FileDeletedEvent, FileModifiedEvent, FileMovedEvent, FileCreatedEvent]

    (Den * import und os.system habe ich erstmal so gelassen.)


    ##########

    Systemd Service erstellen

    cd /etc/systemd/system

    sudo nano usbshare.service

    Code
    [Unit]
    Description=USB Share Watchdog
    
    [Service]
    Type=simple
    ExecStart=/usr/local/share/usb_share.py
    Restart=always
    
    [Install]
    WantedBy=multi-user.target

    sudo systemctl enable usbshare.service

    sudo systemctl start usbshare.service

    Und nochmals neu gestartet

    sudo reboot

  • Moin!

    Und nun noch meinen Weg.

    In der /boot/config.txt habe ich

    Code
    [OTG-Device]
    dtoverlay=dwc2,dr_mode=otg

    eingetragen.

    Dann die Containerdatei erstellt.

    sudo dd if=/dev/zero of=/test.bin bs=1M count=1024

    und das Filesystem drauf gepackt:

    sudo mkdosfs /test.bin -F 32 -I.

    Dann auf Fehler geprüft mit

    sudo modprobe g_mass_storage file=/test.bin stall=0 removable=1. Wenn keine Fehlermeldung mit

     sudo modprobe -r g_mass_storage

    wieder ausgeschaltet.

    In der /etc/modules steht nun das drin:

    Code
    # /etc/modules: kernel modules to load at boot time.
    #
    # This file contains the names of kernel modules that should be loaded
    # at boot time, one per line. Lines beginning with "#" are ignored.
    g_mass_storage

    Dann eine Datei erstellt .

    sudo nano /etc/modprobe.d/g_mass_storage.conf

    Der Inhalt der Datei:

    options g_mass_storage file=/test.bin stall=0 removable=1.

    Nun poweroff, Usb-Kabel auf der OTG-Buchse stecken und zum Win-Rechner gehen. Dort erscheint der RPi, bei mir, als Laufwerk D:.

    Der RPi wird aber auch unter Linux als Stick erkannt. Zumindest mit Archlinux. Debian habe ich nicht getestet.

    Was man nicht machen sollte, ist die Containerdatei dauerhaft mounten. Habe es nicht getestet.

    73 de Bernd

    /EDIT Aktuelles Raspberrypi OS Lite

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

    Einmal editiert, zuletzt von Bernd666 (25. Juli 2021 um 17:42)

  • Wird da nicht ein OTG Kabel benötigt ??

    ;) Gruß Outi :D
    Pis: 2x Pi B (Rente) / 1x Pi B+ (Rente) / 1x Pi 2 B (Rente) / 2x Pi 3 B (RaspberryMatic / Repetier Server) / 2x Pi Zero 1.2 (B. Lite) / 2x Pi Zero 1.3 (B. Lite) / 2x Pi Zero W 1.1 (B. Lite) / 1x Pi Zero 2 (mal so, mal so) / 1x Pi 3 B+ (Tests) / 1x Pi 4 B 4GB (BW Lite (Webserver)) / Pi 400 (BW) / 1x Pi 5 (BW) / 2x Pi Pico / 2x Pi Pico W
    Platinen: Sense HAT / HM-MOD-RPI-PCB / RPI-RF-MOD / PiFi DAC+ V2.0 / TV HAT / Pi 5 Kühler HAT
    Kameras: orig. Raspberry Pi Camera Module V1 & V3 / PS3 Eye

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!