logo elektroda
logo elektroda
X
logo elektroda

Tuya/IHSENO T1-U-HL Soil Tester Sensor: BK7238, MindMotion 32G0001 TuyaMCU, HGSEMI C5551 Analysis

divadiow  Cool? (+3)
📢 Listen (AI):


Here I'll present my findings with a new Tuya device based on the Beken BK7238 MCU, packaged as a Tuya T1-U-HL module. For more general information relating to the T1 series and BK7238 uses see:

T1, T1-M, T1-3S Tuya BK7238 module datasheet, pinout and flashing, Home Assistant
NiceMCU XH-WB3S BK7238 Flashing, Testing, Pinout, Development, Porting
NiceMCU XH-WB3S BK7238 tutorial - quickstart, flashing, sensors, MQTT and Home Assistant
NiceMCU BK7238/T1 IR remote control support presentation tutorial - Home Assistant automations

This is a 'Soil Tester Sensor' from Ali Express.





After popping off the battery cover, just 4 small cross-head screws allow for the removal of half the case



to reveal the main module - the T1-U-HL, a 16kb MindMotion MM32G0001 Arm Cortex-M0 TuyaMCU (also seen here) and an HGSEMI C5551 WSAH SOIC8 chip.



Unfortunately, the back of the PCB cannot be examined without de-soldering the battery terminals. There was little to be gained, however.



T1-U-HL details - https://developer.tuya.com/en/docs/iot/T1-U-HL-Module-Datasheet?id=Kdfp5j893qwxg



Pin No.SymbolI/O typeDescription
1P14I/OA normal GPIO pin, corresponding to Pin 19 on the IC. It can be reused as SPI_SCK.
2P16I/OA normal GPIO pin, corresponding to Pin 20 on the IC. It can be reused as SPI_MOSI.
3P23I/OA normal GPIO pin, corresponding to Pin 16 on the IC.
4P22I/OA normal GPIO pin, corresponding to Pin 15 on the IC.
5ADCI/OAn ADC pin, corresponding to P20 (Pin 13) on the IC.
6RX2I/OUART_RX2, corresponding to P1 (Pin 30) on the IC.
7TX2I/OUART_TX2 to print logs, corresponding to P0 (Pin 31) on the IC.
8P24I/OSupport hardware PWM4, corresponding to Pin 17 on the IC.
9P9I/OSupport hardware PWM3, corresponding to Pin 27 on the IC.
10P26I/OSupport hardware PWM5, corresponding to Pin 23 on the IC.
11P6I/OSupport hardware PWM0, corresponding to Pin 24 on the IC.
12P8I/OSupport hardware PWM2, corresponding to Pin 26 on the IC.
13GNDPGround pin.
143V3P3.3V power pin.
15TX1I/OUART_TX1 to send user data, corresponding to P11 on the IC (corresponding to Pin 29 on the IC).
16RX1I/OUART_RX1 to receive user data, corresponding to P10 on the IC (corresponding to Pin 28 on the IC).
17P28I/OA normal GPIO pin, corresponding to Pin 12 on the IC.
18CENI/OThe reset pin, active low, and pulled up internally. It is compatible with the designs of other modules. Corresponding to Pin 11 on the IC.
19P21I/OA normal GPIO pin, corresponding to Pin 14 on the IC.
20P17I/OA normal GPIO pin, corresponding to Pin 22 on the IC. It can be reused as SPI_MISO.
21P15I/OA normal GPIO pin, corresponding to Pin 21 on the IC. It can be reused as SPI_CS




Feeding 3V through the batters terminals and from TX2 the boot log is captured at 115200 baud:
Code: Text
Log in, to see the code


Unfortunately, the MindMotion MCU gets in the way of any flash read efforts on RX1/TX1, even with the MCU Nrst held low, so the module had to be hot air gun removed for flashing away from the MCU.





Easy Flasher reads whole flash successfully in BK7238 mode


Code: Text
Log in, to see the code


As a precaution a backup is also taken with BKFIL
Code: Text
Log in, to see the code


Code: Text
Log in, to see the code





Regarding the TSSOP20 MM32 MCU (datasheet attached) we read this overview
Code: Text
Log in, to see the code




And to put how it connects to the 4 test pads and to the T1-U-HL in context:


Maybe I should have another go at reading the flash with J-Link, I appear to have been unsuccessful with the other device.



With the backup flashed to the NiceMCU and setup to talk to the Tuya Module Debugging Assistant with product ID rknwi0ctbbghzgla we can pair it with the Tuya app to check firmware versions, device appearance, options and readings



It seems it's just a glorified temperature and humidity sensor.



with the Tuya app linked to a dev account we can retrieve the dpIDs, needed for OpenBK7238 setup
Code: JSON
Log in, to see the code


which when made pretty:

Code: JSON
Log in, to see the code


Interesting, separate dpIDs for Fahrenheit and a switcher dpID. I don't see a change function in the app. The manual offers no clues.





OpenBK7238 flashed over the top of factory firmware. I chose to overwrite the bootloader because keeping the factory BL meant OTA updates were not successful.



PCB and module cleaned up. Excess solder removed with solder braid.

Close-up of the Tuya T1-U-HL PCB module with Beken BK7238 MCU and pin labels visible.

It appears the top two pads are only there to secure module to PCB - no traces on either side. It looks like P21 goes somewhere but I've yet to get any continuity to any component.

With the module soldered back in and OBK unconfigured, you get 20s from button-push wake-up until the MCU withdraws power from the T1 module. This gives just about enough time to navigate to the web app, create autoexec and set a starting script

With a basic starter:
Code: Text
Log in, to see the code


I get no readings and no response to tuyaMcu_sendQueryState. Flag 26 ([UART] Use alternate UART for BL0942, CSE, TuyaMCU, etc) toggled doesn't change that.

This is where I will pause to investigate TuyaMCU comms to the NiceMCU with TMDA and to research the HGSEMI chip.

About Author
divadiow
divadiow wrote 3331 posts with rating 589 , helped 291 times. Live in city Bristol. Been with us since 2023 year.

Comments

divadiow 11 Aug 2025 22:07

TMDA says it is receiving a heartbeat from the NiceMCU https://obrazki.elektroda.pl/6584532900_1754942580_bigthumb.jpg but OBK doesn't log a valid heartbeat ExtraDebug:TuyaMCU:TuyaMCU heartbeat_valid... [Read more]

p.kaczmarek2 14 Aug 2025 09:46

Very nice analysis, here's some little info from me - as far as I know, tuyaMcu_sendQueryState is only for core TuyaMCU (non-battery powered). So it is fully expected for battery powered (tmSensor) to... [Read more]

divadiow 14 Aug 2025 10:21

OK sure, but on NiceMCU with no tmsensor running I would expect to see TuyaMCU responses in OpenBK7238 log. No heartbeat or any commands manually sent from TMDA are shown as received. [Read more]

p.kaczmarek2 14 Aug 2025 10:29

If the device is using Battery Powered Tuya Serial Protocol, then it will not reply to classic TuyaMCU driver. tmSensor (Battery Powered Tuya Protocol) is different, and, as far as I remember, the MCU... [Read more]

divadiow 14 Aug 2025 10:33

but to be sure OBK7238 itself works alright with TuyaMCU I switched to NiceMCU and TMDA. BK-N dev receives commands OK, BK7238 does not. Same autoexec on both. No tmsensor running, only TuyaMCU. [Read more]

p.kaczmarek2 14 Aug 2025 10:48

So you are saying that you are sending non-battery powered commands from TMDA? That could mean UART driver is not working correctly in BK7238 build. [Read more]

divadiow 14 Aug 2025 10:54

yes sir. take soil sensor out of the equation. take battery tmsensor out of the equation = OBK7238 doesn't seem to receive responses from TuyaMCU simulator whereas OBK7231 does. I can do it again to... [Read more]

divadiow 21 Aug 2025 21:27

back again. NiceMCU / Tuya Module Debugging Assistant TX/RX over P0/P1: TuyaMCU driver only. TMDA acknowledges heartbeats and will send query state response to BK7238 but BK7238 only prints this... [Read more]

%}