【Homeassistant指难】四、搞定小米网关2的key,接入HA本地控制小米IoT设备。

By | 2024-12-19

几个月前研究记录的搬运,当时为了帮朋友搞定小米网关2的key研究了一下使用linux直接破解。不过在2024年12月17日小米开源Homeassistant的官方插件,可以直接接入了,并且可以本地控制,先放下小米官方插件的链接,如果不需要自己折腾的直接引用官方插件即可。安装方法如下。

https://github.com/XiaoMi/ha_xiaomi_home/blob/main/doc/README_zh.md

愿意自己折腾的,看我的这种。这个操作以后还是能进入网关的shell获取到更多有用的东西。获取到token和key之后需要在Homeassistant中添加并且配置小米xiaomi_gateway3 插件。

小米网管拆开,找到ttl接口,接好。
但是我没有用其他的工具。因为我这个串口是PL2303的芯片,已经没有win10下面whql的驱动了。所以不得不在Linux下面搞,然后翻了一下宏,其实很简单。原理是在bootloader阶段打断系统启动。
然后把bootargs里面的/linuxrc 替换成/bin/sh,然后继续引导。进入系统后就可以操作分区了。**

/ # mount -t ramfs ramfs /var; mkdir /var/tmp
/ # cp /etc/init.d/rcS /var/tmp/rcS
/ # sed -i 's/fw_manager.sh -r/echo skip/g' /var/tmp/rcS
/ # sed -i 's/${CUSTOM_POST_INIT} &/echo skip/g' /var/tmp/rcS
/ # /var/tmp/rcS

这些执行之后。修改密码

/ # passwd -d root

然后就能看到token啦

cat /data/miio/device.token

设备的key

cat /data/miio/device.conf

全程不需要那个终端软件和宏啦。
以上操作粗体字部份是关键,因为终端中显示不全这个环境变量。
注意这个不要换行要一行写完。

setenv bootargs root=/dev/mtdblock8 rootfstype=squashfs ro init=/bin/sh LX_MEM=0x7FE0000 mma_heap=mma_heap_name0,miu=0,sz=0x500000 cma=2M mmap_reserved=fb,miu=0,sz=0x300000,max_start_off=0x7C00000,max_end_off=0x7F00000 mtdparts=nand0:1664k@0x140000(BOOT0),1664k(BOOT1),256k(ENV),256k(ENV1),128k(KEY_CUST),5m(KERNEL),5m(KERNEL_BAK),16m(rootfs),16m(rootfs_bak),1m(factory),20m(RES),-(UBI)

然后

run bootcmd