nRF52832 — 修改设备ID和mac地址

 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 XX  作       者:文化人

 XX  联系方式:

 XX  版权声明:原创文章,欢迎评论和转载~转载时能告诉我一声就最好了

 XX  要说的话:作者水平有限,难免有不足之处,恳请指正!

 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

写在前面:接上一篇,因为我们的客户有修改设备ID和mac地址的需求~所以继续调试。

1、首先在微信硬件平台下载安卓版调试工具:AirSyncDebugger;

安装在安卓手机上,按照说明文档去使用它就可以了~

2、在get_mac_addr里添加修改mac地址的代码;

然后使用AirSyncDebugger搜索后,选择BLE的——>AirSync协议——>自动测试,可以看到Connected连接成功~

3、最后介绍一下51822中怎么设置地址;(参考文章:点击打开链接

1)2.0 softdevice:

uint32_t sd_ble_gap_address_set  (uint8_t addr_cycle_mode, const ble_gap_addr_t * p_addr )

typedef struct{

uint8_t addr_type;

uint8_t addr[BLE_GAP_ADDR_LEN];

}ble_gap_addr_t;

addr_cycle_mode 参数为:BLE_GAP_ADDR_CYCLE_MODE_AUTO:

该模式下,会忽略第二个地址参数p_addr 中给的地址addr。协议栈内部会自动周期性根据 p_addr中addr_type指定的地址类型来 生成可解析的或者不可解析的地址。

addr_cycle_mode 参数为:BLE_GAP_ADDR_CYCLE_MODE_NONE:

该模式下,可以使用public地址和自己设置的 static random地址。

如果第二个参数P_addr中的addr_type为staic random类型,则addr中存放的地址的最高2位必须为1,不然这个地址会被认为无效并自动替换,51822会自动替换为蓝牙mac地址。(跟没有调用sd_ble_gap_address_set函数的效果是一样的)

static random address 只有在每次 重新上电后才可改变。

2)3.0 softdevice:

uint32_t sd_ble_gap_addr_set  (ble_gap_addr_tconst* p_addr )

typedef struct{

uint8_t addr_id_peer :1;

uint8_t addr_type :7;

uint8_t addr[BLE_GAP_ADDR_LEN];

}ble_gap_addr_t;

总结:要自己设置地址:

addr_cycle_mode = BLE_GAP_ADDR_CYCLE_MODE_NONE;(3.0协议栈忽略,addr_id_peer保持默认);

addr_type = static random(0x01);

蓝牙地址第1个字节是0xco;

<think>好的,用户的问题是关于推荐支持NRF Connect的Android模拟器。首先,我需要确认用户的需求。他们可能正在开发蓝牙相关的应用,需要使用NRF Connect这个工具来调试或测试蓝牙设备,但由于没有实体Android设备,所以需要一个模拟器。 接下来,我需要回忆一下Android模拟器对蓝牙的支持情况。通常来说,标准的Android模拟器(如Android Studio自带的AVD)在蓝牙功能上有限,尤其是低功耗蓝牙(BLE)的支持可能不完全。这点需要明确告诉用户,避免他们浪费时间尝试不可行的方案。 然后,考虑是否有其他模拟器或替代方案。比如Genymotion,虽然性能不错,但同样可能不支持蓝牙硬件模拟。BlueStacks主要面向游戏,可能也不适合开发用途。这时候,可能需要推荐实体设备,因为很多蓝牙调试工具在真实设备上才能正常工作。 另外,用户提到NRF Connect,这是Nordic Semiconductor开发的工具,主要用于BLE调试。Nordic的官方文档或论坛可能有相关建议,可以建议用户查阅。如果有第三方模拟器支持,比如修改过的Android x86项目,但这类信息可能需要进一步验证,确保可靠性安全性。 还需要考虑用户是否有硬件限制,比如没有Android手机,这时候可能需要建议购买低成本设备或者租赁云端的真机服务,如AWS Device Farm、Firebase Test Lab等,这些服务提供真实设备,可以运行NRF Connect。 最后,整理信息时要分点说明,明确哪些模拟器不适用,哪些替代方案可行,并附上相关引用,确保用户有据可依。同时,生成的相关问题要围绕蓝牙开发、测试工具硬件模拟展开,帮助用户进一步解决可能遇到的问题。</think>根据引用内容,NRF Connect 是用于蓝牙调试的 Android 应用,但标准 Android 模拟器(如 Android Studio 自带的 AVD)通常无法完整支持蓝牙功能,尤其是低功耗蓝牙(BLE)协议栈的模拟。以下是可行方案: ### 推荐方案 1. **使用真机调试** - 直接通过 USB 连接 Android 物理设备,安装 NRF Connect 进行蓝牙开发[^2][^4] - 支持完整的 BLE 协议栈 MAC 地址读取功能 2. **云端真机测试平台** - 选择支持蓝牙的云端测试服务: - **AWS Device Farm**:提供含蓝牙模块的物理设备远程访问 - **Firebase Test Lab**:支持蓝牙功能测试 - 优点:无需本地硬件设备 3. **特殊配置的模拟器(有限支持)** - 通过修改 Android x86 镜像,添加蓝牙 Host-Controller Interface (HCI) 层模拟: ```bash emulator -avd <avd_name> -qemu -usb -device usb-host,vendorid=0x1915,productid=0x1234 ``` - 注意:此方法仅支持基础数据通信测试,无法完全模拟 BLE 特性[^3] ### 不支持的常见模拟器 | 模拟器名称 | 蓝牙支持状态 | |------------------|--------------------------| | Android Studio AVD | 仅支持基础蓝牙框架 | | Genymotion | 无蓝牙协议栈实现 | | BlueStacks | 无开发级蓝牙接口 | ### 相关硬件工具推荐 若需要 MAC 地址模拟,可配合使用 Nordic 官方开发板: - nRF52840 Dongle(支持 BLE 5.1) - nRF Connect SDK 配套硬件[^1]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文化人Sugar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值