打印

2.4G无线遥控通讯协议**—美嘉欣/nRF24L01+/BK2423

[复制链接]
17097|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 anchangnice 于 2017-4-14 11:23 编辑

2.4G无线遥控通讯协议破解—美嘉欣
      
准备做平衡车,缺个遥控器,又不想用手机App。刚好手中有个之前买的遥控直升机,配套的2.4G遥控器看着还行,就打算拿来用在平衡车上。于是就开始了破解。先看图吧!
      
经拆解发现(遥控器端2.4G模块是COB封装的看不出,只能在接收端看芯片型号)为BK2423(和nRF24L01兼容)。于是就可以nRF24L01为接收机接收遥控器数据。当然反过来,也可以用nRF24L01来遥控直升机。
              
查数据手册:(这里用nRF24L01数据手册BK2423多了一个BANK寄存器但是只有初始化时使用、其余通用)(BK2423的数据手册做的不好,毫无美感,看地眼痛心累)
1.     数据格式
2.     兼容模式(如何配置接收端)
3.     SPI时序(看懂时序图)
4.     指令(根据3看4、5)
5.     寄存器(部分)
  
  
抓数据通过遥控器的2.4G模块SPI接口获取配置信息,通讯协议跳频列表。
       工具: Saleae Logic 16 Clone(逻辑分析仪)、
                      Saleae Logic 1.2.10(官方软件)、
                  SigrokPulseView(开源软件)。
(逻辑分析仪这个不是必须的,例:Arduino SPI 来捕获数据,就是在确定引脚的时候会有点麻烦,因为发送端模块的引脚定义不明,但是可以通过单片机新唐N79E814AT20的SPI引脚来查,遥控器的主控用的这个单片机)

下面是硬件和软件的截图:
开整:
1.     连线:(做了个接头直接卡在模块的引脚上,共9个引脚)
2.     连接逻辑分析仪、打开软件开始捕获、打开遥控器电源、开始配对、配对成功、操控摇杆一段时间、终止。以25MHz的采样率采集15s,九个引脚对应九个通道。(把开机配置、对频、工作跳频的整个过程都采集下来进行后续的分析
3.     根据SPI时序图找出MOSI、MISO、CS、CLK。

4.     用SPI协议进行分析
5.     查找关键数据:
         形式:指令:写指令(0x20) +寄存器地址(0xXX)
         数据:D7D6D5D4D3D2D1D0
       指令:
                 W_TX_PAYLOAD:                                 =    0xA0
               CRC                      0x20+ 0x00        =    0x20
               AutoAck:                 0x20+ 0x01       =    0x21
               地址宽度 :                0x20 + 0x03       =    0x23
               频道                      0x20 + 0x05       =    0x25
               数据速率               0x20+ 0x06        =    0x26
               数据位宽度            没有查到,可通过0xA0查找W_TX_PAYLOAD查看入数据的字节数
               发送地址               0x20+ 0x10        =    0x30
       数据:
CRC0x0E : 0000 1110
                1.    开启CRC
                2.    2 Bytes
                3.    PWR_UP
AutoAck: 0x00 : 0000 0000
                1.     关闭所有
地址宽度0x03: 0000 0011
                1.    5 Bytes
数据速率0x05 : 0000 0101
                1.     1Mbps
发送地址0x6D 0x6A 0x73 0x73 0x73 : “mjsss
                     
              注:右下角的Decoded Protocol 列表中配置命令有多个,如有两个则
                     下一个是BK2423独有的寄存器配置。多个有部分为数据。
频道:经检查发现有两个跳频列表
1.    配对未完成时:(至今也没搞明白这个是干什么的,猜测是对频的部分,但是不清楚对频的方式)
2.    配对成功后:
Cycle列表每个频道发送两次,循环管往复。
发送数据位宽度由W_TX_PAYLOAD:0xA0 发现:16 Bytes
所有必须的信息已经知道了:接下来开始接收数据进行验证!
Arduino 程序 RF24 Lib
[size=18.6667px]权限不够不能分享URL(慢慢的恶意啊^.^)
[size=18.6667px]这里有两个工程:Arduino & VS2013, 自行下载,篇幅超出范围不能贴出来了
[size=18.6667px]pan.baidu.com/s/1jIBOXJC#list/path=%2F
由于不清楚对频过程所以可以不进行对频(漏洞:在对频过程中只要摇动任意摇杆就会打断对频直接进入工作状态)
连接硬件:
VCC     —>3.3V
GND    —>GND
CE       —>Pin 7
CSN    —>Pin 8
IRQ    —>Pin 2



开始接收数据!
自左向右依次:0:油门、1:左右转、2:前后飞、3:左右飞、4:左右转微调、5:前后飞微调、6:左右飞微调、14:操作模式/灵敏度、15:校验和。(其余数据含义未知)

至此全部工作已经完成。
总的做下来难道并不高,但是锻炼了自己。把它写下来一方面是总结一下自己所做的工作、步骤,另一方面希望能够对大家有所帮助。


附录:我在上文中提到了sigrok这个开源软件,但是并未提及(因为发现越写思路越清晰,就用不到了),这里作为补充。
Sigrok是一个开源跨平台信号分析软件、支持大量设备。它不仅能够提供通讯协议分析、更可以具体到具体的芯片,比如这里用到的nRF24L01+,它以SPI作为通讯接口,那么就可以应用SPI分析数据内容,进而解析其含义。
这里以一个数据传输过程为例:
sigrok支持大量的通讯协议和芯片解码,有需要的可以了解一下。
注:暂不支持本文中的设备,折腾了很久,从win7到Ubuntu都试过了就是不行。我是通过官方软件导出为Raw Binary的形式再导入sigrok进行分析的,这个是最快捷的方法。 it依次为0~7Channel,在导入时选择的通道数n是指导入0~(n-1)。另外要填写采样率,单位为Hz。
评论
cr8526 2021-1-20 12:38 回复TA
如何才能收藏呢 
评分
参与人数 1威望 +5 收起 理由
lfjwfm + 5 赞一个!

相关帖子

沙发
XIAO肖| | 2017-4-14 14:39 | 只看该作者
量产了?

使用特权

评论回复
板凳
mohanwei| | 2017-4-18 13:58 | 只看该作者
之前开发这个2.4G产品的时候在产品软件里集成了BK242X(nRF24L01)的分析工具,逻辑分析仪抓取数据后,直接解成SPI码流,进而解析成C源码,一步到位

使用特权

评论回复
地板
ZHNAGR| | 2017-4-19 10:54 | 只看该作者
好厉害呀。

使用特权

评论回复
5
daikaifapiao888| | 2017-5-16 10:08 | 只看该作者
好厉害呀。

使用特权

评论回复
6
feyx| | 2017-7-7 15:14 | 只看该作者
厉害,学习。。。

使用特权

评论回复
7
wzr200408| | 2017-9-4 17:24 | 只看该作者
这个很厉害,帮顶

使用特权

评论回复
8
next8| | 2017-10-10 18:56 | 只看该作者
真心赞

使用特权

评论回复
9
地瓜patch| | 2017-10-11 22:10 | 只看该作者
技术含量挺高

使用特权

评论回复
10
aequxyz| | 2017-10-25 08:37 | 只看该作者
谢谢,学习!

使用特权

评论回复
11
梦想的天空| | 2017-10-26 13:12 | 只看该作者
mohanwei 发表于 2017-4-18 13:58
之前开发这个2.4G产品的时候在产品软件里集成了BK242X(nRF24L01)的分析工具,逻辑分析仪抓取数据后,直接解 ...

这个办法好,爽歪歪,一劳永逸,

使用特权

评论回复
12
axushilong| | 2017-10-28 09:34 | 只看该作者
666666,这么搞能**网银U顿的USB不?

使用特权

评论回复
13
因火生烟| | 2018-1-9 11:00 | 只看该作者
厉害

使用特权

评论回复
14
flyger| | 2018-4-9 11:08 | 只看该作者
本帖最后由 flyger 于 2018-4-9 17:19 编辑

我用楼主的方法试了一下,在我的逻辑分析仪解码区看不到nrf24l01的配置信息(地址宽度、数据速率、发送地址等),只有发送的数据信息(0xa0),楼主能帮忙分析一下吗?

使用特权

评论回复
15
cornrn| | 2018-5-3 10:05 | 只看该作者
正在尝试用楼主的方法,就是我这个引脚不好焊接,找不到焊接点,咋办

使用特权

评论回复
16
springvirus| | 2018-5-4 17:04 | 只看该作者
不错,很强大

使用特权

评论回复
17
解博| | 2018-5-6 22:49 | 只看该作者
楼主能认识下吗? 我有个协议需要**,折腾了1年多,也没结果,有偿**。

使用特权

评论回复
18
wuyannan52100| | 2019-8-19 08:49 | 只看该作者
求联系方式

使用特权

评论回复
19
m114714336| | 2019-8-19 18:28 | 只看该作者
看起来不错,收藏了

使用特权

评论回复
20
cnhefp| | 2020-8-6 12:52 | 只看该作者
您好,我有一个2.4G的电动床遥控器,我们现在希望实现自动遥控,需要对原有的遥控器解码。那你可以提供有偿服务吗?13823055666,微信同号,盼回复。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

3

粉丝