Hallo Pi Forum,
ich bin neu, mein erster Beitrag bzw. meine erste Frage.
Ausgangssituation
Ich habe mit eurer Hilfe ein Pi Zero W als USB-Stick erstellt, um diesen an eine Überwachungskamera anzuschließen.
Die dann dort gespeicherten Aufnahmen möchte ich über das WLAN auf meinen Computer kopieren.
Die USB-Funktionalität funktioniert. Die Kamera kann dort die Aufnahmen sichern.
Stecke ich den Pi-Stick in den PC, so kann ich dort auch die gesicherten Dateien aufrufen/kopieren.
Wenn der Pi-Stick in der Kamera ist, komme ich per WLAN mittel SSH (PuTTY) auch in das System.
Weiterhin habe ich eine Samba Freigabe gemacht, die auch funktioniert (im Windows Explorer sichtbar aber nicht "richtig" lesbar s.u.).
(Die Probleme mit dem Aktualisieren/Mounten/Unmounten/Neustarten/usw. habe ich auch, sind aber erstmal noch nicht so wichtig)
Mein Problem ist, dass die Dateien im Pi System nicht lesbar sind. Siehe Bilder:
Bild 1: Ansicht über die Samba Freigabe:
Bild 2: Ansicht im Pi "ls /mnt/usb_share/" bzw. "ls /mnt/usb_share/ -l"
Bild 3: Ansicht als "echter" Stick im Windows PC
Ich hänge mal weiterhin mein Installationsskript an ("pistick erstellen.txt". Dort ist die Erstellung für mich komplett dokumentiert. Kommentare so, wie ich sie verstehe.
Eine vielleicht wichtige Sache noch.
Nachdem alles erstellt wurde und ich den PiStick das erste Mal in die Kamera gesteckt habe, musste ich mit Hilfe der Kamerasoftware den Stick formatieren.
Aber wie aus den Bilder ersichtlich, im Windows ist als Stick alles sichtbar und lesbar.
Zur Vollständigkeit:
Bei der Kamera handelt es sich um eine Arlo Pro 4, angeschlossen an einem Arlo Smart Hub mit USB Anschluss.
Für Tipps, wo das Problem liegen könnte, wäre ich sehr dankbar.
Vielen Dank
Gruß
Thomas
cd /
sudo nano /boot/config.txt
## am ende diese Zeile einfügen
dtoverlay=dwc2
sudo nano /etc/modules
## diese Zeile einfügen
dwc2
## 8GB Datei erzeugen
sudo dd if=/dev/zero of=/usbdisk.img bs=1M count=8192
## Partition anlegen / alles zusammen kopieren / einfügen
(
echo x # switch to eXpert mode
echo s # set sectors/track
echo 8 # g_mass_storage uses a sector size of 512 bytes, so 8 sectors/track will give us 4096 bytes per track
echo h # set number of heads
echo 16
echo c # set number of cylinders
echo 131072 # 8GB = 8388608 kb / 64 tracks = 32768 cylinders
echo r # return to normal mode
echo n # new partition
echo p # primary
echo 1
echo # accept default
echo # accept default
echo t # new partition is created by default as a Linux partition. Since you want to use the gadget with a Windows host, you should change the partition type to FAT32
echo b
echo a # partition should be set as active or USB drive will not be attached to the file-system when plugged in.
echo p # print new partition table to verify..
echo w # Write changes
) | sudo fdisk /usbdisk.img
## diese 3 Zeilen nacheinander zum formatieren / Name=pistick
## !! evtl. ist dies falsch
sudo losetup -o $((8192*512)) /dev/loop0 /usbdisk.img
sudo mkfs -t vfat -v /dev/loop0 -n pistick
sudo losetup -d /dev/loop0
## stattdessen dies hier
sudo mkdosfs /usbdisk.img -F 32 -I
## permanent mounten und in die fstab eintragen
sudo mkdir /mnt/usb_share
sudo nano /etc/fstab
## diese Zeile am Ende eintragen
/usbdisk.img /mnt/usb_share vfat users,umask=000 0 2
## nachladen (ist auch gleichzeitig ein Test)
sudo mount -a
## Python Skript für die Ordner Überwachung
cd /usr/local/share
sudo nano usb_share.py
## den folgenden Block eintragen
## -------------------------------------------------------
#!/usr/bin/python3
import time
import os
from watchdog.observers import Observer
from watchdog.events import *
CMD_MOUNT = "modprobe g_mass_storage file=/usbdisk.img stall=0 ro=0"
CMD_UNMOUNT = "modprobe -r g_mass_storage"
CMD_SYNC = "sync"
WATCH_PATH = "/mnt/usb_share"
ACT_EVENTS = [DirDeletedEvent, DirMovedEvent, FileDeletedEvent, FileModifiedEvent, FileMovedEvent]
ACT_TIME_OUT = 30
class DirtyHandler(FileSystemEventHandler):
def __init__(self):
self.reset()
def on_any_event(self, event):
if type(event) in ACT_EVENTS:
self._dirty = True
self._dirty_time = time.time()
@property
def dirty(self):
return self._dirty
@property
def dirty_time(self):
return self._dirty_time
def reset(self):
self._dirty = False
self._dirty_time = 0
self._path = None
os.system(CMD_MOUNT)
evh = DirtyHandler()
observer = Observer()
observer.schedule(evh, path=WATCH_PATH, recursive=True)
observer.start()
try:
while True:
while evh.dirty:
time_out = time.time() - evh.dirty_time
if time_out >= ACT_TIME_OUT:
os.system(CMD_UNMOUNT)
time.sleep(1)
os.system(CMD_SYNC)
time.sleep(1)
os.system(CMD_MOUNT)
evh.reset()
time.sleep(1)
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
## ------------------------------------------------------------
## Datei ausführbar machen
sudo chmod +x usb_share.py
cd /
## Python Watchdog installieren
sudo apt-get install python3-watchdog
## Background Service erstellen
cd /etc/systemd/system
sudo nano usbshare.service
## folgenden Block eintragen
## --------------------------------------------------------------------
[Unit]
Description=USB Share Watchdog
[Service]
Type=Simple
ExecStart=/usr/local/share/usb_share.py
Restart=always
[Install]
WantedBy=multi-user.target
## --------------------------------------------------------------------
cd /
## Service registrieren und starten
sudo systemctl daemon-reload
sudo systemctl enable usbshare.service
sudo systemctl start usbshare.service
## TEST
sudo reboot
## Samba Freigabe einrichten
cd /
sudo apt-get update
sudo apt-get install samba samba-common smbclient
## prüfen, ob Samba läuft (besteht aus 2 Diensten)
sudo service smbd status
sudo service nmbd status
sudo nano /etc/samba/smb.conf
## workgroup sollte schon dort stehen
## dort eintragen
## -------------------
workgroup = WORKGROUP
security = user
encrypt passwords = yes
client min protocol = SMB2
client max protocol = SMB3
## --------------------
## test ob ok
testparm
## restart der Dienste
sudo service smbd restart
sudo service nmbd restart
## nun die Freigaben einrichten
sudo nano /etc/samba/smb.conf
## den Block am Ende einsetzen
## ----------------------------------------
[PiStick]
comment = PiStick-Freigabe
path = /mnt/usb_share
read only = no
public = yes
writable = yes
comment = smb share
guest ok = yes
## ----------------------------------------
## restart der Dienste
sudo service smbd restart
sudo service nmbd restart
Display More