Forum: Projekte & Code RasPi Zero 2W als USB Stick mit Uploadfunktion


von Mw E. (Firma: fritzler-avr.de) (fritzler)


Angehängte Dateien:

Lesenswert?

Hier die Lösung eines "First World Problems".
So langsam hatte ich kein Bock mehr mit USB Sticks rumzuwurschteln bei 
den Messgeräten und einer ging mir mal direkt kaputt -> 3h Oszi 
Screenshotten für die Tonne.

Erst wollt ich alles Remote auslesen per SCPI aber dort haben nicht alle 
Messgeräte eine Screenshotfunktion implementiert (zB das Keithley 
DMM6500 nicht).

USB Stick Screenshots gehen aber eigentlich immer.
Also muss ein RasPi Zero 2W herhalten um einen USB Stick zu emulieren.
Sobald eine Datei auf diesem Emulierten Stick gespeichert wird findet 
ein Upload per FTP oder SMB über WLAN statt.
(Weitere Protokolle wie SFTP und SSHFS sind geplant)
Die Konfiguration zum Upload (inkl. Logindaten) befindet sich in einer 
keepass Datenbankdatei auf dem emulierten USB Stick.

Hier die Software:
https://git.fritzler-avr.de/fritzler/raspiusbemuserver/-/releases

Hier die Anleitung:
https://git.fritzler-avr.de/fritzler/raspiusbemuserver/-/blob/master/README.md

Was nicht geht sind Logdateien.
Ich kann ja nicht wissen wann der USB Zugriff fertig ist, weil ein USB 
Stick ein Block Device ist und nichts von Dateisystemen weis.
Daher erkenne ich mit einem kleinen C Programm und dem elm chan fatfs 
wann eine neue Datei im Image angelegt wurde und ab wann sich eine 
Checksumme nicht mehr ändert.
Oder hat da wer ne Idee?

Daher gehen nur Dateien die in einem Rutsch geschrieben werden, denn 
wenn sich die Checksumme 1s nicht mehr ändert wird der Upload 
angestoßen.
-> Screenshots, Setups, Waveforms, etc.

von c-hater (Gast)


Lesenswert?

Mw E. schrieb:

> Oder hat da wer ne Idee?

Typisch wird als ziemlich "letzte" Aktion der Directory-Eintrag einer 
Datei aktualisiert, also insbesondere deren aktuelle Länge.

Allerdings liegt das, was als "letzte" Aktion zu betrachten ist, 
ziemlich im Ermessen der schreibenden Software und es kann gut sein, 
dass sie nach dieser Aktualisierung schonmal weiter in die Datei 
schreibt. Auch und gerade bei Log-Files wäre das sogar ganz typisch der 
Fall.

D.h.: Für eine sinnvolle Implementierung deines Uploaders müsstest du 
einen "Snapshot" machen, wann immer ein Directory-Eintrag geändert wird. 
Und dann  den Stand hochladen, der in diesem Snapshot steht.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Angehängte Dateien:

Lesenswert?

Leider nicht, der Eintrag kam als erstes und auch die Länge stimmte.
Das war der erste versuch immer diesen Eintrag zu pollen und wenn sich 
die Länge nicht mehr ändert den Upload anzustoßen.
Daher passiert auch das was du in deinem nächsten Baschniott geschrieben 
hast.
Bei FAT32 macht eben jeder was er will bei der Zugriffsreihenfolge.

Für Snapshots müsst ich den Linuxkerneltreiber für USB MSC Device 
umschreiben. Sonst weis ich nicht an welchem LBA im Image geschrieben 
wird.
Der Linuxkerneltreiber bekommt die Imagedatei mit MBR sowie FS und 
stellt den Zugriff über USB Bereit.
Auf dieses Image greife ich dann per C Programm zu (nur lesend!).

Das will ich wirklich erst tun wenns nicht anders geht.
Bzw wenn ich Logfiles auch nutzen will.
Bisher brauchte ich das nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.