
Frigate 在 Raspberry Pi 3/4 上如何配置 gpu_mem 与带电源 USB Hub 以支持硬件加速和 USB Coral【免费下载链接】frigateNVR with realtime local object detection for IP cameras项目地址: https://gitcode.com/GitHub_Trending/fr/frigate在 Raspberry Pi 3/4 上部署 Frigate 时默认配置下有两个问题会挡住硬件加速与 USB Coral 检测Pi 默认限制分配给 GPU 的内存导致无法启用 ffmpeg 硬件解码USB Coral 耗电较大直接插在 Pi 上尤其同时接了 SSD 等 USB 设备时供电不足设备无法初始化。这篇文章按官方文档给出这两项准备工作的具体做法在config.txt中调大gpu_mem、为 USB 设备配备带独立电源的 USB Hub然后完成 Docker 设备映射和 Frigate 配置使 Pi 媒体引擎负责解码、USB Coral 负责目标检测。适用前提Pi 上运行的是 64 位系统并已通过 Docker 部署 Frigate官方stable镜像对 arm64 是 RPi 优化构建。为什么必须调大 gpu_memFrigate 官方安装文档在 “Raspberry Pi 3/4” 一节明确说明By default, the Raspberry Pi limits the amount of memory available to the GPU. In order to use ffmpeg hardware acceleration, you must increase the available memory by settinggpu_memto the maximum recommended value inconfig.txt见 安装文档config.txt内存选项以 Raspberry Pi 官方文档为准。视频解码文档 给出的最低要求是GPU 内存至少分配 128MB可通过raspi-config Performance Options GPU Memory 设置。两份文档的口径不同安装文档要求设置到官方建议的最大推荐值视频解码文档只要求至少 128MB。建议按安装文档取最大推荐值至少不要低于 128MB。修改config.txt后需要重启 Pi 生效。注意这里的gpu_mem分配的是 Pi 媒体引擎VideoCore可用的内存与 USB Coral 无关它只影响 ffmpeg 硬件解码能否工作。USB Coral 供电什么时候需要带电源的 USB HubEdgeTPU 排障文档 说明 USB Coral 最高可以拉取 900mA 电流这对 RPi 这类小板子的板载 USB 口来说可能过大典型症状就是 Coral 不初始化、Frigate 检测不到设备。文档给出的处理顺序是换一个 USB 口试试不同口供电能力不同确认使用的是 USB3 口这对供电和满速运行都重要换一根数据线有用户反馈 Coral 原装线本身有问题使用带独立外部电源的 USB hub。安装文档进一步指出如果除了 Coral 还接了其他 USB 设备例如 SSDPi 的 USB 供电不足以同时驱动这些设备会出现不稳定此时需要购买带自己电源的 USB hub见 安装文档。如果你的 Coral 直插 Pi 就能稳定初始化可以不买 hub一旦同时挂 SSD 或换口/换线后仍不初始化就应直接上带电源的 hub。Coral 的供电状态可以通过lsusb判断设备刚插入尚未初始化时显示为1a6e:089a Global Unichip Corp.初始化完成后显示为18d1:9302 Google Inc.。注意在 Frigate 实际用 Coral 跑过一次推理之前它都会停留在前一个状态这属于正常现象来源EdgeTPU 排障文档。Docker 侧的设备映射在 安装文档 的示例 Compose 中与 RPi USB Coral 相关的devices条目是services: frigate: image: ghcr.io/blakeblackshear/frigate:stable devices: - /dev/bus/usb:/dev/bus/usb # Passes the USB Coral, needs to be modified for other versions - /dev/video11:/dev/video11 # For Raspberry Pi 4B/dev/bus/usb整段透传给容器容器内的 Frigate 才能访问 USB Coral。/dev/video11是 ffmpeg 硬件解码在 Raspberry Pi 4B 上使用的设备节点。视频解码文档 说明如果不用 privileged 模式运行容器就必须把/dev/video*设备映射进容器也可以直接映射所有/dev/video*设备。如果你的设备号不是video11用下面的循环在宿主机上找到列出H264格式的设备该命令来自 视频解码文档for d in /dev/video*; do echo -e ---\n$d v4l2-ctl --list-formats-ext -d $d done修改 Compose 文件后执行docker compose up -d使配置生效。如果你通过 Home Assistant App 运行 Frigate文档提示可能需要使用 Full Access 变体并关闭Protection mode硬件加速和 Coral 访问才可行。Frigate 配置Coral 检测器与 RPi 解码 preset在 Frigate 配置中需要两件事把检测器指向 USB Coral把 ffmpeg 解码 preset 设为 RPi 对应项。配置 USB Coral 检测器YAML 写法见 object_detectors 文档detectors: coral: type: edgetpu device: usbUI 写法Settings System Detectors and model选择EdgeTPU类型添加检测器device 填usb。多块 USB Coral 时用usb:0、usb:1分别指定。配置 RPi 硬件解码YAML 写法见 视频解码文档按摄像头流的编码格式二选一# H.264 流 ffmpeg: hwaccel_args: preset-rpi-64-h264 # H.265 (HEVC) 流 ffmpeg: hwaccel_args: preset-rpi-64-h265UI 写法Settings Global configuration FFmpeg把Hardware acceleration arguments设为Raspberry Pi (H.264)或Raspberry Pi (H.265)单摄像头覆盖在 Settings Camera configuration Streams (FFmpeg) 中修改。注意 preset 名称中的64表示这些 preset 面向 64 位 Raspberry Pi这也是前面要求 64 位系统的原因。硬件加速没有 CPU 回退一旦指定了 hwaccel解码失败就直接报错不会自动降级。验证验证分三层均使用文档给出的方法解码设备是否正确运行上面的v4l2-ctl循环确认你映射进容器的那个/dev/video*节点能列出H264对应你的 preset。硬件加速是否生效查看容器日志。视频解码文档 的判定标准是日志中要么出现硬件加速被自动检测到的信息要么出现未自动检测到硬件加速的警告既然你在配置里显式指定了 preset正确的表现是日志中没有解码相关错误。Coral 是否被识别并在工作宿主机lsusb中设备从1a6e:089a Global Unichip Corp.变为18d1:9302 Google Inc.说明 Coral 已完成初始化重启 Frigate 后应开始看到person等对象的检测见 getting started 的检测器配置说明。限制与已知问题Coral 反复“卡住”需要重置时排障文档 给出的常见原因是原装线缆问题和 VM 环境下的通信丢失直连 Pi 换线可先排除前者。hwaccel_args指定的 preset 不匹配流编码或设备时ffmpeg 会报错并反复重启解码进程日志里会出现解码错误——此时回头核对 presetH.264 vs H.265与映射的/dev/video*设备。本文只覆盖 RPi 3/4 的 USB Coral 与媒体引擎解码PCIe/M.2 Coral 需要 gasket 驱动走的是另一套安装路径不在本文范围内。完成以上步骤后Frigate 在 RPi 上即处于文档定义的完整形态gpu_mem调大后 Pi 媒体引擎通过preset-rpi-64-*硬件解码USB Coral 经带电源 hub 稳定供电并通过edgetpu检测器承担目标检测。后续如果日志出现 Bus error再回到安装文档的 shm-size 计算一节调整shm_size。【免费下载链接】frigateNVR with realtime local object detection for IP cameras项目地址: https://gitcode.com/GitHub_Trending/fr/frigate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考