Page 1 of 1

BK7238如何退出产测

Posted: 2026年 Oct 19日 11:59
by xiaobaia

问题:如果环境中一直有产测信号,设备是否无论挂多久或者复位都会处于产测状态,在不关闭产测信号和不修改固件的基础上,有什么退出的办法吗?是不是必须要持续联网时间超过15分钟才可以


Re: BK7238如何退出产测

Posted: 2026年 Oct 19日 13:49
by fangweng

结论:是的——只要产测信号一直在、设备还没配过网、且 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 通用固件的产测 SSID tuya_gfw_mf_test(application_components/ty_gfw_mf_test/src/prod_test/ty_gfw_prod_test.c:1081,可被 KV AutoTestCfg.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 自动分析生成,如有疑问请回复补充。