把吃灰的摄像头变成 RTSP 流媒体机器:Thingino 开源固件刷写与配置全记录
🔥【免费下载链接】thingino-firmwareOpen-source firmware for Ingenic SoC IP cameras项目地址: https://gitcode.com/GitHub_Trending/th/thingino-firmware
家里有吃灰的 Ingenic 芯片摄像头吗?我试了一遍 Thingino——一款专为 Ingenic SoC 设计的开源固件,刷上去之后 RTSP 流、ONVIF 协议、运动检测、MQTT 接入 Home Assistant 这些原厂死活不给的东西就都有了。这篇记录我按真实顺序踩过的流程:从判断自己的机器能不能刷,到 SD 卡刷写、OTA 升级、刷砖后怎么救,最后讲讲刷完怎么接入智能家居。每一步都给了具体命令和参数,照着做就行。
先泼盆冷水:为什么原厂固件用起来这么憋屈
在拆机之前,先把原罪的根源说清楚,否则你不知道自己在换什么:
- 功能被锁死:视频流只走厂商私有协议,想在 VLC 或者 Frigate 里拉一路 RTSP?没有。
- 数据去向不透明:不少品牌默认连自家云,录像、画面过一遍第三方服务器。
- 想改个设置都费劲:Web 界面只开放厂商允许的那几项,配置项藏在私有 API 里。
Thingino 的思路是把整套系统换掉:基于 Buildroot(Buildroot 是一套从零搭建嵌入式 Linux 系统的构建框架)重新编译出 boot + 内核 + 根文件系统,全部源码开放。代价是它只认 Ingenic 芯片,其他 SoC 的机器不在服务范围内。
动手前的第一件事:确认你的摄像头在支持列表里
这一步决定后面一切,别跳过。
- 完整型号清单在 docs/hardware/supported-hardware.md,按品牌逐个列了 SoC(比如 T31X、T23N)、图像传感器、WiFi 模块的组合。
- 每个目录名就是一套硬件配置,例如
xiaomi_xiaofang_t20l_jxf22_rtl8189ftv表示"小方摄像头、T20L 芯片、JXF22 传感器、RTL8189FTV 无线模块"。 - 仓库分两个分支:
ciao是稳定版,日常使用选它;master带实验性功能(用了尚未定型的新版 U-Boot),官方自己都建议刷 master 前最好手头有 UART 串口线和救砖经验,新手别碰。
翻到自己的型号对应条目,就记下那个目录名,后面刷写和 OTA 都要用。
三条刷写路线:SD 卡、网络 OTA、CH341A 编程器
同一个目标,三条路,难度和前置条件完全不同,按你的现状选。
路线一:SD 卡盲刷(最省事,前提是原 bootloader 还活着)
适合固件还能启动、或者已经跑过 Thingino 的机器:
- 拿到对应型号的完整固件镜像(编译产物形如
thingino-<camera>.bin,也可以从项目 release 里下载)。 - 把 SD 卡格式化成 FAT32(exFAT/NTFS 不认)。
- 把镜像放到卡根目录,按设备情况命名:
- 已装 Thingino bootloader 的机器:
autoupdate-full.bin,开机后 boot 阶段自动检测、写入整片 flash 并重启,刷完会在卡上留一个autoupdate-full.done标记防止重复刷; - 部分原厂机器:
thingino.bin,配合 UART 进 U-Boot 手动执行sf probe / sf erase / sf write序列写入。
- 已装 Thingino bootloader 的机器:
- 断电插卡,上电等待,别中途拔电源。
这条路最大的风险点:如果你不确定自己 bootloader 是哪种,插错文件白等三分钟。所以先查自己的型号文档(docs/cameras/ 下有逐机型的说明,含 UART 引脚位置图)。
路线二:网络 OTA(机器能正常上电联网时的最佳路线)
编译好固件后,不用拆机、不用拔卡,在构建机上直接推给摄像头:
IP=192.168.88.127 make ota常用变体(都要带IP=<摄像头地址>):
| make 目标 | 动作 | 底层工具 |
|---|---|---|
make ota/ota-full | 整片固件全刷 | sysupgrade |
make ota-kernel | 只刷内核 | flash-ota |
make ota-uboot | 只刷 bootloader + 环境分区 | flash-ota |
make ota-rootfs | 刷根文件系统 + 数据分区 | flash-ota |
make ota-upgrade | rootfs + data,刷前自动做配置备份 | flash-ota |
两个可选环境变量:FORCE=1跳过 IMAGE_ID 一致性检查,BACKUP=1强制先备份配置。刷内核这类不碰 overlay 的分区时,配置备份分区(mtd2)原样保留;做全刷时系统会在开机早期自动把配置从备份分区还原回新系统,所以 WiFi 密码、时区这些不用重新填。
完整机制在 docs/firmware/sysupgrade.md,包括 magic 校验表(刷错文件会被拒绝,不会写坏分区)和两阶段写 flash 的流程。
路线三:CH341A 编程器(终极兜底,机器彻底不开机才用)
把 flash 芯片扣下来(或飞线夹住 SOIC8 焊盘)接 CH341A,用 snander 工具直接读写整片 flash。适合"SD 卡刷写失败 + 进不了 U-Boot"的彻底变砖场景。需要烙铁和一点焊接耐心。
刷完之后的日常:升级、备份、配置
升级与备份
系统内直接跑sysupgrade:
sysupgrade -f整包全刷,-b只刷 bootloader,-k只刷内核,-r只刷根文件系统;sysupgrade -B(或--backup)在任何写操作前先做配置备份;- 也可以直接喂文件或 URL:
sysupgrade /path/to/image.bin会自动识别 magic 字节决定刷哪个分区。
改配置的姿势:jct + thingino.json
Thingino 的系统配置集中在/etc/thingino.json,改它不用手编辑 JSON,用仓库里的jct工具:
jct /etc/thingino.json set ha.enabled true /etc/init.d/S93ha restart上面两行就是打开 Home Assistant 接入。改完重启对应 init 服务即可生效,比手改 JSON 少踩引号转义的坑。
让摄像头干活:RTSP、ONVIF 与 Home Assistant 三件套
这是刷完固件最有成就感的部分,三样东西基本开箱可用。
RTSP 拉流
刷完即得标准 RTSP 端点,VLC、Frigate、go2rtc 都能直接消费。仓库里还有现成的拉流脚本可以参考 scripts/go2rtc.sh 和 scripts/mediamtx.sh,媒体链路细节文档在 docs/media/。
ONVIF
稳定版自带 ONVIF server(ciao 分支用的是原版实现),海康、大华生态的 NVR 和大部分 ONVIF 客户端能直接发现设备。规范文档都备在 docs/onvif/ 下,排障时对着查。
Home Assistant:自动发现,不用写一行 YAML
这是我最喜欢的功能。前置条件只有一个:局域网里有一个摄像头和 HA 都够得着的 MQTT broker(比如 HA 自带的 Mosquitto add-on),然后在摄像头 Web UI 的 Services → MQTT Subscriptions 里填 broker 地址,接着执行前面那两行jct命令。
几秒后 HA 里自动冒出一个设备,带全套实体(具体见 docs/thingino/services/homeassistant.md):
- 二进制传感器:运动检测、门铃(如果有);
- 开关类:运动检测总开关、IR-CUT、日夜模式、隐私遮挡、850nm/940nm 红外灯、白光灯;
- 传感器:固件版本、WiFi 信号强度;
- 按钮:抓快照、重启、PTZ 方向(如果硬件支持);
- 固件更新实体:会自动检查上游 release,有新固件时 HA 里直接点安装。
不想暴露某个实体,jct关掉对应enable_xxx开关即可,比如jct /etc/thingino.json set ha.enable_reboot false。
翻车现场:救砖手册与几个高频坑
刷固件这件事,假设自己会翻车是基本修养。按恢复成本从低到高排:
- SD 卡恢复(bootloader 还活着):FAT32 卡根目录放
autoupdate-full.bin,插卡上电,自动刷。 - Ingenic Cloner(USB 数据线连着 SoC 的机器):短接 flash 芯片 5/6 脚进 cloner 模式,电脑跑 cloner 工具灌固件。
- U-Boot 串口 + SD 卡:bootloader 挂了也能救,把 bootloader 镜像写到卡上,BOOT_SEL 短接 GND 开机从 SD 启动,先把引导链修回来。
- CH341A 编程器:以上全失效的最后底牌。
高频坑,我挨个说过:
- SD 卡格式错(exFAT 不行,必须 FAT32)→ 开机无任何反应,指示灯行为异常;
- 文件名错(该叫
autoupdate-full.bin的机器放了别的名字)→ boot 扫不到,白等; - 刷
master分支的固件后想回滚 → 没有 UART 备份就只能走 cloner/编程器; - OTA 时
IMAGE_ID校验失败 → 确认CAMERA=传对了型号,或临时FORCE=1(先想清楚为什么不一致)。
完整恢复流程在 docs/firmware/camera-recovery.md,建议刷写前先把这篇读完,五分钟的事。
获取代码与编译:两分钟搞定的部分
git clone --recurse-submodules https://gitcode.com/GitHub_Trending/th/thingino-firmware cd thingino-firmware--recurse-submodules不能省,内核、U-Boot、大量依赖库都在子模块里。拉下来之后两条编译路线:
- 直接编译:
make update && make,需要宿主机装齐 Buildroot 依赖; - 容器编译(更省心):
./build-container.sh,自动拉预构建镜像,只要机器上有 Docker 或 Podman。
产物在output/images/下,thingino-<camera>.bin就是完整固件,另有rootfs.squashfs、data.jffs2、uImage等分区文件供 OTA 部分升级使用。各机型的 defconfig 都放在configs/cameras/<型号>/里,比如configs/cameras/xiaomi_xiaofang_t20l_jxf22_rtl8189ftv/下有对应的*_defconfig和thingino.json,想知道某台机器默认装了什么,翻那里的文件比猜快。
写在最后:去哪继续挖
刷进去只是开始,这个项目的文档密度比大多数固件项目高得多,几个值得收藏的入口:
- 硬件支持总表:docs/hardware/supported-hardware.md
- 固件镜像结构与分区布局:docs/firmware/firmware-image-structure.md
- 刷写/OTA 机制:docs/firmware/sysupgrade.md
- 救砖流程:docs/firmware/camera-recovery.md
- Home Assistant / MQTT 接入:docs/thingino/services/
- 开发向:术语表 docs/dev/glossary.md、provisioning 批量部署 docs/dev/provisioning-system.md(用 DHCP option 160 让多台机器开机自动拉配置,装多路监控时省得逐台点)
一句话总结我的体验:确认芯片是 Ingenic、查表确认型号被支持,然后照着autoupdate-full.bin或者make ota走一遍——半小时左右,一台闭源云摄像头就变成了局域网里标准的行为。翻车了也别慌,SD 卡 + cloner + 编程器三级救援链摆在那,这个项目的维护者明显把"救砖"当成了一等公民来设计。
🔥【免费下载链接】thingino-firmwareOpen-source firmware for Ingenic SoC IP cameras项目地址: https://gitcode.com/GitHub_Trending/th/thingino-firmware
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考