blakeblackshear/frigate · error · FileNotFoundError
Model file not found at: {self.model_path}
Error message
Model file not found at: {self.model_path} What it means
The hailo8l detector was configured with a local model.path, but no file exists at that path inside the container. check_and_prepare raises FileNotFoundError during __init__, meaning the model was never downloaded (path config bypasses download) and the mount/volume is missing or wrong.
Source
Thrown at frigate/detectors/plugins/hailo8l.py:331
if not self.model_path and not self.url:
if os.path.exists(cached_model_path):
logger.debug(f"Model found in cache: {cached_model_path}")
return cached_model_path
else:
logger.debug(f"Downloading default model: {model_name}")
if ARCH == "hailo8":
self.download_model(H8_DEFAULT_URL, cached_model_path)
else:
self.download_model(H8L_DEFAULT_URL, cached_model_path)
elif self.url:
logger.debug(f"Downloading model from URL: {self.url}")
self.download_model(self.url, cached_model_path)
elif self.model_path:
if os.path.exists(self.model_path):
logger.debug(f"Using existing model at: {self.model_path}")
return self.model_path
else:
raise FileNotFoundError(f"Model file not found at: {self.model_path}")
return cached_model_path
def detect_raw(self, tensor_input):
tensor_input = self.preprocess(tensor_input)
if isinstance(tensor_input, np.ndarray) and len(tensor_input.shape) == 3:
tensor_input = np.expand_dims(tensor_input, axis=0)
request_id = self.input_store.put(tensor_input)
try:
_, infer_results = self.response_store.get(request_id, timeout=1.0)
except TimeoutError:
logger.error(
f"Timeout waiting for inference results for request {request_id}"
)
if not self.inference_thread.is_alive():View on GitHub (pinned to ca18b8dc13)
Solutions
- Verify with docker exec that the file exists at the exact configured path inside the container
- Fix the volume mount so the host directory with the .hef is available at the configured path
- Correct typos in path/filename; prefer copying the .hef into a mounted /config or /models dir
Example fix
# docker-compose # before volumes: - /mnt/models:/opt/frigate/models # but config says /models/yolo.hef # after volumes: - /mnt/models:/models # config: path: /models/yolo.hef
Defensive patterns
Strategy: validation
Validate before calling
import os
def model_file_ready(path: str) -> bool:
return bool(path) and os.path.isfile(path) and os.access(path, os.R_OK) Try / catch
try:
detector = HailoDetector(config)
except FileNotFoundError as e:
if 'Model file not found' in str(e):
raise SystemExit(f'Mount the volume containing {config.model.path}') from None
raise Prevention
- Always docker-exec to confirm model paths exist inside the container
- Mount a dedicated models volume and use container-relative paths
- Add a startup preflight check for configured model files
When it happens
Trigger: Setting model.path for the hailo8l detector to a path that does not exist in the container (not mounted, typo, or file on host not inside container).
Common situations: Forgetting to mount the models volume into the Frigate container; absolute host path used instead of container path; filename typo; model on a USB drive not attached at boot.
Related errors
- Custom model zip not found: {self.memx_model_path}
- Model {model_path} is unsupported. Provide your own model or
- Invalid model URL. Only .hef files are supported.
- Failed to download model from {url}: {str(e)}
- HailoRT inference thread has stopped, restart required.
AI-assisted analysis of blakeblackshear/frigate@ca18b8dc13 (2026-08-27).
Data as JSON: /api/errors/1bfd5ce0f06d81b2.
Report an issue: GitHub.