dashcam-transfer-mount.sh mountte altijd /dev/disk/by-uuid/00D3-7715. Een geherformatteerde of andere kaart heeft een ander filesystem UUID, waardoor de mount faalde (TRIGGER ERROR) en de transfer nooit startte. De udev rule geeft nu het kernel device (%k) door; de helper mount dat device dynamisch. Werkt ongeacht het FS-UUID van de kaart.
39 lines
No EOL
1.3 KiB
Shell
Executable file
39 lines
No EOL
1.3 KiB
Shell
Executable file
#!/bin/bash
|
|
# Mount SD card and start dashcam transfer.
|
|
# Called by udev rule 99-dashcam-trigger.rules via systemd-run.
|
|
# systemd-run is used (not direct udev exec) because udev context
|
|
# lacks mount/umount permissions on Fedora with SELinux enforcing.
|
|
#
|
|
# The udev rule passes the kernel name (e.g. "sde1") as $1 so the
|
|
# device is mounted dynamically, independent of its filesystem UUID.
|
|
DEV=${1:+/dev/$1}
|
|
logger -t dashcam-transfer "Trigger: SD card detected ($DEV)"
|
|
if [ -n "$1" ]; then
|
|
for ((i=0; i<60; i++)); do
|
|
if [ -e "$DEV" ]; then
|
|
logger -t dashcam-transfer "Trigger: device ready after ${i}s"
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
else
|
|
UUID=$(lsblk -rno UUID /dev/sde1 2>/dev/null)
|
|
DEV=/dev/disk/by-uuid/$UUID
|
|
for ((i=0; i<60; i++)); do
|
|
if [ -e "$DEV" ]; then
|
|
logger -t dashcam-transfer "Trigger: device ready after ${i}s"
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
fi
|
|
while mountpoint -q /mnt/sdcard 2>/dev/null; do
|
|
umount /mnt/sdcard 2>/dev/null || break
|
|
done
|
|
mount "$DEV" /mnt/sdcard -o uid=1000,gid=1000,fmask=0000,dmask=0000
|
|
if [ $? -eq 0 ]; then
|
|
logger -t dashcam-transfer "Trigger: mounted, starting transfer"
|
|
systemctl start dashcam-transfer
|
|
else
|
|
logger -t dashcam-transfer "TRIGGER ERROR: mount failed"
|
|
fi |