#!/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