From 323d482eaba033075b9bcc8eb577321752ab898b Mon Sep 17 00:00:00 2001 From: ZGaetano Date: Mon, 1 Jun 2026 13:34:07 -0400 Subject: [PATCH] feat(deltacast): install 99-wild-dragon-deltacast.rules to create 8 /dev/deltacast symlinks --- deploy/install-driver.sh | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/deploy/install-driver.sh b/deploy/install-driver.sh index 090c24f..5d46aa2 100644 --- a/deploy/install-driver.sh +++ b/deploy/install-driver.sh @@ -192,6 +192,7 @@ install_aja() { install_deltacast() { if lsmod 2>/dev/null | grep -q 'videomaster' || ls /dev/deltacast* >/dev/null 2>&1; then log "Deltacast module loaded / device present — already installed" + install_deltacast_udev_rule return 0 fi @@ -234,11 +235,38 @@ install_deltacast() { if lsmod 2>/dev/null | grep -q 'videomaster' || ls /dev/deltacast* >/dev/null 2>&1; then log "Deltacast VideoMaster installed" fi + + # Install our own udev rule that creates 8 /dev/deltacast symlinks (ports 0-7) + # pointing at the single real device node. Kept separate from the SDK's own + # rule so a driver reinstall won't clobber it. + install_deltacast_udev_rule + # First-time VideoMaster installs lay down udev rules + firmware that need a reboot. warn "Deltacast: a REBOOT is recommended after a first-time VideoMaster install (udev + firmware)" REBOOT_REQUIRED=1 } +# Copy the repo's 99-wild-dragon-deltacast.rules into /etc/udev/rules.d/ and +# reload. Idempotent. Creates /dev/deltacast0..7 -> /dev/delta-x3700 so the +# node-agent advertises all 8 RX channels. +install_deltacast_udev_rule() { + local rule_src="$REPO_DIR/deploy/udev/99-wild-dragon-deltacast.rules" + local rule_dst="/etc/udev/rules.d/99-wild-dragon-deltacast.rules" + if [ ! -f "$rule_src" ]; then + warn "Deltacast: udev rule $rule_src not found in repo — skipping symlink rule install" + return 0 + fi + if [ -f "$rule_dst" ] && cmp -s "$rule_src" "$rule_dst"; then + log "Deltacast: udev rule already up to date at $rule_dst" + else + log "installing Deltacast udev rule -> $rule_dst" + install -D -m 0644 "$rule_src" "$rule_dst" 2>/dev/null \ + || { warn "Deltacast: failed to install udev rule (continuing)"; return 0; } + udevadm control --reload-rules 2>/dev/null || true + udevadm trigger --action=add /dev/delta-x3700 2>/dev/null || true + fi +} + # =========================================================================== # ndi — copy redistributable runtime libs to /usr/local/lib + ldconfig # ===========================================================================