blakeblackshear/frigate · error · Exception

{self.model_type} is currently not supported for edgetpu. Se

Error message

{self.model_type} is currently not supported for edgetpu. See the docs for more info on supported models.

What it means

During EdgeTPU detector __init__, the model metadata's type is not one of the model types the edgetpu plugin knows how to decode, so it raises before ever running inference. The plugin supports specific YOLO variants (and SSD-style outputs) and inspects tensor/output layout to pick a decoder; anything else falls to the else branch.

Source

Thrown at frigate/detectors/plugins/edgetpu_tfl.py:165

            boxes_details = self.tensor_output_details[output_boxes_index]
            self.boxes_tensor_index = boxes_details["index"]
            self.boxes_scale, self.boxes_zero_point = boxes_details["quantization"]

        elif self.model_type == ModelTypeEnum.ssd:
            logger.debug("Using SSD preprocessing/postprocessing")

            # SSD model indices (4 outputs: boxes, class_ids, scores, count)
            for x in self.tensor_output_details:
                if len(x["shape"]) == 3:
                    self.output_boxes_index = x["index"]
                elif len(x["shape"]) == 1:
                    self.output_count_index = x["index"]

            self.output_class_ids_index = None
            self.output_class_scores_index = None

        else:
            raise Exception(
                f"{self.model_type} is currently not supported for edgetpu. See the docs for more info on supported models."
            )

    def _generate_anchors_and_strides(self):
        # for decoding the bounding box DFL information into xy coordinates
        all_anchors = []
        all_strides = []
        strides = (8, 16, 32)  # YOLO's small, medium, large detection heads

        for stride in strides:
            feat_h, feat_w = self.model_height // stride, self.model_width // stride

            grid_y, grid_x = np.meshgrid(
                np.arange(feat_h, dtype=np.float32),
                np.arange(feat_w, dtype=np.float32),
                indexing="ij",
            )

View on GitHub (pinned to ca18b8dc13)

Solutions

  1. Use one of the officially supported edgetpu models from the Frigate docs/model list
  2. If custom, re-export the model in a supported architecture and update model_info.json type accordingly
  3. Clear the model cache and re-download to eliminate stale metadata
Defensive patterns

Strategy: validation

Validate before calling

# before creating the detector, verify model metadata type is edgetpu-supported
from frigate.detectors.detector_config import ModelTypeEnum
SUPPORTED = {ModelTypeEnum.yolox, ModelTypeEnum.yologeneric}  # per plugin docs
assert model_info['type'] in SUPPORTED

Try / catch

try:
    detector = EdgeTPUDetector(config)
except Exception as e:
    if 'not supported for edgetpu' in str(e):
        logger.error('Use a Frigate edgetpu-supported model')
    raise

Prevention

When it happens

Trigger: Creating an EdgeTPUDetector with a .tflite model whose model_type (from model_info or filename-derived metadata) is not in the supported set for edgetpu, e.g. a standard TF object detection model or a non-quantized YOLO export.

Common situations: Using a .tflite model that was not converted for edgetpu post-processing expectations; wrong model file in cache; model compiled for a different Frigate model schema version.

Related errors


AI-assisted analysis of blakeblackshear/frigate@ca18b8dc13 (2026-08-27). Data as JSON: /api/errors/51ad444e15b5a00d. Report an issue: GitHub.