Aqara G4在门铃界有点特殊,别家的室内机都只起个响铃的作用,而Aqara的还起到WiFi中继和计算处理推流的作用。室外机只处理ISP图像,通过点对点的WiFi将视频推到室内机,室内机再继续处理,发布到HomeKit或Aqara的云服务器。外界通过网络只能访问到室内中继器

拆机

硬件

  1. 室外摄像头
  • SoC:Ingenic T31ZX
  • CMOS: 16:9 2MP 未知型号
  • WiFi:ATBM6441 集成MCU控制SoC电源
  • Flash:16MB NOR
  1. 室内中继器
  • 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多还是太良心了,国外那些动辄几千的门铃才是吃人