T1U 路由设置tuya_mdev_test1的信道为1,进入产测rssi值偏低很多

Wi-Fi 设备、蜂窝设备、WuKongAI、开发板、TuyaOS 移植等


Post Reply
peter996
Posts: 2

1、产测路由信道为1,当进入产测:(非信道1有干扰)
[01-01 08:00:02 ty D][43ed][ty_app_elec_trigger_factory.c:173] prod_test_status: 4
[01-01 08:00:02 ty D][43ed][ty_app_elec_trigger_factory.c:124] ssid:tuya_mdev_test1, target ssid:tuya_mdev_test1
[01-01 08:00:02 ty D][43ed][ty_app_elec_trigger_factory.c:126] rt: 0
[01-01 08:00:02 ty D][43ed][ty_app_elec_trigger_factory.c:177] EVT_ELEC_PROD_TEST_1
[01-01 08:00:02 ty N][43ed][ty_app_elec_trigger_factory.c:195] product test wifi ssid: tuya_mdev_test1, rssi:-78
[01-01 08:00:02 ty N][43ed][ty_app_elec_trigger_factory.c:197] product prod rssi failed!!!

2、同样的位置,有概率会出现不进产测流程,有打印:
[wifi_netcfg_frame_transporter.c:238] channel:01 bssid:d0-c7-c0-87-1d-ba rssi:-28 ssid:tuya_mdev_test1

3、设置产测路由信道为6,就没有这个问题,并且每次都能进入产测,打印:
[01-01 08:00:02 ty D][43ed][ty_app_elec_trigger_factory.c:173] prod_test_status: 4
[01-01 08:00:02 ty D][43ed][ty_app_elec_trigger_factory.c:124] ssid:tuya_mdev_test1, target ssid:tuya_mdev_test1
[01-01 08:00:02 ty D][43ed][ty_app_elec_trigger_factory.c:126] rt: 0
[01-01 08:00:02 ty D][43ed][ty_app_elec_trigger_factory.c:177] EVT_ELEC_PROD_TEST_1
[01-01 08:00:02 ty N][43ed][ty_app_elec_trigger_factory.c:195] product test wifi ssid: tuya_mdev_test1, rssi:-32

4、设置产测路由信道为11,也有问题:(目前就45678可以,1,2,3,9,10,11都不行)
[01-01 08:00:02 ty D][43ed][ty_app_elec_factory.c:80] energy monitor not tested
[01-01 08:00:02 ty D][43ed][ty_app_elec_trigger_factory.c:173] prod_test_status: 4
[01-01 08:00:02 ty D][43ed][ty_app_elec_trigger_factory.c:124] ssid:tuya_mdev_test1, target ssid:tuya_mdev_test1
[01-01 08:00:02 ty D][43ed][ty_app_elec_trigger_factory.c:126] rt: 0
[01-01 08:00:02 ty D][43ed][ty_app_elec_trigger_factory.c:177] EVT_ELEC_PROD_TEST_1
[01-01 08:00:02 ty N][43ed][ty_app_elec_trigger_factory.c:195] product test wifi ssid: tuya_mdev_test1, rssi:-77
[01-01 08:00:02 ty N][43ed][ty_app_elec_trigger_factory.c:197] product prod rssi failed!!!

5、另外问一下,已经联网超过15分钟后的设备,如何还能进产测模式?在ty_app_pre_sdk_init中调用ty_sys_ignore_close_factory_test还是无法进入

其他信息:
[ty_sys.c:280] sdk_info:< TuyaOS V:3.11.31 BS:40.00_PT:2.3_LAN:3.5_CAD:1.0.5_CD:1.0.0 >
< BUILD AT:2025_10_21_17_17_44 BY ci_manage FOR tuyaos-iot AT T1 >
IOT DEFS < WIFI_GW:1 DEBUG:1 KV_FILE:0 LITTLE_END:1 SL:0 OPERATING_SYS


Tags:
愚者千虑必有一得
Posts: 899

你好,我来分析一下这个问题。

从你提供的日志来看,有一个很关键的线索对比:

Code: Select all

[wifi_netcfg_frame_transporter.c:238] channel:01 bssid:d0-c7-c0-87-1d-ba rssi:-28 ssid:tuya_mdev_test1
[ty_app_elec_trigger_factory.c:195] product test wifi ssid: tuya_mdev_test1, rssi:-78

同一个 AP,两次扫描 RSSI 差了 50dB,这不是路由器信号本身的问题,而是产测流程在特定时机扫描时受到了干扰。

根因:信道 1 与蓝牙频段重叠干扰

2.4GHz WiFi 信道1(中心频率 2.412GHz)与蓝牙频段(2.4022.480GHz)有大量重叠。T1U 模组内置 WiFi+BT 共存芯片,在产测流程执行 WiFi 扫描时,如果 BT 活动未被正确抑制,会产生自干扰,导致扫描到的 RSSI 偏低。

信道 6(中心频率 2.437GHz)虽然也与蓝牙有重叠,但在实际测试场景中,信道 1 的干扰通常更严重,因为信道 1 处于蓝牙频段的低端边缘,与 BT 跳频的交叠模式不同。

建议的解决方案(按优先级):

  1. 最简单:调整产测路由器信道为 6 或 11

信道 6(2.437GHz)和信道 11(2.462GHz)是 2.4GHz 的三个不重叠信道之一。你测试信道 6 已经 OK,说明该方案有效。推荐生产线使用信道 6 或信道 11,避免信道 1。

  1. 如果生产线必须使用信道 1:

在 ty_app_elec_trigger_factory.c 的产测触发逻辑中,可以在执行 WiFi 扫描之前增加 BT 关闭或 coexistence 强制 WiFi 优先的操作:

Code: Select all

// 产测扫描前,强制 WiFi 优先(伪代码,需根据实际 SDK API 调整)
tal_wifi_set_coexist_mode(WIFI_PRIORITY);  // 或类似 API
// ... 执行 RSSI 扫描 ...
tal_wifi_set_coexist_mode(COEXIST_DEFAULT); // 扫描后恢复

具体 API 名称需查看你使用的 TuyaOS 版本的 tal_wifi.h 或 BT coexistence 相关头文件。

  1. 调整 RSSI 判断阈值(临时方案,不推荐):

查看 ty_app_elec_trigger_factory.c 中的 RSSI 判断阈值定义,适当放宽(例如从 -65 改为 -80),但这会降低产测对信号质量的检测有效性,仅作为临时验证手段。

总结:根本原因是信道 1 与 BT 频段干扰,推荐直接改用信道 6 或 11 作为产测路由器信道,这是最简单可靠的方案,你已经验证过有效。

peter996
Posts: 2

Re: T1U 路由设置tuya_mdev_test1的信道为1,进入产测rssi值偏低很多

看着像是ai回复的,感觉有点不对。

首先信道11也有一样的问题,之前非tuyaos的版本,没有这个问题,是不是软件迭代导致的这个问题

JSHANG
Posts: 107

Re: T1U 路由设置tuya_mdev_test1的信道为1,进入产测rssi值偏低很多

你好, 将vendor/T1/tuyaos/tuyaos_adapter/src/driver/tkl_wifi.c里面的函数tkl_wifi_station_get_conn_ap_rssi,修改成如下代码,验证一下,谢谢!

OPERATE_RET tkl_wifi_station_get_conn_ap_rssi(SCHAR_T *rssi)
{
int ret = OPRT_OK;
SHORT_T tmp_rssi = 0, sum_rssi = 0;
SCHAR_T max_rssi = -128, min_rssi = 127;
LinkStatusTypeDef sta = {0};
int i = 0, error_cnt = 0;
WF_STATION_STAT_E sta_state = WSS_IDLE;

Code: Select all

tkl_wifi_station_get_status(&sta_state);
if(sta_state != WSS_GOT_IP && sta_state != WSS_CONN_SUCCESS) {
    return OPRT_COM_ERROR;
}

for (i = 0; i < 5; i++) {
    memset(&sta, 0x00, sizeof(sta));
    ret = bk_wlan_get_link_status(&sta);
    if (OPRT_OK == ret) {
        tmp_rssi = sta.wifi_strength;
        if (tmp_rssi > max_rssi) {
            max_rssi = tmp_rssi;
        }
        if (tmp_rssi < min_rssi) {
            min_rssi = tmp_rssi;
        }
    } else {
        error_cnt++;
    }
    sum_rssi += tmp_rssi;
    tkl_system_sleep(10);
}
if (error_cnt > 2) {
    ret = OPRT_COM_ERROR;
} else {
    *rssi = (sum_rssi - min_rssi - max_rssi)/(3 - error_cnt);
}

if(*rssi > -1) {
    *rssi = -1;
}

if(*rssi < -100) {
    *rssi = -100;
}

return ret;

}

Post Reply