问题:如果环境中一直有产测信号,设备是否无论挂多久或者复位都会处于产测状态,在不关闭产测信号和不修改固件的基础上,有什么退出的办法吗?是不是必须要持续联网时间超过15分钟才可以
BK7238如何退出产测
Re: BK7238如何退出产测
结论:是的——只要产测信号一直在、设备还没配过网、且 KV mf_test_close 没被置位,BK7238 每次复位都会重新进产测,挂多久都不会自己退出。那个 15 分钟只在设备“正常启动并激活成功”后才开始计时,卡在产测里永远等不到。
为什么会这样
- 开机走完
mf_init后,立刻调一次prodtest_ssid_scan(500)(apps/t1_common_user_config_ty/src/tuya_app_main.c:199,206),只在开机时扫 channel 6 上 T1 通用固件的产测 SSIDtuya_gfw_mf_test(application_components/ty_gfw_mf_test/src/prod_test/ty_gfw_prod_test.c:1081,可被 KVAutoTestCfg.pt_ssid覆盖)。 - 命中且设备“未配网”(
nc_tp < 3且md == 0)时直接返回 true,device_init()不再执行 → devos 不启动 → 永远收不到EVENT_RUN→ 15 分钟定时器根本不启动(components/svc_mf_test/src/product_autotest/prod_test.c:280)。 - 15 分钟是
EVENT_RUN(云端激活完成,components/svc_devos/src/tuya_svc_devos.c:201)后的一次性定时器(mf_test.c:280),不是“累计挂机时间”,也不是“持续联网时长”。 - 真正的总闸门是 KV
mf_test_close=true:mf_init与 SSID 扫描都先查它(mf_test.c:314、prod_test.c:291)。
退出办法(不关信号、不改固件)
| 方法 | 适用场景 | 说明 |
|---|---|---|
| 上位机写 KV 标志 | 任意 | 走 KV 通道 0x1C 写 mf_test_close=true,再复位,之后信号一直在也不会进产测 |
| 正常模式跑满 15 分钟 | 已配网/已激活 | 框架自动写入该标志,这就是“15 分钟”的来源 |
| 开机瞬间屏蔽信号 | 临时规避 | 扫描只在开机做一次,约 500 ms,这一瞬间放进屏蔽箱即可跳过本次 |
方法一可发如下 JSON(在线 5561 认证后或串口通道均可):
Code: Select all
{"type":0,"key":"mf_test_close","value":"true"}补充
- 已在产测里时,离线通道发
0xF0 + 0xFF01(SUB_CMD_DISCONNECT)会让设备重启,在线则直接断开上位机;但单纯复位会重新进产测,必须先做方法一或二。 - 别用恢复出厂/清 KV 来退出,那会把
mf_test_close一起清掉,反而更容易重进。 - 若设备只是没有 Wi-Fi 配置,用产测工具写入正常路由的 SSID/密码并连接一次(
nc_tp >= 3),下次启动 SSID 扫描就会主动放弃,这也是有效出路。
以上内容由 AI 自动分析生成,如有疑问请回复补充。