Anybody was able to make it work with the XR806?
Just came across a TRV heater device, which is using the Tuya WXU chip. My research is pointing to XR806.
Czy wolisz polską wersję strony elektroda?
Nie, dziękuję Przekieruj mnie tamMrGenius wrote:Anybody was able to make it work with the XR806?
main_task_start : 62
[bl] start
[bl] iímain_task_start : 62
[bl] start
[bl] img seq 0, state 1
[bl] no trustzone feature !
[bl] bl_load_bin_by_id(), id 0xa5fe5a01
[bl] bl_load_bin_by_id() cost 11 ms
[bl] goto 0x201101
__read_manage_block: mag->blockid=255, id=0, mag->state=255.
__read_manage_block: mag->magic=0xffffffff, rescrc=0x00000000, mag->crc32=0xffffffff.
__read_manage_block: mag->blockid=255, id=1, mag->state=255.
__read_manage_block: mag->magic=0xffffffff, rescrc=0x00000000, mag->crc32=0xffffffff.
_judge_ota_info checkerr0:1, checkerr1:1
main_task_start : 62
PMA: aux_pm_inituse default flash chip mJedec 0x0
[FD I]: mode: 0x10, freq: 96000000Hz, drv: 0
[FD I]: jedec: 0x0, suspend_support: 1
[FD I] blk protect init ok
**********wlan_mode:0
[XR-80211] channel switching report, use N/BG rates --20231212v3
[XR-80211]:FIX SCAN RSSI, sample count: 5, marker: 255
Driver:delay scan complete, change link loss count, CMD_timeout send HANG, add filter function and bss lost thold,not DTIM count if disable mcast recv, assoc listen intval 50, rx stay awake perf, cmd force trydz tmo, rx wakelock 25ms --20240312v27
wlan information ===================================================
firmware:
version : R0-XR_C07.08.52.67_ULP__02.138TY-SetNoise-SyncFilt-FltIGMP Dec 5 2023 15:27:52-Y02.138TY-SetNoise-SyncFilt-FltIGMP
buffer : 8
driver:
version : XR_V02.05
mac address:
in use : 38:a5:c9:3f:46:49
in use : 38:a5:c9:3f:46:4a
====================================================================
[wpa] add wpas_terminal flag--20230508v1
platform information ===============================================
XR806 SDK v1.2.1 Jul 30 2024 14:29:27 63401410
heap space [0x21e64c, 0x24bc00), size 185780
cpu clock 160000000 Hz
HF clock 40000000 Hz
sdk option:
XIP : enable
INT LF OSC : enable
INT LDO : select
ILDO/EPWR : enable
SIP flash : enable
mac address:
efuse : 80:74:84:69:04:75
in use : 38:a5:c9:3f:46:49
====================================================================
SystemStartupState=0
chip=48086 A=13
argv_int[0]:8
argv_int[1]:52
argv_int[2]:70
argv_int[3]:66
argv_int[4]:62
argv_int[5]:12
argv_int[6]:11
argv_int[7]:8
power_b:369098752 power_gn:1074003968 power_mcs7:-1878455536
init_rf_param succ
[01-01 00:00:00 ty I][tal_thread.c:184] thread_create name:sys_timer,stackDepth:4096,totalstackDepth:4096,priority:3
[01-01 00:00:00 ty I][tal_thread.c:184] thread_create name:wq_system,stackDepth:5120,totalstackDepth:9216,priority:2
[01-01 00:00:00 ty I][tal_thread.c:184] thread_create name:wq_highpri,stackDepth:4096,totalstackDepth:13312,priority:3
tkl_thread_create:59 thread name:tuya_app_main
set force ps:1 100000 success
$ tkl_watchdog_init interval_ms(16000)!
WatchDog ResetMode Started, set timeout: 16
[01-01 00:00:00 ty I][tal_thread.c:184] thread_create name:health_monitor,stackDepth:3072,totalstackDepth:16384,priority:3
[01-01 00:00:00 ty I][mqc_app.c:429] mqc app init ...
[01-01 00:00:00 ty E][log_seq.c:867] logseq empty
[01-01 00:00:00 ty I][lpmgr.c:743] time:2000, g_cpu_sleep:2000
[wifi_adapter]: wifi_set_pm_dtim:20, immediate:1 beacon_cnt:5
$ -----wifi_set_pm_dtim:899 find_id:-1
$ [01-01 00:00:00 ty N][tbl_common_user_main.c:594] < TuyaOS V:3.6.3 BS:40.00_PT:2.3_LAN:3.5_CAD:1.0.5_CD:1.0.0 >
< BUILD AT:2024_07_18_19_55_22 BY ci_manage FOR tuyaos-lite-sdk AT xr806 >
IOT DEFS < WIFI_GW:1 DEBUG:0 KV_FILE:0 LITTLE_END:1 SL:0 OPERATING_SYSTEM:98 RELIABLE_TRANSFER:0 >
rst_reason=0
[01-01 00:00:00 ty N][tbl_common_user_main.c:595] reset_reason:0
[01-01 00:00:00 ty N][tbl_common_user_main.c:596] xr806_lowpower_common_ty:1.1.4
[01-01 00:00:00 ty N][simple_flash.c:446] key_addr: 0x1f5000 block_sz 4096
[01-01 00:00:00 ty N][simple_flash.c:532] get key:
[01-01 00:00:00 ty N][tuya_tls.c:852] uni_random_init...
[01-01 00:00:00 ty N][tuya_tls.c:279] tuya_tls_rand_init ok!
[01-01 00:00:00 ty N][tuya_wifi_connect.c:329] mf is open need stop fastconnect
tkl_system_malloc big memory, size(4200)!
tkl_wifi_set_work_mode:697 mode:1
tkl_system_malloc big memory, size(4168)!
[01-01 00:00:00 ty N][tbl_common_tuya_main.c:385] mf_init succ
[01-01 00:00:00 ty N][tdl_send_data_queue.c:355] uart queue sever queue num is :20
[01-01 00:00:00 ty N][tbl_common_basic_service.c:1782] addr:2273816 13
[01-01 00:00:00 ty N][tbl_common_basic_service.c:528] set sleep mode 1
[01-01 00:00:00 ty N][tbl_common_basic_service.c:541] set wk pin:20
tkl_cpu_sleep_mode_set: en = 1, mode = 0
pmu_release_wakelock(PMU_OS)
tkl_cpu_sleep_mode_set: en = 1, mode = 0
tkl_cpu_sleep_mode_set: en = 0, mode = 0
[wifi_adapter]: wifi_set_pm_dtim:10, immediate:1 beacon_cnt:3
$ -----wifi_set_pm_dtim:899 find_id:-1
$ [01-01 00:00:00 ty N][tbl_lp_manage.c:529] wake pin 20 level 0
[01-01 00:00:00 ty N][tbl_lp_manage.c:530] wake pin 28 level 0
[01-01 00:00:00 ty N][tbl_common_public_iot.c:933] MCU ver:1.1.0
[01-01 00:00:00 ty N][tuya_wifi_link.c:87] start wifi link params validate, nc_tp:10 md:0
[01-01 00:00:00 ty N][tuya_wifi_link.c:109] gw_wsm.nc_tp:10
[01-01 00:00:00 ty N][tuya_wifi_link.c:110] gw_wsm.md:0
[01-01 00:00:00 ty E][tuya_wifi_reset.c:638] read wf start mode err:-6
[01-01 00:00:00 ty N][tuya_svc_devos.c:509] Last reset reason: 0
[01-01 00:00:00 ty N][tuya_svc_devos.c:306] gw_cntl->gw_wsm.stat:0
[01-01 00:00:00 ty N][tuya_svc_devos.c:358] gw_cntl->gw_if.abi:0 input:0
[01-01 00:00:00 ty N][tuya_svc_devos.c:359] gw_cntl->gw_if.product_key:ihedujbuli6hsx9b, input:ihedujbuli6hsx9b
[01-01 00:00:00 ty N][tuya_svc_devos.c:360] gw_cntl->gw_if.tp:0, input:0
[01-01 00:00:00 ty N][tuya_svc_devos.c:363] gw_cntl->gw_if.firmware_key:key5nkpphq7huej7, input:key5nkpphq7huej7
[01-01 00:00:01 ty N][tuya_svc_devos.c:538] enter success_proc
[01-01 00:00:01 ty N][tuya_svc_devos.c:541] serial_no:38a5c93f4649
[01-01 00:00:01 ty N][tbl_common_basic_service.c:633] get_dev_info ok memrory left:85635
PMA: pm freeze task no exist
[01-01 00:00:01 ty E][tuya_wifi_reset.c:638] read wf start mode err:-6
tkl_wifi_set_work_mode:697 mode:3
[wifi_adapter]: wifi_on old mode 0,new mode 1
en1: CTRL-EVENT-TERMINATING
WAR join_status:0
interface name: en1
setmlme_common lock
setmlme_common unlock
setmlme_common lock
setmlme_common unlock
Using interface en1 with hwaddr 38:a5:c9:3f:46:49 and ssid "AP-XRADIO"
en1: interface state UNINITIALIZED->ENABLED
en1: AP-ENABLED
[net INF] msg <wlan connected>
[net INF] netif is link up
[net INF] netif is already down
[net INF] bring up netif
[user ERR] Error cmd:63
[wifi_adapter]: exec failed
[wifi_adapter]: wifi on exit
[net INF] netif (IPv4) is up
[net INF] address: 192.168.176.1
[net INF] gateway: 192.168.176.1
[net INF] netmask: 255.255.255.0
wlp_net_ctrl_msg_proc:0
not sta, mode:1
[net INF] msg <network up>
[net INF] dhcp addr start: 192.168.176.2
[net INF] dhcp addr end: 192.168.176.6
wlp_net_ctrl_msg_proc:10
not sta, mode:1
vif0, AP/GO mode THROTTLE=38
[wifi_adapter]: ap start : ip 0x1b0a8c0
[wifi_adapter]: ap start : mask 0xffffff
[wifi_adapter]: ap start : gateway 0x1b0a8c0
[net INF] no need to switch wlan mode 1
[wlan T] wlan_ap_disable()425
en1: AP-DISABLED
setmlme_common lock
setmlme_common unlock
setmlme_common lock
setmlme_common unlock
en1: interface state ENABLED->DISABLED
[net INF] msg <wlan disconnected>
[net INF] netif is link down
wlp_net_ctrl_msg_proc:1
not sta, mode:1
[wifi_adapter]: max_conn: 1
[wifi_adapter]: chan: 6
[wifi_adapter]: [dxh] set ap beacon int 100ms
[wlan T] wlan_ap_enable()414
setmlme_common lock
setmlme_common unlock
setmlme_common lock
setmlme_common unlock
Using interface en1 with hwaddr 38:a5:c9:3f:46:49 and ssid "SmartLife-4649"
en1: interface state DISABLED->ENABLED
en1: AP-ENABLED
[net INF] msg <wlan connected>
[net INF] netif is link up
[net INF] bring down netif
[net INF] netif (IPv4) is down
[net INF] bring up netif
[net INF] netif (IPv4) is up
[net INF] address: 192.168.176.1
[net INF] gateway: 192.168.176.1
[net INF] netmask: 255.255.255.0
wlp_net_ctrl_msg_proc:0
not sta, mode:1
WAR [WSM] Drop frame (0x0008).
WAR [WSM] Drop frame (0x0008).
[net INF] msg <network down>
wlp_net_ctrl_msg_proc:11
not sta, mode:1
[net INF] msg <network up>
vif0, AP/GO mode THROTTLE=38
[01-01 00:00:02 ty N][tuya_wifi_status.c:171] cur stat:13 0x2030e9 -->>
[01-01 00:00:02 ty N][tuya_wifi_status.c:174] wifi netstat changed to:13 -->>
[01-01 00:00:02 ty N][tuya_wifi_status.c:182] report wifi netstat[13] to callback -->>
[01-01 00:00:02 ty N][tbl_common_basic_service.c:920] wifi status is :13
[net INF] dhcp addr start: 192.168.176.2
[net INF] dhcp addr end: 192.168.176.6
wlp_net_ctrl_msg_proc:10
not sta, mode:1
[01-01 00:00:02 ty N][tuya_wifi_reset.c:404] timer stated, short timer:0x0, long timer:0x4d8a39
[01-01 00:00:02 ty N][tuya_bt_link.c:61] bt startup attr:1
[01-01 00:00:02 ty N][tuya_ble_svc.c:976] upd product_id type:0 ihedujbuli6hsx9b
ble controller open
version : 9.1.21
build sha1 : v9.1.21-5-gd8b2bd2
build date : Feb 15 2023
build time : 14:18:16
platform : xr806
btcoex_bt_force_req
[01-01 00:00:02 ty N][tbl_lp_manage.c:464] gpio wake up
[01-01 00:00:02 ty N][tfm_data_frame_recv.c:192] offset is :7
btcoex_force_stop
ble rf_init done!
BLE INIT ALL DONE!
BT Coex. Init. OK.
tkl_hci_init:136
<E> Adv status is already disabled
[01-01 00:00:02 ty N][tuya_ble_svc.c:1037] ty bt sdk init success finish
[01-01 00:00:02 ty N][ble_gap.c:2510] Start Adv
[01-01 00:00:02 ty N][tuya_svc_devos.c:219] __devos_init_evt success
[01-01 00:00:02 ty N][ble_gap.c:2510] Start Adv
[01-01 00:00:02 ty N][tuya_ble_svc.c:1115] ble adv updated
tkl_system_malloc big memory, size(10516)!
tkl_net_socket_create type(1), fd(2)!
tkl_net_socket_create type(0), fd(3)!
tkl_net_socket_create type(1), fd(4)!
[01-01 00:00:02 ty E][wifi_netcfg_frame_transporter.c:316] timer is not run,wait
[01-01 00:00:03 ty N][tbl_lp_manage.c:210] wait connect wifi
Quote:My first port of call, however, was to capture the UART boot log output. This was achieved by attaching USB-TTL RX to the RXD0 (not TXD0, as expected) of the module. This is the black dupont soldered in this pic. It joins the white where it's connected to USB-TTL RX pin.
divadiow wrote:The normal XR806 definitely doesn't have wifi,
p.kaczmarek2 wrote:and if you flash OBK, then it boots and outputs debug log?
TL;DR: With 320 KB SRAM and a quoted breakthrough — "XR auth disabled" — this FAQ shows XR806/WXU thermostat modders how to open Tuya TRVs, dump firmware, build XR806 SDK demos, and understand why OpenBeken now boots and serves a web UI, while Wi‑Fi stability and TuyaMCU work still need fixes. [#21524634]
Why it matters: This thread turns a vague "WXU might be XR806" hunch into a repeatable path for teardown, flashing, SDK builds, and first-boot OpenBeken testing on real Tuya thermostats.
| Option | Result in thread | Main limitation |
|---|---|---|
| Stock Tuya WXU firmware on original device | Boots, exposes TuyaOS logs, Wi‑Fi + BLE seen | Closed firmware, no alternative control path proven |
| Dumped WXU image flashed onto XR809 | Did not boot | XR806/XR809 firmware mismatch |
| XR806 SDK demos | hello_demo and Wi‑Fi demos built and ran | menuconfig options needed |
| OpenBeken on XR806/WXU | Boots and later serves web UI | Wi‑Fi, config, MAC, and TuyaMCU issues remained during testing |
Key insight: The project stopped being blocked by flashing and basic booting. The real breakthroughs were proving that WXU is XR806-class hardware in practice, and then finding that the missing XR806 web GUI was caused by HTTP auth behavior, not a dead HTTP server.
make menuconfig, then make build or make image. This flow worked under WSL2 after GCC and ncurses were fixed. [#21432260]lwip/netif.h failure appeared while building at_demo, and enabling lwIP, WLAN, AP/STA options, and OTA made the build progress. The thread also called out CONFIG_WLAN_AP, CONFIG_WLAN_STA, CONFIG_WLAN_MONITOR, and PRJCONF_NET_EN as required for full WLAN command support. [#21430812]ERR_CONNECTION_TIMED_OUT or ERR_EMPTY_RESPONSE. That proved the failure was in request handling or response generation, not in AP mode or TCP accept itself. [#21524592]HTTP packet with auth fail messages. After changing the XR806 auth behavior, logs switched to XR auth disabled and postany: send ..., and the custom OpenBeken page finally loaded. That was the first confirmed custom HTTP page running on XR806 in the thread. [#21524634]upgrade command that could avoid manual boot-pin grounding. In practice, it was the main tool for dumping firmware, restoring backups, and verifying whether new XR806 builds booted. [#21430654]