Raspberry Pi zero als USB-Speicherstick (funktioniert nicht)

  • 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

  • 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

  • Die Partitionen des Pi sollen ja auch nicht auf dem PC nicht angezeigt werden.

    Auf dem Pi befindet sich eine Datei, die ein FAT32-Laufwerk darstellt, das dann per USB auf dem PC ansprechbar sein soll.

    bd. Alv

  • Da wir nicht wissen welche Anleitung Du schon versucht hast, funktioniert vielleicht diese hier: https://magpi.raspberrypi.org/…o-w-smart-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.

  • 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.

  • 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

    • Official Post

    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.

    • Official Post

    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.

    Edited once, last by Bernd666 ().

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

    ;) Gruß Outi :D
    PIs: 2x Pi B (Rente) / 1x Pi B+ (Rente) / 1x Pi 2 B (Tests) / 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 (noch ohne) / 1x Pi 3 B+ (Tests) / 1x Pi 4 B 4GB (Ubuntu Server 64 Bit) / Pi 400 (Bullseye) / 2x Pi Pico
    Platinen: Sense HAT / RPI-RF-MOD / PiFi DAC+ V2.0 / TV HAT

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

    Das wird in den Anleitungen nirgends erwähnt.

    Außerdem gibt es eine Massenspeicher-Variante, die definitiv ohne OTG-Adapter funktioniert.

    bd. Alv