小米(绿米联创)39元 无线开关破解(NXP JN5169 zigbee 3.0开发实战)

前言

话说小米的39元无线开关,买了两个回来,想着说zigbee alliance的规范规定各家的zigbee应该都是在协议栈ZCL层面兼容的,没想到必须配小米的网关才能使用,而且网关价格不菲,就心想能不能破解一下,实现脱离网关控制灯具开关。

直接拿小米的无线开关,ubiqua抓取了一下空中无线数据包,发现默认是工作在11信道上,而且TCLK不用说了用的zigbee alliance推荐的。又测试了一下能否加入TI CC2538协调器创建的网络,是可以加入的,但是没有key exchange动作,基本表明小米是给予zigbee Pro 2.x版本开发的,并不是最新的3.0协议栈。加入以后按一下面板上按键,只能发出Basic cluster的report attribute,奇怪的是按下和弹起分别发送一次report attribute,不解为何这样做,不费电吗。
另外发现有一颗电阻没有作用,但是还是贴着,出货量非常大的情况下,这不都是成本吗

实现目的

  • 目的非常简单,我们知道,zigbee除了单播模式之外,还有组播和广播,笔者就想让小米无线开关工作在组播模式,并且组播地址还可以配置,这样就完全可以脱离网关了,但是空中抓包分析发现,小米默认report attribute的时候,目的短地址是0x0000,也就是协调器的地址,所以必须网关来转发数据。

开发准备工作

  • 先盗两张外观图:
    小米(绿米联创)39元 无线开关破解(NXP JN5169 zigbee 3.0开发实战)_第1张图片

小米(绿米联创)39元 无线开关破解(NXP JN5169 zigbee 3.0开发实战)_第2张图片

  • 再上硬件线序图
    小米(绿米联创)39元 无线开关破解(NXP JN5169 zigbee 3.0开发实战)_第3张图片

  • 固件烧写方法是,把ISP脚和地短接然后上电,就直接进入ISP模式了,使用NXP提供的JN51xxProgrammer.exe命令行烧写工具就可以烧写固件了,熟悉ISP机制的朋友都不陌生)

NXP JN5169 Zigbee 3.0协议栈开发

  • 提起zigbee,目前网上多数都是关于在TI平台开发的资料,在NXP平台开发的几乎没有,不知道为什么如此冷门,貌似NXP的技术支持也不像TI e2e那样简单易用。

其他说明 见NXP jn5169开发环境搭建见链接


重新从2.x协议栈迁移到最近的3.0协议栈,搞定了最新的固件,直接烧写进去,完全可以组播控制了,也不需要网关。
3.0的稳定性比2.x好很多,另外bdb的入网以及操作方式比ezMode友好的太多了

国际惯例,github源代码上来

  • source code github
JN5169 Zigbee 3.0 加入TI CC2538网络:

小米(绿米联创)39元 无线开关破解(NXP JN5169 zigbee 3.0开发实战)_第4张图片

你可能感兴趣的:(嵌入式软件)