Aqara G4在门铃界有点特殊,别家的室内机都只起个响铃的作用,而Aqara的还起到WiFi中继和计算处理推流的作用。室外机只处理ISP图像,通过点对点的WiFi将视频推到室内机,室内机再继续处理,发布到HomeKit或Aqara的云服务器。外界通过网络只能访问到室内中继器
拆机
硬件
- 室外摄像头
- SoC:Ingenic T31ZX
- CMOS: 16:9 2MP 未知型号
- WiFi:ATBM6441 集成MCU控制SoC电源
- Flash:16MB NOR
- 室内中继器
- SoC: SigmaStar SSD222D
- WiFi: SSW101B USB接口
- Flash:128MB NAND
一颗渺小的SSW101B既要负责和外网连接,又要发射热点给室外机保持不间断大流量通信,难怪之前检测到他们之间的WiFi连接只是上古时代的802.11b。作为中国最贵的门铃却连几块钱一颗的WiFi模块都舍不得多用一颗
室内机开启telnetd和rtsp
接好TTL串口,位置很明显,就在天线接口旁边。上电时按住回车键,进入uboot,修改bootargs把启动入口从/linuxrc
改为/bin/sh
,不要save
,直接run bootcmd
启动
进入shell后cat /etc/init.d/rcS
查看启动流程,注意最下面的几行
if [ ! -f /res/passwd ]; then
echo "use default password"
echo "root:qdGt8T0XjiWXI:0:0:Linux User,,,:/home/root:/bin/sh" > /res/passwd
fi
[ -d /home/root ] || mkdir -p /home/root
CUSTOM_POST_INIT=/data/scripts/post_init.sh
if [ -x ${CUSTOM_POST_INIT} ]; then
${CUSTOM_POST_INIT} &
else
fw_manager.sh -r
fi
可以看到密码来自/res/passwd
,而且可以自动运行/data/scripts/post_init.sh
这个我们可以修改的文件
使用这两个命令挂载/res
和/data
ubifs_mount.sh 0 /res
ubifs_mount.sh 1 /data
vi /res/passwd
去掉密码,创建/data/scripts/post_init.sh
,内容如下
telnetd &
fw_manager.sh -r &
sleep 3
rtsp &
然后reboot -f
重启后就可以telnet连接到中继器了,并且rtsp已经开启。没错rtsp开启就是这么简单,只需要运行一个名叫rtsp
的程序就行。Aqara其实早就准备好了提供了rtsp连接,但可能又因为种种原因不太方便直接提供。RTSP提供3个不同码流,分别是
- rtsp://[ip]:8554/360p
- rtsp://[ip]:8554/720p
- rtsp://[ip]:8554/1080p
TF卡本地录制
国际版的室内机是带TF卡槽支持本地不间断录像的。国内版阉割了卡槽,但是主板保留了空焊盘,而且固件里有个进程recorder -p /mnt/sdcard
开机自动运行
尝试把空缺的TF卡插槽补焊上去,插入TF卡,重启,可以直接识别到并自动开始循环录制,每分钟一段。遗憾的是国内版的Aqara App不支持查看本地录制的视频,只能把卡拔出来接电脑或手机直接读取
其他发现
室内机会创建一个虚拟网络接口p2p0,IP地址192.168.49.1,进程vidicond会监听这个接口。室外机IP为192.168.49.100,把视频流和事件消息推到vidicond,再继续处理给HomeKit或云端
/ # netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8554 0.0.0.0:* LISTEN 847/rtsp
tcp 0 0 192.168.49.1:27538 0.0.0.0:* LISTEN 844/ha_master
tcp 0 0 0.0.0.0:54324 0.0.0.0:* LISTEN 847/rtsp
tcp 0 0 192.168.49.1:19030 0.0.0.0:* LISTEN 844/ha_master
tcp 0 0 0.0.0.0:26583 0.0.0.0:* LISTEN 844/ha_master
tcp 0 0 127.0.0.1:8600 0.0.0.0:* LISTEN 887/ha_driven
tcp 0 0 127.0.0.1:1883 0.0.0.0:* LISTEN 822/mosquitto
tcp 0 0 192.168.49.1:55771 192.168.49.100:10458 ESTABLISHED 2040/vidicond
tcp 0 0 192.168.49.1:37093 192.168.49.100:10458 ESTABLISHED 2040/vidicond
tcp 0 0 192.168.49.1:52897 192.168.49.100:10458 ESTABLISHED 2040/vidicond
tcp 0 0 192.168.49.1:27538 192.168.49.100:39068 ESTABLISHED 844/ha_master
tcp 0 0 192.168.2.145:55272 81.70.161.152:11111 ESTABLISHED 844/ha_master
tcp 0 0 :::35111 :::* LISTEN 844/ha_master
tcp 0 0 :::23 :::* LISTEN 784/telnetd
844/ha_master
有个mosquitto进程也会自动运行,但只监听本地地址127.0.0.1 尝试修改配置指定其他接口或IP,都不行,看来Aqara是把lo接口硬编码到程序里了。又找了个通用的mosquitto二进制文件,能监听wlan0了,外界也可以连接到这个mqtt broker并订阅所有事件。遗憾的是,门铃的事件消息并不会被发布到这个broker来。所以搞不懂运行这么一个进程的作用,可能之前其他设备的固件移植过来时忘了删?
固件内还有大量的米家miot协议的踪影,启动脚本里甚至有切换平台的函数,但米家里搜不到这个设备型号,没敢尝试
室外机
尝试找到TTL串口,无果
新机G410
两年多后Aqara终于发布了新机G410,从名字看就知道只是G4的升级版。从公开的资料看,升级了5GHz WiFi,这次国内版也没阉割本地TF卡录制了,CMOS升级到了2K分辨率。其他没有区别,外壳一模一样
找到FCC的申报拆机图
室内中继器
SoC不变,还是那颗SSD222D,但这次终于用了两颗WiFi模块,一颗Realtek,还有颗看不清。分别对外通信和发射热点给室外机
室外机
主板不能说毫无区别,只能说一模一样,除了CMOS换成了颗4:3 3MP的,加了两颗电容,其他没有任何变化。SoC还是6年前的君正T31,大量的低端山寨摄像头都在用这颗SoC,WiFi芯片也还是ATBM6411
这就意味着,虽然参数表写的支持5GHz WiFi,但室外机和室内机之间的通信还是基于2.4GHz,可能从之前的802.11b升级到了802.11n。根据木桶短板原理,5G+2.4G还是等于2.4G
注意到了销售界面底部的小字:
*在Aqara Home中可达2048x1536分辨率;在Apple Home中最大为1200P分辨率,如果同时加入Apple Home则Aqara Home最大为 1600x1200分辨率。
翻译成人话就是: 如果你想接入HomeKit,那G410在所有平台的最大分辨率都只是1600x1200P,等于192万像素。而G4在相同情况下的分辨率是1920x1080p,等于207万像素。G410的总像素更低了
根据我多年捡垃圾的经验,G410的物料成本低于100元,卖700多还是太良心了,国外那些动辄几千的门铃才是吃人