{"release":{"tag":{"name":"V4.1.1.0","path":"/telink-semi/tc_ble_mesh/tags/V4.1.1.0","tree_path":"/telink-semi/tc_ble_mesh/tree/V4.1.1.0","message":"","commit":{"id":"655644f04f9200c6fd55cc456f874fa2042c9ab6","short_id":"655644f","title":"clean(ios): clean misspell","title_markdown":"clean(ios): clean misspell","description":"","description_markdown":"","message":"clean(ios): clean misspell\n","message_markdown":"clean(ios): clean misspell","detail_path":"/telink-semi/tc_ble_mesh/commit/655644f04f9200c6fd55cc456f874fa2042c9ab6","commits_path":"/telink-semi/tc_ble_mesh/commits/655644f04f9200c6fd55cc456f874fa2042c9ab6","tree_path":"/telink-semi/tc_ble_mesh/tree/655644f04f9200c6fd55cc456f874fa2042c9ab6","author":{"name":"liangjiazhi","email":"jiazhi.liang@telink-semi.com","username":null,"user_path":null,"enterprise_user_path":null,"image_path":"no_portrait.png#liangjiazhi-","is_gitee_user":false,"is_enterprise_user":null,"widget_url":null},"committer":{"name":"liangjiazhi","email":"jiazhi.liang@telink-semi.com","username":null,"user_path":null,"enterprise_user_path":null,"image_path":"no_portrait.png#liangjiazhi-","is_gitee_user":false,"is_enterprise_user":null,"widget_url":null},"authored_date":"2026-02-09T20:56:00+08:00","committed_date":"2026-02-09T20:56:00+08:00","signature":null,"build_state":null},"archive_path":"/telink-semi/tc_ble_mesh/repository/archive/V4.1.1.0","signature":null},"operating":{"edit":false,"download":true,"destroy":false,"enterprise_forbid_zip":false},"release":{"title":"Release V4.1.1.0","path":"/telink-semi/tc_ble_mesh/releases/tag/V4.1.1.0","tag_path":"/telink-semi/tc_ble_mesh/tree/V4.1.1.0","project_id":37590465,"created_at":"2026-02-10T11:01:59+08:00","is_prerelease":false,"description":"# V4.1.1.0 (PR)\r\n\r\n### Version\r\n* SDK version: tc_ble_mesh_V4.1.1.0\r\n* Chip Version\r\n  - B85: TLSR825X\r\n  - B87: TLSR827X\r\n  - TC321X (A0/A1)\r\n* Hardware Version\r\n  - B85: C1T139A30_V1_2, C1T139A5_V1_4, C1T139A3_V2_0\r\n  - B87: C1T197A30_V1_1, C1T197A5_V1_1, C1T201A3_V1_0\r\n  - TC321X: C1T357A20_V1_2, C1T357A20_V2_0\r\n* BLE sdk Version\r\n  - tc_ble_single_sdk V3.4.2.8_Patch_0001\r\n* Toolchain Version\r\n  - TC32 ELF GCC4.3 ( IDE: [Telink IoT Studio](https://www.telink-semi.com/development-tools) )\r\n\r\n### Features\r\n* **Firmware**\r\n  - Support TC321X chip A0/A1.\r\n  - Sync the BLE SDK to version tc_ble_single_sdk V3.4.2.8_Patch_0001.\r\n  - Add attention timer feature(PROVISION_ATTENTION_TIMER event).The selected node flashes its LED as a visual indicator.This requires the app to use normal (confirm) mode.\r\n  - Add SAVE_SNO_CACHE_EN option to save replay protection list in flash, disable by default, set to 1 to enable.\r\n  - Add the 825x_kma_master_dongle firmware to be used with the sig_mesh_tool.exe PC tool.\r\n* **Android/iOS**\r\n  - support provision confirm mode.\r\n* **Harmony**\r\n  - support for device provisioning and key binding.\r\n  - support for on off/lightness/ ct / HSL control.\r\n  - support for device grouping configuration and grouping control.\r\n  - support for setting device publication.\r\n  - support for device gatt OTA.\r\n  - support for modifying device config information.\r\n  - support for setting device scheduler.\r\n  - support for scene configuration.\r\n  - support for local network management.\r\n\r\n### Bug Fixes\r\n* **Firmware**\r\n\t* **PLL**\r\n\t  * for B87\r\n\t\t- The criteria for determining the stability of the PLL have become more stringent.\r\n\t\t- Detailed Description: Previously, the criteria for determining the stability of the PLL was considered passed if detected once.\r\n\t\t- After Fix: The criteria for determining the stability of the PLL is only considered passed if it is detected three times consecutively (to improve reliability).\r\n\t\t- Update Recommendation: Recommended update.\r\n\t* **PM**\r\n\t\t* For B85, fix cpu_long_sleep_wakeup() failure with external 32k crystal.\r\n\t\t\t- Detailed Description: cpu_long_sleep_wakeup() function abnormal when using an external 32k crystal configured via the blc_pm_select_external_32k_crystal() function.\r\n\t\t\t- After Fix: If an external 32k crystal is used, the macro cpu_long_sleep_wakeup must be redefined as cpu_long_sleep_wakeup_32k_xtal in pm.h to ensure the function operates correctly.\r\n\t\t\t- Update Recommendation: Mandatory update if external 32k crystal and cpu_long_sleep_wakeup() are used.\t\t\r\n\t\t* For (B85/B87), Resolve the low-probability inaccuracy in sleep duration caused by the delayed disabling of global interrupt during the sleep entry process.\r\n\t\t\t- Detailed Description：If an interrupt happened to trigger and the interrupt handling took a long time when entering sleep mode. It may cause an incorrect sleep duration.\r\n\t\t\t- After fix：Interrupts are now disabled immediately when entering sleep mode.\r\n\t\t\t- Update Recommendation: If power management was used, must update.\r\n\t* **Application**\r\n\t\t* spirit_lpn\r\n\t\t  - For B85/B87，fixed the issue where spirit_lpn failed to enter scan mode after waking up from suspend.\r\n\t\t\t- Detailed Description：The default sleep interval for Spirit LPN is 360ms, and scan is enabled in user_init_deepRetn(). If the sleep time is less than 50 ms, device will enter suspend mode.\r\n\t\t\t\t\t\t\t\t\tScan was not re-enabled after suspend up, which may cause packet reception loss.\r\n\t\t\t- After fix: Scan is enabled according to the scanning cycle after waking up from suspend.\r\n\t\t\t- Update Recommendation: If use spirit_lpn, must update.\r\n\t\t* private online status\r\n\t\t  - Fixed the issue where the online status callback function light_node_status_change_cb() did not report offline status.\r\n\t\t\t- Detailed Description：When ONLINE_STATUS_EN was enabled and register_mesh_node_status_callback(light_node_status_change_cb) was called to register the callback, the light_node_status_change_cb() function did not report offline status.\r\n\t\t\t- After fix：The light_node_status_change_cb() function now correctly reports offline status.\r\n\t\t\t- Update Recommendation: If ONLINE_STATUS_EN was enabled and register_mesh_node_status_callback(light_node_status_change_cb) was called, must update.\r\n\t\t* mesh_switch\r\n\t\t  - Fixed incorrect sleep duration for mesh_switch in switch_check_and_enter_sleep().\r\n\t\t\t  - Detailed Description: When the switch IV update timer exceeded 32 hours (SWITCH_LONG_SLEEP_TIME_S) but was less than 96 hours (SWITCH_IV_SEARCHING_INTERVAL_S), the sleep interval was only 1 second.\r\n\t\t\t  - After Fix: When the switch IV update timer exceeds 32 hours (SWITCH_LONG_SLEEP_TIME_S) but is less than 96 hours (SWITCH_IV_SEARCHING_INTERVAL_S), the sleep interval is now 32 hours.\r\n\t\t\t  - Update Recommendation: If the application uses switch_check_and_enter_sleep() for sleep, must update.\r\n\r\n### Refactoring\r\n* N/A\r\n\r\n### Optimization\r\n* **Firmware**\r\n\t- add CONFIG_ALWAYS_GET_ROUTE_FROM_FLASH option in directed forwarding to save non-fixed entries in flash, reducing RAM usage. Enable by default。\r\n* **iOS**\r\n\t- Optimize the timeout calculation method for LPN device instructions.\r\n\t- Optimize the judgment of the retrievedUpdatePhase parameter completed by MeshOTA.\r\n\t- Optimize the timeout calculation method for KeyBind on non-directly connected nodes.\r\n\t- Optimize the method for converting HSL to RGB.\r\n\r\n### BREAKING CHANGES\r\n* N/A\r\n\r\n### Notes\r\n* to avoid compilation errors or loss of functionality, please update all files when upgrading the SDK.\r\n\r\n### CodeSize\r\n* **B85**\r\n\r\n| reference design   | Firmware size (kBytes)    | total SRAM size (kBytes)     | deepsleep retention SRAM size (kBytes) | code stack size (kBytes)  | \r\n| :-------------     | :-----------------------: | :--------------------------: | :-----------------------------------:  | :-----------------------: |\r\n| 8258_mesh          | 129.5                     | 27.3                         | N/A                                    | 3.0\t\t\t\t\t\t  |\r\n| 8258_mesh_gw       | 129.0                     | 30.5                         | N/A                                    | 3.0\t\t\t\t\t\t  |\r\n| 8258_mesh_lpn      | 123.8                     | 21.8                         | 20.7                                   | 3.0\t\t\t\t\t\t  |\r\n| 8258_mesh_switch   | 115.9                     | 24.6                         | 23.5                                   | 3.0\t\t\t\t\t\t  |\r\n\r\n* **B87**\r\n\r\n| reference design   | Firmware size (kBytes)    | total SRAM size (kBytes)     | deepsleep retention SRAM size (kBytes) | code stack size (kBytes)  |\r\n| :-------------     | :-----------------------: | :--------------------------: | :-----------------------------------:  | :-----------------------: |\r\n| 8278_mesh          | 128.9                     | 29.0                         | N/A                                    | 3.0\t\t\t\t\t\t  |\r\n| 8278_mesh_gw       | 128.4                     | 31.1                         | N/A                                    | 3.0\t\t\t\t\t\t  |\r\n| 8278_mesh_lpn      | 123.1                     | 23.6                         | 22.5                                   | 3.0\t\t\t\t\t\t  |\r\n| 8278_mesh_switch   | 115.0                     | 26.1                         | 25.0                                   | 3.0\t\t\t\t\t\t  |\r\n\r\n* **TC321X**\r\n\r\n| reference design   | Firmware size (kBytes)    | total SRAM size (kBytes)     | deepsleep retention SRAM size (kBytes) | code stack size (kBytes)  |\r\n| :-------------     | :-----------------------: | :--------------------------: | :-----------------------------------:  | :-----------------------: |\r\n| tc321x_mesh        | 133.2                     | 26.3                         | N/A                                    | 3.0\t\t\t\t\t\t  |\r\n| tc321x_mesh_gw     | 134.4                     | 31.2                         | N/A                                    | 3.0\t\t\t\t\t\t  |\r\n| tc321x_mesh_lpn    | 127.9                     | 21.8                         | 20.6                                   | 3.0\t\t\t\t\t\t  |\r\n| tc321x_mesh_switch | 118.5                     | 22.2                         | 21.1                                   | 3.0\t\t\t\t\t\t  |\r\n\r\n### Version\r\n\r\n* SDK 版本: tc_ble_mesh_V4.1.1.0\r\n* Chip 版本\r\n  - B85: TLSR825X\r\n  - B87: TLSR827X\r\n  - TC321X (A0/A1)\r\n* Hardware 版本\r\n  - B85: C1T139A30_V1_2, C1T139A5_V1_4, C1T139A3_V2_0\r\n  - B87: C1T197A30_V1_1, C1T197A5_V1_1, C1T201A3_V1_0\r\n  - TC321X: C1T357A20_V1_2, C1T357A20_V2_0\r\n* BLE sdk 版本\r\n  - tc_ble_single_sdk V3.4.2.8_Patch_0001\r\n* Toolchain 版本\r\n  - TC32 ELF GCC4.3 ( IDE: [Telink IoT Studio](https://www.telink-semi.com/development-tools) )\r\n\r\n### Features\r\n* **Firmware**\r\n  - 支持 TC321X A0/A1芯片。\r\n  - 同步BLE SDK 到版本 tc_ble_single_sdk V3.4.2.8_Patch_0001。\r\n  - 添加LED闪灯事件来指示哪个节点被选中进行组网，即attention timer功能，对应PROVISION_ATTENTION_TIMER事件。使用时，App的组网模式需要选择normal(confirm)模式。\r\n  - 添加SAVE_SNO_CACHE_EN选项，保存收到的mesh消息的sequence number（即消息重放表）到flash，默认关闭。\r\n  - 添加搭配sig_mesh_tool.exe上位机工具使用的825x_kma_master_dongle固件。\r\n* **Android/iOS**\r\n  - 添加支持provision confirm 模式。\r\n* **Harmony**\r\n  - 支持设备provision及keybind。\r\n  - 支持调节开关/亮度/色温/HSL。\r\n  - 支持设备分组配置与分组控制。\r\n  - 支持配置设备publish状态。\r\n  - 支持设备OTA。\r\n  - 支持修改设备config信息。\r\n  - 支持闹钟配置。\r\n  - 支持场景配置。\r\n  - 支持本地网络管理。\r\n\r\n### Bug Fixes\r\n* **Firmware**\r\n\t* **PLL**\r\n\t  * for B87\r\n\t\t- 将PLL稳定性判断的标准变得更严格。\r\n\t\t- 详细描述：之前，判断PLL稳定性的标准是只要检测到一次就认为通过了。\r\n\t\t- 修复效果：判断PLL稳定性的标准仅在连续检测到三次时才认为通过了（提高可靠性）。\r\n\t\t- 更新建议：建议更新。\r\n\t* **PM**\r\n\t\t* 对于 B85, 修复使用外部32k晶振时cpu_long_sleep_wakeup()失败问题.\r\n\t\t\t- 详细描述: 当通过 blc_pm_select_external_32k_crystal() 函数配置使用外部 32k 晶振时，cpu_long_sleep_wakeup()休眠功能异常。\r\n\t\t\t- 修复效果: 如果使用外部晶振，需在pm.h文件中将宏 cpu_long_sleep_wakeup 重定义为 cpu_long_sleep_wakeup_32k_xtal保证cpu_long_sleep_wakeup()函数正常工作。\r\n\t\t\t- 更新建议: 当外部晶振和cpu_long_sleep_wakeup()使用时，需要更新。\r\n\t\t* 对于B85/B87，修复进入休眠时由于未及时关中断导致的低概率休眠时间不对问题。\r\n\t\t\t- 详细描述：进入休眠时，如果刚好触发中断且中断处理时间长，会导致休眠时间不对。\r\n\t\t\t- 修复效果：进入休眠时，立刻关闭中断。\r\n\t\t\t- 更新建议: 如果有使用低功耗，需要更新。\r\n\t* **Application**\r\n\t\t* spirit_lpn\r\n\t\t- 对于B85/B87，修复spirit_lpn从suspend唤醒后未进入扫描问题。\r\n\t\t\t- 详细描述：默认spirit_lpn休眠间隔360ms，扫描是在user_init_deepRetn()中打开的。如果spirit_lpn休眠间隔小于50ms，会进入suspend休眠，唤醒后未重新打开扫描，可能导致接收丢包。\r\n\t\t\t- 修复效果：suspend唤醒后也会按照扫描周期打开扫描。\r\n\t\t\t- 更新建议: 如果使用spirit_lpn，需要更新。\r\n\t\t* private online status\r\n\t\t- 修复online status状态回调处理函数light_node_status_change_cb()未上报离线状态问题。\r\n\t\t\t- 详细描述：代码中打开ONLINE_STATUS_EN，调用register_mesh_node_status_callback(light_node_status_change_cb)注册后，light_node_status_change_cb中未上报离线状态。\r\n\t\t\t- 修复效果：light_node_status_change_cb中正常上报离线状态。\r\n\t\t\t- 更新建议：如果有使用私有的online status功能，且调用register_mesh_node_status_callback(light_node_status_change_cb)注册回调函数，需要更新。\r\n\t\t* mesh_switch\r\n\t\t  - 修复mesh_switch中switch_check_and_enter_sleep()函数休眠时间设置不对问题。\r\n\t\t\t- 详细描述：switch iv更新计时超过在32小时(SWITCH_LONG_SLEEP_TIME_S)，但小于96小时（SWITCH_IV_SEARCHING_INTERVLAL_S）时，休眠间隔只有1秒钟。\r\n\t\t\t- 修复效果：switch iv更新计时超过在32小时(SWITCH_LONG_SLEEP_TIME_S)，但小于96小时（SWITCH_IV_SEARCHING_INTERVLAL_S）时，休眠间隔32小时。\r\n\t\t\t- 更新建议：如果使用mesh_switch，需要更新。\r\n\r\n### Refactoring\r\n* N/A\r\n\r\n### Optimization\r\n* **固件**\r\n\t- 路由功能添加CONFIG_ALWAYS_GET_ROUTE_FROM_FLASH选项，把非固定路由表保存到flash来节省ram，默认打开。\r\n* **iOS**\r\n\t- 优化LPN设备指令的超时计算方法。\r\n\t- 优化MeshOTA完成的retrievedUpdatePhase参数的判断。\r\n\t- 优化对非直连节点KeyBind的超时计算方法。\r\n\t- 优化HSL转RGB的方法。\r\n\r\n### BREAKING CHANGES\r\n* N/A\r\n\r\n### Notes\r\n* 为避免编译错误以及功能丢失，升级SDK时，请确认更新全部SDK文件。\r\n\r\n### CodeSize\r\n* **B85**\r\n\r\n| reference design   | Firmware size (kBytes)    | total SRAM size (kBytes)     | deepsleep retention SRAM size (kBytes) | code stack size (kBytes)  | \r\n| :-------------     | :-----------------------: | :--------------------------: | :-----------------------------------:  | :-----------------------: |\r\n| 8258_mesh          | 129.5                     | 27.3                         | N/A                                    | 3.0\t\t\t\t\t\t  |\r\n| 8258_mesh_gw       | 129.0                     | 30.5                         | N/A                                    | 3.0\t\t\t\t\t\t  |\r\n| 8258_mesh_lpn      | 123.8                     | 21.8                         | 20.7                                   | 3.0\t\t\t\t\t\t  |\r\n| 8258_mesh_switch   | 115.9                     | 24.6                         | 23.5                                   | 3.0\t\t\t\t\t\t  |\r\n\r\n* **B87**\r\n\r\n| reference design   | Firmware size (kBytes)    | total SRAM size (kBytes)     | deepsleep retention SRAM size (kBytes) | code stack size (kBytes)  |\r\n| :-------------     | :-----------------------: | :--------------------------: | :-----------------------------------:  | :-----------------------: |\r\n| 8278_mesh          | 128.9                     | 29.0                         | N/A                                    | 3.0\t\t\t\t\t\t  |\r\n| 8278_mesh_gw       | 128.4                     | 31.1                         | N/A                                    | 3.0\t\t\t\t\t\t  |\r\n| 8278_mesh_lpn      | 123.1                     | 23.6                         | 22.5                                   | 3.0\t\t\t\t\t\t  |\r\n| 8278_mesh_switch   | 115.0                     | 26.1                         | 25.0                                   | 3.0\t\t\t\t\t\t  |\r\n\r\n* **TC321X**\r\n\r\n| reference design   | Firmware size (kBytes)    | total SRAM size (kBytes)     | deepsleep retention SRAM size (kBytes) | code stack size (kBytes)  |\r\n| :-------------     | :-----------------------: | :--------------------------: | :-----------------------------------:  | :-----------------------: |\r\n| tc321x_mesh        | 133.2                     | 26.3                         | N/A                                    | 3.0\t\t\t\t\t\t  |\r\n| tc321x_mesh_gw     | 134.4                     | 31.2                         | N/A                                    | 3.0\t\t\t\t\t\t  |\r\n| tc321x_mesh_lpn    | 127.9                     | 21.8                         | 20.6                                   | 3.0\t\t\t\t\t\t  |\r\n| tc321x_mesh_switch | 118.5                     | 22.2                         | 21.1                                   | 3.0\t\t\t\t\t\t  |\r\n","author":{"name":"mwchen","username":"mwchen269","path":"/mwchen269","avatar_url":"https://foruda.gitee.com/avatar/1692942111614001476/6559152_chenmw269_1692942111.png!avatar30"},"attach_files":[],"zip_download_url":"/telink-semi/tc_ble_mesh/releases/tag/V4.1.1.0.zip","tar_download_url":"/telink-semi/tc_ble_mesh/releases/tag/V4.1.1.0.tar.gz"}}}