#!/bin/bash # Mount SD card by kernel device name (udev %k) 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. MAX_WAIT="${DASHCAM_MAX_WAIT:-60}" DEV=${1:+/dev/$1} logger -t dashcam-transfer "Trigger: SD card detected ($DEV)" # Never interrupt a running transfer: a flaky reader can cause a second # udev event (USB re-enumeration) which must not unmount a busy card. if systemctl is-active --quiet dashcam-transfer.service; then logger -t dashcam-transfer "Trigger: transfer service al bezig — skip" exit 0 fi if [ -n "$1" ]; then for ((i=0; i/dev/null) DEV=/dev/disk/by-uuid/$UUID for ((i=0; i/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" # Read-only exFAT health check; logs warnings but never blocks the transfer. if command -v fsck.exfat >/dev/null 2>&1; then fsck.exfat -n "$DEV" 2>&1 | logger -t dashcam-transfer logger -t dashcam-transfer "Trigger: fsck.exfat exit ${PIPESTATUS[0]}" fi systemctl start dashcam-transfer else logger -t dashcam-transfer "TRIGGER ERROR: mount failed" fi