From c907e10334a034f094a7eac2ca8243cdec34aed6 Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Tue, 17 Mar 2026 23:59:28 +0100 Subject: [PATCH] Frigate: check OpenVino model files exist before configuring detector and use curl_with_retry instead of default wget (#13019) * fix(frigate): check OpenVino model files exist before configuring detector When the OpenVino model build fails (e.g. TensorFlow import error), the model files are not created but the config still references them if the CPU supports avx/sse4_2, causing Frigate to crash on start with FileNotFoundError. Now also checks that ssdlite_mobilenet_v2.xml and coco_91cl_bkgr.txt actually exist before configuring the OpenVino detector, falling back to CPU model otherwise. Fixes #12808 * fix(frigate): use curl_with_retry for all downloads Replace all wget and bare curl calls with curl_with_retry from tools.func for robust downloads with retry logic, exponential backoff, and DNS pre-checks. This prevents install failures from transient network issues during model and dependency downloads. --- install/frigate-install.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/install/frigate-install.sh b/install/frigate-install.sh index 4399c6ca5..de1773e88 100644 --- a/install/frigate-install.sh +++ b/install/frigate-install.sh @@ -146,7 +146,7 @@ ldconfig msg_ok "Built libUSB" msg_info "Bootstrapping pip" -wget -q https://bootstrap.pypa.io/get-pip.py -O /tmp/get-pip.py +curl_with_retry "https://bootstrap.pypa.io/get-pip.py" "/tmp/get-pip.py" sed -i 's/args.append("setuptools")/args.append("setuptools==77.0.3")/' /tmp/get-pip.py $STD python3 /tmp/get-pip.py "pip" rm -f /tmp/get-pip.py @@ -169,13 +169,13 @@ NODE_VERSION="20" setup_nodejs msg_info "Downloading Inference Models" mkdir -p /models /openvino-model -wget -q -O /edgetpu_model.tflite https://github.com/google-coral/test_data/raw/release-frogfish/ssdlite_mobiledet_coco_qat_postprocess_edgetpu.tflite -wget -q -O /models/cpu_model.tflite https://github.com/google-coral/test_data/raw/release-frogfish/ssdlite_mobiledet_coco_qat_postprocess.tflite +curl_with_retry "https://github.com/google-coral/test_data/raw/release-frogfish/ssdlite_mobiledet_coco_qat_postprocess_edgetpu.tflite" "/edgetpu_model.tflite" +curl_with_retry "https://github.com/google-coral/test_data/raw/release-frogfish/ssdlite_mobiledet_coco_qat_postprocess.tflite" "/models/cpu_model.tflite" cp /opt/frigate/labelmap.txt /labelmap.txt msg_ok "Downloaded Inference Models" msg_info "Downloading Audio Model" -wget -q -O /tmp/yamnet.tar.gz https://www.kaggle.com/api/v1/models/google/yamnet/tfLite/classification-tflite/1/download +curl_with_retry "https://www.kaggle.com/api/v1/models/google/yamnet/tfLite/classification-tflite/1/download" "/tmp/yamnet.tar.gz" $STD tar xzf /tmp/yamnet.tar.gz -C / mv /1.tflite /cpu_audio_model.tflite cp /opt/frigate/audio-labelmap.txt /audio-labelmap.txt @@ -205,7 +205,7 @@ msg_ok "Installed OpenVino" msg_info "Building OpenVino Model" cd /models -wget -q http://download.tensorflow.org/models/object_detection/ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz +curl_with_retry "http://download.tensorflow.org/models/object_detection/ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz" "ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz" $STD tar -zxf ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz --no-same-owner if python3 /opt/frigate/docker/main/build_ov_model.py &>/dev/null; then mkdir -p /openvino-model @@ -219,7 +219,7 @@ if python3 /opt/frigate/docker/main/build_ov_model.py &>/dev/null; then if [[ -n "$OV_LABELS" ]]; then ln -sf "$OV_LABELS" /openvino-model/coco_91cl_bkgr.txt else - wget -q "https://raw.githubusercontent.com/openvinotoolkit/open_model_zoo/master/data/dataset_classes/coco_91cl_bkgr.txt" -O /openvino-model/coco_91cl_bkgr.txt + curl_with_retry "https://raw.githubusercontent.com/openvinotoolkit/open_model_zoo/master/data/dataset_classes/coco_91cl_bkgr.txt" "/openvino-model/coco_91cl_bkgr.txt" fi fi sed -i 's/truck/car/g' /openvino-model/coco_91cl_bkgr.txt @@ -246,7 +246,7 @@ msg_info "Configuring Frigate" mkdir -p /config /media/frigate cp -r /opt/frigate/config/. /config -curl -fsSL "https://github.com/intel-iot-devkit/sample-videos/raw/master/person-bicycle-car-detection.mp4" -o "/media/frigate/person-bicycle-car-detection.mp4" +curl_with_retry "https://github.com/intel-iot-devkit/sample-videos/raw/master/person-bicycle-car-detection.mp4" "/media/frigate/person-bicycle-car-detection.mp4" echo "tmpfs /tmp/cache tmpfs defaults 0 0" >>/etc/fstab @@ -289,7 +289,7 @@ detect: enabled: false EOF -if grep -q -o -m1 -E 'avx[^ ]*|sse4_2' /proc/cpuinfo; then +if grep -q -o -m1 -E 'avx[^ ]*|sse4_2' /proc/cpuinfo && [[ -f /openvino-model/ssdlite_mobilenet_v2.xml ]] && [[ -f /openvino-model/coco_91cl_bkgr.txt ]]; then cat <>/config/config.yml ffmpeg: hwaccel_args: auto