From b6aae91a52cd95c03947d27bb786fe32bf73d51a Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Fri, 4 Jul 2025 15:11:39 -0500 Subject: [PATCH] fixing daemon for cam --- scripts/daemon/lesavka-core.sh | 55 ++++++++++++++-------------------- 1 file changed, 22 insertions(+), 33 deletions(-) diff --git a/scripts/daemon/lesavka-core.sh b/scripts/daemon/lesavka-core.sh index dc66968..e6d36da 100644 --- a/scripts/daemon/lesavka-core.sh +++ b/scripts/daemon/lesavka-core.sh @@ -132,51 +132,40 @@ echo 333333 >"$F/streaming/uncompressed/u/f1/dwDefaultFrameInterval" # 30 fp echo 333333 >"$F/streaming/uncompressed/u/f1/dwFrameInterval" # ── 3. REQUIRED HEADER LINKS ────────────────────────────────────── -mkdir -p "$F/streaming/header/h" +header_h="$F/streaming/header/h" # convenience variables +fmt_dir="$F/streaming/uncompressed/u" -# ---------------------------------------------------------------------- -# DEBUG / DEFENSIVE – show what exists and create again if needed -# ---------------------------------------------------------------------- -if ! [ -d "$F/streaming/header/h" ]; then - echo "→ header/h vanished – recreating" >&2 - mkdir -p "$F/streaming/header/h" -fi -echo "→ AFTER mkdir : $(ls -ld $F/streaming/header/h)" >&2 -echo "→ PARENT header : $(ls -ld $F/streaming/header)" >&2 -echo "→ CONTENTS : $(ls $F/streaming/header)" >&2 -# ---------------------------------------------------------------------- +mkdir -p "$header_h" -# 3‑a Link format #1 into the header *first* -for _ in {1..50}; do # max 50 × 2 ms = 100 ms - [ -e "$F/streaming/header/h/bmInfo" ] && break - sleep 0.02 +# wait until the kernel has rebuilt the directory and added its attribute +# files (bmInfo is always created by the driver) +for _ in {1..50}; do + [ -e "$header_h/bmInfo" ] && break + sleep 0.010 # max 0.5 s total done -ln -sf ../../uncompressed/u "$F/streaming/header/h/1" -echo 1 >"$F/streaming/header/h/bNumFormats" -echo 0 >"$F/streaming/header/h/bmInfo" +# ABSOLUTE symlink → no relative elements, name is “fmt” (not “1”) +ln -sf "$fmt_dir" "$header_h/fmt" +echo 1 >"$header_h/bNumFormats" +echo 0 >"$header_h/bmInfo" -# 3‑b Wait for the kernel to create the class/{fs,hs,ss} dirs (≤100 ms) +# per‑speed class directories (absolute links) for s in fs hs ss; do - for _ in {1..20}; do - [ -d "$F/streaming/class/$s" ] && break - sleep 0.005 - done - ln -sf ../../header/h "$F/streaming/class/$s/h" + mkdir -p "$F/streaming/class/$s" + ln -sf "$header_h" "$F/streaming/class/$s/h" done -# 3‑c CONTROL‑side header uses the same directory -mkdir -p "$F/control/header/h" +# control‑interface header – share the very same directory +mkdir -p "$F/control/header" +ln -sf "$header_h" "$F/control/header/h" for s in fs hs ss; do - for _ in {1..20}; do - [ -d "$F/control/class/$s" ] && break || sleep 0.005 - done - ln -sf ../../header/h "$F/control/class/$s/h" + mkdir -p "$F/control/class/$s" + ln -sf "$header_h" "$F/control/class/$s/h" done -# Friendly string for the camera entity +# friendly label mkdir -p "$F/control/header/strings/0x409" -echo "Lesavka UVC" >"$F/control/header/strings/0x409/label" +echo "Lesavka UVC" >"$F/control/header/strings/0x409/label" # ----------------------- configuration ----------------------------- mkdir -p "$G/configs/c.1/strings/0x409"