将ha迁移到x2上,记录下安装homeassistant的过程,方便以后折腾,也为后来的垃圾佬少走些弯路.
目前rknpu在识别上面还有些问题Frigate在调用这颗npu时会有2s左右的延迟,原因未知,开发者也复现了这个问题.不知是rknpu驱动的原因还是13.2版本的问题.只能等上游修复.
因为rk识别使用的YOLO模型license调整,导致frigate新版本将放弃使用YOLO(在短时间内rk芯片 不再会有任何frigate的更新).具体参考:https://github.com/blakeblackshear/frigate/pull/10717
一.折腾第一步,刷机
需要刷写我仓库最新的固件,才能开启npu与mpp的支持.
固件测试

二.安装HomeAssistant Supervised
1.修改系统名称
HomeAssistant Supervised在安装脚本中,判断了.系统的名称是否为Debian GNU/Linux 11 (bullseye)" "Debian GNU/Linux 12 (bookworm)"
否则直接安装失败.非常的坑

所以我们需要先将系统名称改为Debian GNU/Linux 12 (bookworm)
1 2
| nano /etc/os-release # 将第一行的Armbian...改完:Debian GNU/Linux 12 (bookworm)
|
2.启动apparmor与修改cgroup版本
Home Assistant Supervisor
应用只支持 docker cgroup v1
版本,而目前 docker 默认安装的都是最新的 v2 版本。如需切换至 v1 版本,可以在 cmdline 中添加 systemd.unified_cgroup_hierarchy=0
参数设置,重启后就可以切换至 docker cgroup v1
版本。
1 2 3 4 5
| nano /boot/armbianEnv.txt # 找到:extraargs=...,改为 extraargs=apparmor=1 security=apparmor systemd.unified_cgroup_hierarchy=0 # 然后重启 reboot
|
3.安装HomeAssistant Supervised
这里直接根据官方项目文档安装即可,最好可以保证自己的网络各处可达
官方安装项目地址:home-assistant/supervised-installer
1.安装依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| apt install \ apparmor \ cifs-utils \ curl \ dbus \ jq \ libglib2.0-bin \ lsb-release \ network-manager \ nfs-common \ systemd-journal-remote \ systemd-resolved \ udisks2 \ wget -y
|
2.安装docker
1
| curl -fsSL get.docker.com | sh
|
3.安装OS-Agent
OS-Agent下载地址:Releases · home-assistant/os-agent (github.com)
博主这里使用的是最新的1.6.0的版本,是没有问题的

1 2
| wget -O os-agent.deb https://github.com/home-assistant/os-agent/releases/download/1.6.0/os-agent_1.6.0_linux_aarch64.deb dpkg -i os-agent.deb
|
4. 安装HomeAssistant Supervised
1 2 3 4
| wget -O homeassistant-supervised.deb https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb apt install ./homeassistant-supervised.deb # 在弹出的选项中选择qemuarm-64 # 然后等待它安装完毕即可访问
|
5.等待安装,如果网络不是很好,建议放个一天在来查看
安装完毕后访问:http://ip:8123 即可进入HomeAssistant的登录界面
三.安装Frigate
因为rk3566这颗处理器拥有vpn(编码),与npu(推理识别)让在性能较弱的盒子上运行Frigate这种AI项目成为了可能,同时也感谢各位大佬在开源社区的贡献.
1.调整x2硬件频率
因为博主要部署Frigate,需要使用到npu,这一步主要可以大幅提高npu的推理速度
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| // npu最高频率 cat /sys/class/devfreq/fde40000.npu/available_frequencies echo 900000000 > /sys/class/devfreq/fde40000.npu/max_freq echo "performance" > /sys/class/devfreq/fde40000.npu/governor
// ddr最高频率 // 查看频率 cat /sys/class/devfreq/dmc/available_frequencies echo userspace > /sys/class/devfreq/dmc/governor echo 1560000000 > /sys/class/devfreq/dmc/userspace/set_freq
// cpu最高频率 cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor echo 1800000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed echo performance > tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
|
默认频率的速度为100ms左右.提高频率后为57ms左右

二.开始安装Frigate
官方地址:Frigate NVR
这里博主使用的是这位大佬仓库的13.2分支,dev分支在我测试时运行还有些问题
MarcA711/frigate-rockchip
下面开始安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| # 博主根据13.2分支的最新源码打包了一个docker镜像放到了阿里云 docker pull registry.cn-hangzhou.aliyuncs.com/hiasia/frigate:rknn1.6-13.2 # 以下是docker compose version: "3.9" services: frigate: container_name: frigate privileged: true restart: unless-stopped stop_grace_period: 1s image: registry.cn-hangzhou.aliyuncs.com/hiasia/frigate:rknn1.6-13.2 shm_size: "256mb" volumes: - /etc/localtime:/etc/localtime:ro - /opt/frigate/config/:/config/ - /opt/frigate/dbs/:/frigate/dbs/ - /opt/frigate_media/:/media/frigate #将frigate持久化数据文件夹挂载进去 - type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear target: /tmp/cache tmpfs: size: 1000000000 ports: - "5000:5000" - "8554:8554" # RTSP feeds - "8555:8555/tcp" # WebRTC over tcp - "8555:8555/udp" # WebRTC over udp environment: FRIGATE_RTSP_PASSWORD: "passwd"
|
配置文件,需要放到frigate/config/config.yml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
mqtt: enabled: false go2rtc: streams: balcony: rtsp://admin:x@地址/Streaming/Channels/101 webrtc: candidates: - 地址:8555 - stun:8555
cameras: frontdoor: record: enabled: true retain: days: 9999 mode: all events: retain: default: 9999 mode: active_objects required_zones: - frontdoor_corridor - frontdoor_entire ffmpeg: output_args: record: preset-record-generic-audio-aac inputs: - path: rtsp://rtsp:x@地址:554/Streaming/Channels/102 input_args: preset-rtsp-generic hwaccel_args: preset-rk-h264 roles: - detect - path: rtsp://rtsp:x@地址:554/Streaming/Channels/101 input_args: preset-rtsp-generic hwaccel_args: preset-rk-h265 roles: - record detect: width: 1280 height: 720 fps: 6 enabled: True
objects: track: - person filters: person: min_score: 0.2
detectors: rknn: type: rknn
model: path: default-yolov8n input_pixel_format: bgr width: 320 height: 320 input_tensor: nhwc
logger: default: debug logs: ffmpeg.frontdoor.detect: debug detect: debug
|
参考资料
- Introduction | Frigate
- MarcA711/frigate-rockchip: NVR with realtime local object detection for IP cameras (github.com)
- home-assistant/supervised-installer: Installer for a generic Linux system (github.com)
- 以及Ecore Home群友的热心解答