logo elektroda
logo elektroda
X
logo elektroda

RDA 5981AM/Broadlink BL3335-P - Generic/nobrand 15W RGBW B22 Bulb - basic teardown

Altirix 2349 176
ADVERTISEMENT
  • Helpful post
    #1 21434019
    Altirix
    Level 2  
    I'm posting as there seems to be a very limited amount of info on this device and chip being used, A Broadlink BL3335-P, (carrier PCB says BR3335, the actual module has no part number)

    Close-up of a smart bulb interior showing LEDs and a Broadlink module.

    Anyway I was curious as to what the actual controller was so as you can see I peeled the can off. this presents the RDA 5981AM.

    View of the inside of a smart bulb with an exposed RDA 5981AM module.

    Unfortunately I'm not exactly sure where the bulb was from, I've had it for a while and only recently took a look inside. It's most likely one off AliExpress and I'm pretty sure they switched to another controller now as I've ordered twice from the same store a few years later. There is no branding on the side of the bulb.

    Others seem to have got the same or similar boards such as https://diy.viktak.com/2020/05/broadlink-smart-bulb-conversion-to-open-source.html and were able to make a custom board for an esp as there's no project that supports the controller, likely due to it being obscure.

    If anyone wants to try and support this controller in OpenBeken or any others and would like to get anything off the device that would be useful in supporting you, feel free to message
  • ADVERTISEMENT
  • #2 21434400
    p.kaczmarek2
    Moderator Smart Home
    Very interesting, I haven't seen that one yet. I could give it a go, but for now, I'm doing porting for XR806, so it would have to wait a bit in the queue.

    Anyway, were you able to find a datasheet for this module or chip?

    Did you attempt to take a boot log of this device? It could tell us which SDK was used.

    If there is no documentation for used WiFi module, then maybe we can desolder it with hot air just to check the GPIO markings on the back.
    Helpful post? Buy me a coffee.
  • #3 21434407
    Altirix
    Level 2  
    p.kaczmarek2 wrote:

    Very interesting, I haven't seen that one yet. I could give it a go, but for now, I'm doing porting for XR806, so it would have to wait a bit in the queue.


    No worries, in no rush myself, was trying to find info on what I had to start moving them away from their proprietary firmware. and noticed it seemed to be unknown to those who work on these open projects.

    p.kaczmarek2 wrote:

    Anyway, were you able to find a datasheet for this module or chip?


    Yes, seems the blog post states they were unable to find documentation (however they supposedly had a Broadlink BL3336T-P) there does seem to be documentation for the Broadlink BL3335-P and RDA 5981AM it's using.

    https://fccid.io/2ACDZ-BL3335-P/User-Manual/User-Manual-3825022.html

    https://github.com/RDA5981/RDA5981/blob/master/Datasheet/RDA5981AM DataSheet V1.5.pdf

    p.kaczmarek2 wrote:

    Did you attempt to take a boot log of this device? It could tell us which SDK was used.


    I have not, how would you recommend getting a boot log from one of these?

    Edit: could probs use an arduino as a usb to serial and connect to the rx and tx then power the board with 3.3v. and that should spit out a boot log?
  • ADVERTISEMENT
  • #4 21434414
    insmod
    Level 28  
    If someone is interested in trying to port, a module with this chip is available at aliexpress, (HLK-M50).
    I don't see a point though, the sdks i've seen are very old, last version publicly available is at least 8 years old (RDA5981_SDK_MbedOS515_V1.3.5).
    On csdn there are mentions of RDA5981_SDK_MbedOS515_V1.3.6 and RDA5981_SDK_MbedOS515_V2.0, but you cannot download them (china only site).
    And not to mention there is no freertos in any of those sdk.
  • #6 21479530
    divadiow
    Level 36  
    I think I've nailed the correct starting address (includes BL) and length for 1mb flash on HLK-M50
    Screenshot of RDA Dump Tool version 1.00.01.

    Screenshot showing a hexadecimal code snippet and its decoded text.

    Code: Text
    Log in, to see the code

    Code: Text
    Log in, to see the code


    useful: https://github.com/ljalves/hfeasy

    without modification RDA Dump tool loads with these addresses set by Hi-Flying. These addresses result in a 2044kb file dump, which clearly shows HLK-M50 flash content repeated.

    RDA Dump Tool program for data dumping on a computer.

    Tool and dump will also land in FlashDumps and FlashTools GH
  • #7 21479538
    divadiow
    Level 36  
    and I've not seen any boot log output on either UART at any baud, no AP either. Only a small power spike at start to suggest it's doing anything

    Electronic module with a USB cable connected on a wooden table.
  • #8 21634746
    insmod
    Level 28  
    Found several Tuya 2MB RDA5981 modules on ali. WRD2L, TYWRD2S and TYWRD3S. However, they are very expensive, probably due to their rarity.
    https://aliexpress.com/item/1005008924925369.html
    https://aliexpress.com/item/1005008015024930.html
    https://aliexpress.com/item/1005008064774207.html
    Shop has more different/interesting modules. (Like LN882H WL2H-U, ZS3L, TYZS3, WR3E, WB3L (the one with P16)). W500 chip, but sadly no module.
    And there are still datasheets.
    https://developer.tuya.com/en/docs/iot/wrd2l?id=K97rncgxgum9h
    https://developer.tuya.com/en/docs/iot/wrd3l-datasheet?id=K98d49g38w0uc
    Tuya mentions that GPIO2 is used as log tx.

    I wonder if Tuya still has the SDK?
  • #9 21634810
    divadiow
    Level 36  
    insmod wrote:
    I wonder if Tuya still has the SDK?


    no sign of it.
    searches have been:

    RDA5981X
    RDA5981BM
    RDA598X
    RDA5980
    RDA5981

    upper/lowercase

    then _major.minor 0.0-3.9 and _major.minor.build for 0.0.0->3.99.99

    then extensions .zip and .tar.gz upper and lowercase

    the correct platform name is usually the bit seen at the end of this string after AT, so a boot log from Tuya device would help, but I haven't found one.

    < TuyaOS V:3.8.31 BS:40.00_PT:2.3_LAN:3.5_CAD:1.0.5_CD:1.0.0 >
    < BUILD AT:2024_12_26_11_42_43 BY ci_manage FOR tuyaos-iot AT T1 >
  • ADVERTISEMENT
  • #10 21634815
    insmod
    Level 28  
    >>21634810
    RDA5981B?
    upper/lowercase doesn't matter in http.
  • #11 21634822
    divadiow
    Level 36  
  • #12 21634824
    p.kaczmarek2
    Moderator Smart Home
    Interesting, indeed one of those links works, while other gives "not found"
    Helpful post? Buy me a coffee.
  • #13 21634861
    insmod
    Level 28  
    According to datasheet, flash address is 0x1400000, and rom address is 0x0 with 0x10000 length.
    0x1800000 is i-cache, which i guess is flash but for xip?
  • #15 21637578
    divadiow
    Level 36  
    re-ran with new major.minor and major.minor.build

    :(

    Empty folders named “downloads_rda” with size shown as 0 bytes
  • Helpful post
    #17 21657835
    divadiow
    Level 36  
    changelogs

    Spoiler:
    SDK 2.0 and SDK 1.3.7 have the same functionality. (646/143)
    1. Added the daemon_thread control flow.
    2. By default, connect is blocking. To use a non-blocking method, enable the NO_BLOCK macro in rda59xx_daemon.c.

    2017-02-11 V1.3.6(534)
    1. Fixed a bug in pwm and added control functions for pwl0 and pwl1. See test case: pwm.
    2. Fixed a bug in RSA encryption during GCC compilation.
    3. Fixed buffer leaks and other issues that occurred during repeated disconnections.
    4. Fixed a bug in the DHCP server and checked whether the request IP address is out of the set range.
    5. Modified the start ap/connect/disconnect functions to blocking mode to ensure synchronization.
    6. In AP mode, if the connection fails, the STA info will be cleared in time.
    7. Added a print switch to reduce code size.
    8. Added mbed_client support. See test case: mbed_client.
    9. Resolved SPI hal exceptions in GCC.
    10. Added PowerDown mode for low power consumption. See test case: uartwifi.
    11. Optimized the read and write speed of usbdevice_msd.
    12. Added feature: USBDEVICE_SERIAL and test case: usbdevice_serial to support serial ports in USB device mode.
    13. Added feature: WPS20.

    2017-12-23 V1.3.5(477)
    1. Fixed network-related bugs in V1.3.4.

    2017-12-14 V1.3.4(459)
    1. Major version update. When compiling, there is no need to distinguish between versions such as U02 and U04. The target only needs to be specified as UNO_81A, UNO81AM, or UNO_81C.
    2. Optimize smartconfig, airkiss, and esptouch.
    3. Add an interface to set the maximum number of STAs that can be connected in AP mode. In wland_rda5991h.h,
    rda5981_set_AP_link_num(unsigned char num); num is the maximum number of STAs that can be connected.
    Added an interface for setting the AP whitelist in wland_rda5991h.h:
    void rda5981_set_AP_white_list(unsigned char flag, unsigned char *mac)
    When flag is 1, the MAC address is added to the list; when flag is 0, the MAC address is removed from the list.
    4. Updated the file system. Users can configure features such as FEATURE_SDCARD_EXFAT encoding and whether to support EXFAT (or FAT32 if EXFAT support is not enabled). Refer to the description in ffconf.h.
    5. Updated the I2S interface. When the input is mono, the left or right channel can be set. The default is the left channel.
    uint8_t rda_i2s_set_rx_mono_channel(i2s_t *obj, uint8_t channel);
    When channel is 0, the input is the left channel; when channel is 1, the input is the right channel.

    2017-11-09 V1.3.3
    1. Added the ESPTOUCH feature and corresponding case.
    2. Added the heap_info case to view heap information.
    3. Added stack trace printing when a system fault occurs. When using the CONSOLE feature, if the macro CONSOLE_DUMP_STACK_EN is enabled, entering "#*#" in the console will print the current stack trace information.
    4. lwip-related stability updates.
    5. Fixed an issue where occasional negative values ​​were displayed during RX testing. Added RSSI display. As shown below, the average RSSI for all packets over the past second is -77.
    UT: rx = 155, end_gd = 177, end_er = 007, fcs_er = 022, PER = 15.76%, PER_F = 08.37%, rssi = -77

    2017-10-18 V1.3.2
    1. Fixed an issue with SD card hot-swapping.
    2. Added VBAT calibration. Refer to the vbat_cal case to obtain a more accurate VBAT voltage value.
    3. Fixed other bugs.

    2017-09-19 V1.3.1
    1. Fixed an issue with UART CTS/RTS not working.
    2. Added low voltage detection. Refer to the analog_in case and select ADC_PIN2.
    3. Added TX power offset settings for G/N mode. Refer to the uarthut case.
    4. Improved I2C functionality. Refer to the i2c case and the readme.txt file in its directory.

    2017-09-01 V1.3.0
    1. Added a test mode. Refer to the documentation in the "Test Mode SDK.7z" directory and the uarthut case.
    2. Fixed the inaccurate PWM frequency issue.

    2017-08-21 V1.2.9
    1. Added a case for transmit power and crystal calibration. See the rf_config case for details, which provides methods for configuring the relevant registers, flash, and efuse.
    2. Added the uarthut test case, which allows you to configure the registers, flash, and efuse related to transmit power and crystal calibration via AT. See the AT instructions under the case for details.
    Currently, writing efuse and TX/RX tests is not available.

    2017-08-16 V1.2.8
    1. The console input and output can be selected from either of the system's two UARTs. See the feature FEATURE_CONSOLE_DUAL_UART and the case dual_console for details.

    2017-08-09 V1.2.7
    1. Added sleep mode. For details, see the AT+SLEEP command in the uartwifi test case.
    2. Added MCLK configuration for I2S. For details, see the relevant i2s cases and the documentation in their directories.

    2017-07-27 V1.2.6
    1. Test case update: added tx_power_rf_cal (setting transmit power and RF calibration).
    2. Feature update: improved PSRAM read and write efficiency.

    2017-07-25 V1.2.5
    1. lwip update: supports simultaneous STA and AP modes.
    2. Test case update: added soft_reset (soft reset), tcp_upd_speed (TCP and UDP speed test), and tx_power (setting transmit power).

    July 11, 2017 V1.2.4
    1. Feature update: Added two USB features, FEATURE_USBHOST_MSD and FEATURE_USBDEVICE_MSD.
    2. Test case update: Added two USB cases, usbhost_msd and usbdevice_msd.

    June 26, 2017 V1.2.3
    1. Bug fixes.

    June 10, 2017 V1.2.2
    1. I2S driver update.
    2. Test case update: Added four I2S test cases, i2s_master_out, i2s_slave_in, i2s_master_out_slave_in, and i2s_master_in.

    June 2, 2017 V1.2.1
    1. Updated features, adding FEATURE_SDCARD_EXFAT, and updating FEATURE_CONSOLE and FEATURE_GPADCKEY.
    2. Updated test cases, adding airkiss, uartwifi, and sdcard_sdmmc_exfat.
  • #20 21695334
    insmod
    Level 28  
    >>21695327
    2.0.0 has compiled binary inside. Did you attempt to run it?
  • #21 21695338
    divadiow
    Level 36  
    nope. not yet got back into anything RDA. Also keen to try backup of Broadlink plug on HLK-M50 when the time comes.
  • Helpful post
    #22 21697669
    divadiow
    Level 36  
    I don't have a huge amount to report, but it is the case that P21 has be pulled high for the debug log to output

    HLK-M50 shipped firmware, P21 high, 921600 TX0/IO27
    Code: Text
    Log in, to see the code


    Here's how HLK-M50 maps in my version of ESP adaptor

    Two breakout boards with labeled pins and connectors, one with HLK-M50 module installed.

    I flashed uarthut_V9_20231014_debugUart1.bin from the Hi-Flying ftp HF-LPX30_Compile\tools to 18001000

    RDA Flashtest Tool window with settings dialog and data transmission log.

    that boots. log's a bit more interesting

    Code: Text
    Log in, to see the code


    if you watch the UART while it flashes:

    Code: Text
    Log in, to see the code


    GUI tool flash log
    Spoiler:
    Open port...
    ==============================
    Running...
    Waiting for plug in...
    Find new device!
    Prepare partiton...
    15% done!
    30% done!
    45% done!
    60% done!
    70% done!
    80% done!
    90% done!
    100% done!
    Send XModem...
    [Recieve: 0x06]
    [Send Packet: 1/402]
    [Recieve: 0x06]
    [Send Packet: 2/402]
    [Recieve: 0x06]
    [Send Packet: 3/402]
    [Recieve: 0x06]
    [Send Packet: 4/402]
    [Recieve: 0x06]
    [Send Packet: 5/402]
    [Recieve: 0x06]
    [Send Packet: 6/402]
    [Recieve: 0x06]
    [Send Packet: 7/402]
    [Recieve: 0x06]
    [Send Packet: 8/402]
    [Recieve: 0x06]
    [Send Packet: 9/402]
    [Recieve: 0x06]
    [Send Packet: 10/402]
    [Recieve: 0x06]
    [Send Packet: 11/402]
    [Recieve: 0x06]
    [Send Packet: 12/402]
    [Recieve: 0x06]
    [Send Packet: 13/402]
    [Recieve: 0x06]
    [Send Packet: 14/402]
    [Recieve: 0x06]
    [Send Packet: 15/402]
    [Recieve: 0x06]
    [Send Packet: 16/402]
    [Recieve: 0x06]
    [Send Packet: 17/402]
    [Recieve: 0x06]
    [Send Packet: 18/402]
    [Recieve: 0x06]
    [Send Packet: 19/402]
    [Recieve: 0x06]
    [Send Packet: 20/402]
    [Recieve: 0x06]
    [Send Packet: 21/402]
    [Recieve: 0x06]
    [Send Packet: 22/402]
    [Recieve: 0x06]
    [Send Packet: 23/402]
    [Recieve: 0x06]
    [Send Packet: 24/402]
    [Recieve: 0x06]
    [Send Packet: 25/402]
    [Recieve: 0x06]
    [Send Packet: 26/402]
    [Recieve: 0x06]
    [Send Packet: 27/402]
    [Recieve: 0x06]
    [Send Packet: 28/402]
    [Recieve: 0x06]
    [Send Packet: 29/402]
    [Recieve: 0x06]
    [Send Packet: 30/402]
    [Recieve: 0x06]
    [Send Packet: 31/402]
    [Recieve: 0x06]
    [Send Packet: 32/402]
    [Recieve: 0x06]
    [Send Packet: 33/402]
    [Recieve: 0x06]
    [Send Packet: 34/402]
    [Recieve: 0x06]
    [Send Packet: 35/402]
    [Recieve: 0x06]
    [Send Packet: 36/402]
    [Recieve: 0x06]
    [Send Packet: 37/402]
    [Recieve: 0x06]
    [Send Packet: 38/402]
    [Recieve: 0x06]
    [Send Packet: 39/402]
    [Recieve: 0x06]
    [Send Packet: 40/402]
    [Recieve: 0x06]
    [Send Packet: 41/402]
    [Recieve: 0x06]
    [Send Packet: 42/402]
    [Recieve: 0x06]
    [Send Packet: 43/402]
    [Recieve: 0x06]
    [Send Packet: 44/402]
    [Recieve: 0x06]
    [Send Packet: 45/402]
    [Recieve: 0x06]
    [Send Packet: 46/402]
    [Recieve: 0x06]
    [Send Packet: 47/402]
    [Recieve: 0x06]
    [Send Packet: 48/402]
    [Recieve: 0x06]
    [Send Packet: 49/402]
    [Recieve: 0x06]
    [Send Packet: 50/402]
    [Recieve: 0x06]
    [Send Packet: 51/402]
    [Recieve: 0x06]
    [Send Packet: 52/402]
    [Recieve: 0x06]
    [Send Packet: 53/402]
    [Recieve: 0x06]
    [Send Packet: 54/402]
    [Recieve: 0x06]
    [Send Packet: 55/402]
    [Recieve: 0x06]
    [Send Packet: 56/402]
    [Recieve: 0x06]
    [Send Packet: 57/402]
    [Recieve: 0x06]
    [Send Packet: 58/402]
    [Recieve: 0x06]
    [Send Packet: 59/402]
    [Recieve: 0x06]
    [Send Packet: 60/402]
    [Recieve: 0x06]
    [Send Packet: 61/402]
    [Recieve: 0x06]
    [Send Packet: 62/402]
    [Recieve: 0x06]
    [Send Packet: 63/402]
    [Recieve: 0x06]
    [Send Packet: 64/402]
    [Recieve: 0x06]
    [Send Packet: 65/402]
    [Recieve: 0x06]
    [Send Packet: 66/402]
    [Recieve: 0x06]
    [Send Packet: 67/402]
    [Recieve: 0x06]
    [Send Packet: 68/402]
    [Recieve: 0x06]
    [Send Packet: 69/402]
    [Recieve: 0x06]
    [Send Packet: 70/402]
    [Recieve: 0x06]
    [Send Packet: 71/402]
    [Recieve: 0x06]
    [Send Packet: 72/402]
    [Recieve: 0x06]
    [Send Packet: 73/402]
    [Recieve: 0x06]
    [Send Packet: 74/402]
    [Recieve: 0x06]
    [Send Packet: 75/402]
    [Recieve: 0x06]
    [Send Packet: 76/402]
    [Recieve: 0x06]
    [Send Packet: 77/402]
    [Recieve: 0x06]
    [Send Packet: 78/402]
    [Recieve: 0x06]
    [Send Packet: 79/402]
    [Recieve: 0x06]
    [Send Packet: 80/402]
    [Recieve: 0x06]
    [Send Packet: 81/402]
    [Recieve: 0x06]
    [Send Packet: 82/402]
    [Recieve: 0x06]
    [Send Packet: 83/402]
    [Recieve: 0x06]
    [Send Packet: 84/402]
    [Recieve: 0x06]
    [Send Packet: 85/402]
    [Recieve: 0x06]
    [Send Packet: 86/402]
    [Recieve: 0x06]
    [Send Packet: 87/402]
    [Recieve: 0x06]
    [Send Packet: 88/402]
    [Recieve: 0x06]
    [Send Packet: 89/402]
    [Recieve: 0x06]
    [Send Packet: 90/402]
    [Recieve: 0x06]
    [Send Packet: 91/402]
    [Recieve: 0x06]
    [Send Packet: 92/402]
    [Recieve: 0x06]
    [Send Packet: 93/402]
    [Recieve: 0x06]
    [Send Packet: 94/402]
    [Recieve: 0x06]
    [Send Packet: 95/402]
    [Recieve: 0x06]
    [Send Packet: 96/402]
    [Recieve: 0x06]
    [Send Packet: 97/402]
    [Recieve: 0x06]
    [Send Packet: 98/402]
    [Recieve: 0x06]
    [Send Packet: 99/402]
    [Recieve: 0x06]
    [Send Packet: 100/402]
    [Recieve: 0x06]
    [Send Packet: 101/402]
    [Recieve: 0x06]
    [Send Packet: 102/402]
    [Recieve: 0x06]
    [Send Packet: 103/402]
    [Recieve: 0x06]
    [Send Packet: 104/402]
    [Recieve: 0x06]
    [Send Packet: 105/402]
    [Recieve: 0x06]
    [Send Packet: 106/402]
    [Recieve: 0x06]
    [Send Packet: 107/402]
    [Recieve: 0x06]
    [Send Packet: 108/402]
    [Recieve: 0x06]
    [Send Packet: 109/402]
    [Recieve: 0x06]
    [Send Packet: 110/402]
    [Recieve: 0x06]
    [Send Packet: 111/402]
    [Recieve: 0x06]
    [Send Packet: 112/402]
    [Recieve: 0x06]
    [Send Packet: 113/402]
    [Recieve: 0x06]
    [Send Packet: 114/402]
    [Recieve: 0x06]
    [Send Packet: 115/402]
    [Recieve: 0x06]
    [Send Packet: 116/402]
    [Recieve: 0x06]
    [Send Packet: 117/402]
    [Recieve: 0x06]
    [Send Packet: 118/402]
    [Recieve: 0x06]
    [Send Packet: 119/402]
    [Recieve: 0x06]
    [Send Packet: 120/402]
    [Recieve: 0x06]
    [Send Packet: 121/402]
    [Recieve: 0x06]
    [Send Packet: 122/402]
    [Recieve: 0x06]
    [Send Packet: 123/402]
    [Recieve: 0x06]
    [Send Packet: 124/402]
    [Recieve: 0x06]
    [Send Packet: 125/402]
    [Recieve: 0x06]
    [Send Packet: 126/402]
    [Recieve: 0x06]
    [Send Packet: 127/402]
    [Recieve: 0x06]
    [Send Packet: 128/402]
    [Recieve: 0x06]
    [Send Packet: 129/402]
    [Recieve: 0x06]
    [Send Packet: 130/402]
    [Recieve: 0x06]
    [Send Packet: 131/402]
    [Recieve: 0x06]
    [Send Packet: 132/402]
    [Recieve: 0x06]
    [Send Packet: 133/402]
    [Recieve: 0x06]
    [Send Packet: 134/402]
    [Recieve: 0x06]
    [Send Packet: 135/402]
    [Recieve: 0x06]
    [Send Packet: 136/402]
    [Recieve: 0x06]
    [Send Packet: 137/402]
    [Recieve: 0x06]
    [Send Packet: 138/402]
    [Recieve: 0x06]
    [Send Packet: 139/402]
    [Recieve: 0x06]
    [Send Packet: 140/402]
    [Recieve: 0x06]
    [Send Packet: 141/402]
    [Recieve: 0x06]
    [Send Packet: 142/402]
    [Recieve: 0x06]
    [Send Packet: 143/402]
    [Recieve: 0x06]
    [Send Packet: 144/402]
    [Recieve: 0x06]
    [Send Packet: 145/402]
    [Recieve: 0x06]
    [Send Packet: 146/402]
    [Recieve: 0x06]
    [Send Packet: 147/402]
    [Recieve: 0x06]
    [Send Packet: 148/402]
    [Recieve: 0x06]
    [Send Packet: 149/402]
    [Recieve: 0x06]
    [Send Packet: 150/402]
    [Recieve: 0x06]
    [Send Packet: 151/402]
    [Recieve: 0x06]
    [Send Packet: 152/402]
    [Recieve: 0x06]
    [Send Packet: 153/402]
    [Recieve: 0x06]
    [Send Packet: 154/402]
    [Recieve: 0x06]
    [Send Packet: 155/402]
    [Recieve: 0x06]
    [Send Packet: 156/402]
    [Recieve: 0x06]
    [Send Packet: 157/402]
    [Recieve: 0x06]
    [Send Packet: 158/402]
    [Recieve: 0x06]
    [Send Packet: 159/402]
    [Recieve: 0x06]
    [Send Packet: 160/402]
    [Recieve: 0x06]
    [Send Packet: 161/402]
    [Recieve: 0x06]
    [Send Packet: 162/402]
    [Recieve: 0x06]
    [Send Packet: 163/402]
    [Recieve: 0x06]
    [Send Packet: 164/402]
    [Recieve: 0x06]
    [Send Packet: 165/402]
    [Recieve: 0x06]
    [Send Packet: 166/402]
    [Recieve: 0x06]
    [Send Packet: 167/402]
    [Recieve: 0x06]
    [Send Packet: 168/402]
    [Recieve: 0x06]
    [Send Packet: 169/402]
    [Recieve: 0x06]
    [Send Packet: 170/402]
    [Recieve: 0x06]
    [Send Packet: 171/402]
    [Recieve: 0x06]
    [Send Packet: 172/402]
    [Recieve: 0x06]
    [Send Packet: 173/402]
    [Recieve: 0x06]
    [Send Packet: 174/402]
    [Recieve: 0x06]
    [Send Packet: 175/402]
    [Recieve: 0x06]
    [Send Packet: 176/402]
    [Recieve: 0x06]
    [Send Packet: 177/402]
    [Recieve: 0x06]
    [Send Packet: 178/402]
    [Recieve: 0x06]
    [Send Packet: 179/402]
    [Recieve: 0x06]
    [Send Packet: 180/402]
    [Recieve: 0x06]
    [Send Packet: 181/402]
    [Recieve: 0x06]
    [Send Packet: 182/402]
    [Recieve: 0x06]
    [Send Packet: 183/402]
    [Recieve: 0x06]
    [Send Packet: 184/402]
    [Recieve: 0x06]
    [Send Packet: 185/402]
    [Recieve: 0x06]
    [Send Packet: 186/402]
    [Recieve: 0x06]
    [Send Packet: 187/402]
    [Recieve: 0x06]
    [Send Packet: 188/402]
    [Recieve: 0x06]
    [Send Packet: 189/402]
    [Recieve: 0x06]
    [Send Packet: 190/402]
    [Recieve: 0x06]
    [Send Packet: 191/402]
    [Recieve: 0x06]
    [Send Packet: 192/402]
    [Recieve: 0x06]
    [Send Packet: 193/402]
    [Recieve: 0x06]
    [Send Packet: 194/402]
    [Recieve: 0x06]
    [Send Packet: 195/402]
    [Recieve: 0x06]
    [Send Packet: 196/402]
    [Recieve: 0x06]
    [Send Packet: 197/402]
    [Recieve: 0x06]
    [Send Packet: 198/402]
    [Recieve: 0x06]
    [Send Packet: 199/402]
    [Recieve: 0x06]
    [Send Packet: 200/402]
    [Recieve: 0x06]
    [Send Packet: 201/402]
    [Recieve: 0x06]
    [Send Packet: 202/402]
    [Recieve: 0x06]
    [Send Packet: 203/402]
    [Recieve: 0x06]
    [Send Packet: 204/402]
    [Recieve: 0x06]
    [Send Packet: 205/402]
    [Recieve: 0x06]
    [Send Packet: 206/402]
    [Recieve: 0x06]
    [Send Packet: 207/402]
    [Recieve: 0x06]
    [Send Packet: 208/402]
    [Recieve: 0x06]
    [Send Packet: 209/402]
    [Recieve: 0x06]
    [Send Packet: 210/402]
    [Recieve: 0x06]
    [Send Packet: 211/402]
    [Recieve: 0x06]
    [Send Packet: 212/402]
    [Recieve: 0x06]
    [Send Packet: 213/402]
    [Recieve: 0x06]
    [Send Packet: 214/402]
    [Recieve: 0x06]
    [Send Packet: 215/402]
    [Recieve: 0x06]
    [Send Packet: 216/402]
    [Recieve: 0x06]
    [Send Packet: 217/402]
    [Recieve: 0x06]
    [Send Packet: 218/402]
    [Recieve: 0x06]
    [Send Packet: 219/402]
    [Recieve: 0x06]
    [Send Packet: 220/402]
    [Recieve: 0x06]
    [Send Packet: 221/402]
    [Recieve: 0x06]
    [Send Packet: 222/402]
    [Recieve: 0x06]
    [Send Packet: 223/402]
    [Recieve: 0x06]
    [Send Packet: 224/402]
    [Recieve: 0x06]
    [Send Packet: 225/402]
    [Recieve: 0x06]
    [Send Packet: 226/402]
    [Recieve: 0x06]
    [Send Packet: 227/402]
    [Recieve: 0x06]
    [Send Packet: 228/402]
    [Recieve: 0x06]
    [Send Packet: 229/402]
    [Recieve: 0x06]
    [Send Packet: 230/402]
    [Recieve: 0x06]
    [Send Packet: 231/402]
    [Recieve: 0x06]
    [Send Packet: 232/402]
    [Recieve: 0x06]
    [Send Packet: 233/402]
    [Recieve: 0x06]
    [Send Packet: 234/402]
    [Recieve: 0x06]
    [Send Packet: 235/402]
    [Recieve: 0x06]
    [Send Packet: 236/402]
    [Recieve: 0x06]
    [Send Packet: 237/402]
    [Recieve: 0x06]
    [Send Packet: 238/402]
    [Recieve: 0x06]
    [Send Packet: 239/402]
    [Recieve: 0x06]
    [Send Packet: 240/402]
    [Recieve: 0x06]
    [Send Packet: 241/402]
    [Recieve: 0x06]
    [Send Packet: 242/402]
    [Recieve: 0x06]
    [Send Packet: 243/402]
    [Recieve: 0x06]
    [Send Packet: 244/402]
    [Recieve: 0x06]
    [Send Packet: 245/402]
    [Recieve: 0x06]
    [Send Packet: 246/402]
    [Recieve: 0x06]
    [Send Packet: 247/402]
    [Recieve: 0x06]
    [Send Packet: 248/402]
    [Recieve: 0x06]
    [Send Packet: 249/402]
    [Recieve: 0x06]
    [Send Packet: 250/402]
    [Recieve: 0x06]
    [Send Packet: 251/402]
    [Recieve: 0x06]
    [Send Packet: 252/402]
    [Recieve: 0x06]
    [Send Packet: 253/402]
    [Recieve: 0x06]
    [Send Packet: 254/402]
    [Recieve: 0x06]
    [Send Packet: 255/402]
    [Recieve: 0x06]
    [Send Packet: 256/402]
    [Recieve: 0x06]
    [Send Packet: 257/402]
    [Recieve: 0x06]
    [Send Packet: 258/402]
    [Recieve: 0x06]
    [Send Packet: 259/402]
    [Recieve: 0x06]
    [Send Packet: 260/402]
    [Recieve: 0x06]
    [Send Packet: 261/402]
    [Recieve: 0x06]
    [Send Packet: 262/402]
    [Recieve: 0x06]
    [Send Packet: 263/402]
    [Recieve: 0x06]
    [Send Packet: 264/402]
    [Recieve: 0x06]
    [Send Packet: 265/402]
    [Recieve: 0x06]
    [Send Packet: 266/402]
    [Recieve: 0x06]
    [Send Packet: 267/402]
    [Recieve: 0x06]
    [Send Packet: 268/402]
    [Recieve: 0x06]
    [Send Packet: 269/402]
    [Recieve: 0x06]
    [Send Packet: 270/402]
    [Recieve: 0x06]
    [Send Packet: 271/402]
    [Recieve: 0x06]
    [Send Packet: 272/402]
    [Recieve: 0x06]
    [Send Packet: 273/402]
    [Recieve: 0x06]
    [Send Packet: 274/402]
    [Recieve: 0x06]
    [Send Packet: 275/402]
    [Recieve: 0x06]
    [Send Packet: 276/402]
    [Recieve: 0x06]
    [Send Packet: 277/402]
    [Recieve: 0x06]
    [Send Packet: 278/402]
    [Recieve: 0x06]
    [Send Packet: 279/402]
    [Recieve: 0x06]
    [Send Packet: 280/402]
    [Recieve: 0x06]
    [Send Packet: 281/402]
    [Recieve: 0x06]
    [Send Packet: 282/402]
    [Recieve: 0x06]
    [Send Packet: 283/402]
    [Recieve: 0x06]
    [Send Packet: 284/402]
    [Recieve: 0x06]
    [Send Packet: 285/402]
    [Recieve: 0x06]
    [Send Packet: 286/402]
    [Recieve: 0x06]
    [Send Packet: 287/402]
    [Recieve: 0x06]
    [Send Packet: 288/402]
    [Recieve: 0x06]
    [Send Packet: 289/402]
    [Recieve: 0x06]
    [Send Packet: 290/402]
    [Recieve: 0x06]
    [Send Packet: 291/402]
    [Recieve: 0x06]
    [Send Packet: 292/402]
    [Recieve: 0x06]
    [Send Packet: 293/402]
    [Recieve: 0x06]
    [Send Packet: 294/402]
    [Recieve: 0x06]
    [Send Packet: 295/402]
    [Recieve: 0x06]
    [Send Packet: 296/402]
    [Recieve: 0x06]
    [Send Packet: 297/402]
    [Recieve: 0x06]
    [Send Packet: 298/402]
    [Recieve: 0x06]
    [Send Packet: 299/402]
    [Recieve: 0x06]
    [Send Packet: 300/402]
    [Recieve: 0x06]
    [Send Packet: 301/402]
    [Recieve: 0x06]
    [Send Packet: 302/402]
    [Recieve: 0x06]
    [Send Packet: 303/402]
    [Recieve: 0x06]
    [Send Packet: 304/402]
    [Recieve: 0x06]
    [Send Packet: 305/402]
    [Recieve: 0x06]
    [Send Packet: 306/402]
    [Recieve: 0x06]
    [Send Packet: 307/402]
    [Recieve: 0x06]
    [Send Packet: 308/402]
    [Recieve: 0x06]
    [Send Packet: 309/402]
    [Recieve: 0x06]
    [Send Packet: 310/402]
    [Recieve: 0x06]
    [Send Packet: 311/402]
    [Recieve: 0x06]
    [Send Packet: 312/402]
    [Recieve: 0x06]
    [Send Packet: 313/402]
    [Recieve: 0x06]
    [Send Packet: 314/402]
    [Recieve: 0x06]
    [Send Packet: 315/402]
    [Recieve: 0x06]
    [Send Packet: 316/402]
    [Recieve: 0x06]
    [Send Packet: 317/402]
    [Recieve: 0x06]
    [Send Packet: 318/402]
    [Recieve: 0x06]
    [Send Packet: 319/402]
    [Recieve: 0x06]
    [Send Packet: 320/402]
    [Recieve: 0x06]
    [Send Packet: 321/402]
    [Recieve: 0x06]
    [Send Packet: 322/402]
    [Recieve: 0x06]
    [Send Packet: 323/402]
    [Recieve: 0x06]
    [Send Packet: 324/402]
    [Recieve: 0x06]
    [Send Packet: 325/402]
    [Recieve: 0x06]
    [Send Packet: 326/402]
    [Recieve: 0x06]
    [Send Packet: 327/402]
    [Recieve: 0x06]
    [Send Packet: 328/402]
    [Recieve: 0x06]
    [Send Packet: 329/402]
    [Recieve: 0x06]
    [Send Packet: 330/402]
    [Recieve: 0x06]
    [Send Packet: 331/402]
    [Recieve: 0x06]
    [Send Packet: 332/402]
    [Recieve: 0x06]
    [Send Packet: 333/402]
    [Recieve: 0x06]
    [Send Packet: 334/402]
    [Recieve: 0x06]
    [Send Packet: 335/402]
    [Recieve: 0x06]
    [Send Packet: 336/402]
    [Recieve: 0x06]
    [Send Packet: 337/402]
    [Recieve: 0x06]
    [Send Packet: 338/402]
    [Recieve: 0x06]
    [Send Packet: 339/402]
    [Recieve: 0x06]
    [Send Packet: 340/402]
    [Recieve: 0x06]
    [Send Packet: 341/402]
    [Recieve: 0x06]
    [Send Packet: 342/402]
    [Recieve: 0x06]
    [Send Packet: 343/402]
    [Recieve: 0x06]
    [Send Packet: 344/402]
    [Recieve: 0x06]
    [Send Packet: 345/402]
    [Recieve: 0x06]
    [Send Packet: 346/402]
    [Recieve: 0x06]
    [Send Packet: 347/402]
    [Recieve: 0x06]
    [Send Packet: 348/402]
    [Recieve: 0x06]
    [Send Packet: 349/402]
    [Recieve: 0x06]
    [Send Packet: 350/402]
    [Recieve: 0x06]
    [Send Packet: 351/402]
    [Recieve: 0x06]
    [Send Packet: 352/402]
    [Recieve: 0x06]
    [Send Packet: 353/402]
    [Recieve: 0x06]
    [Send Packet: 354/402]
    [Recieve: 0x06]
    [Send Packet: 355/402]
    [Recieve: 0x06]
    [Send Packet: 356/402]
    [Recieve: 0x06]
    [Send Packet: 357/402]
    [Recieve: 0x06]
    [Send Packet: 358/402]
    [Recieve: 0x06]
    [Send Packet: 359/402]
    [Recieve: 0x06]
    [Send Packet: 360/402]
    [Recieve: 0x06]
    [Send Packet: 361/402]
    [Recieve: 0x06]
    [Send Packet: 362/402]
    [Recieve: 0x06]
    [Send Packet: 363/402]
    [Recieve: 0x06]
    [Send Packet: 364/402]
    [Recieve: 0x06]
    [Send Packet: 365/402]
    [Recieve: 0x06]
    [Send Packet: 366/402]
    [Recieve: 0x06]
    [Send Packet: 367/402]
    [Recieve: 0x06]
    [Send Packet: 368/402]
    [Recieve: 0x06]
    [Send Packet: 369/402]
    [Recieve: 0x06]
    [Send Packet: 370/402]
    [Recieve: 0x06]
    [Send Packet: 371/402]
    [Recieve: 0x06]
    [Send Packet: 372/402]
    [Recieve: 0x06]
    [Send Packet: 373/402]
    [Recieve: 0x06]
    [Send Packet: 374/402]
    [Recieve: 0x06]
    [Send Packet: 375/402]
    [Recieve: 0x06]
    [Send Packet: 376/402]
    [Recieve: 0x06]
    [Send Packet: 377/402]
    [Recieve: 0x06]
    [Send Packet: 378/402]
    [Recieve: 0x06]
    [Send Packet: 379/402]
    [Recieve: 0x06]
    [Send Packet: 380/402]
    [Recieve: 0x06]
    [Send Packet: 381/402]
    [Recieve: 0x06]
    [Send Packet: 382/402]
    [Recieve: 0x06]
    [Send Packet: 383/402]
    [Recieve: 0x06]
    [Send Packet: 384/402]
    [Recieve: 0x06]
    [Send Packet: 385/402]
    [Recieve: 0x06]
    [Send Packet: 386/402]
    [Recieve: 0x06]
    [Send Packet: 387/402]
    [Recieve: 0x06]
    [Send Packet: 388/402]
    [Recieve: 0x06]
    [Send Packet: 389/402]
    [Recieve: 0x06]
    [Send Packet: 390/402]
    [Recieve: 0x06]
    [Send Packet: 391/402]
    [Recieve: 0x06]
    [Send Packet: 392/402]
    [Recieve: 0x06]
    [Send Packet: 393/402]
    [Recieve: 0x06]
    [Send Packet: 394/402]
    [Recieve: 0x06]
    [Send Packet: 395/402]
    [Recieve: 0x06]
    [Send Packet: 396/402]
    [Recieve: 0x06]
    [Send Packet: 397/402]
    [Recieve: 0x06]
    [Send Packet: 398/402]
    [Recieve: 0x06]
    [Send Packet: 399/402]
    [Recieve: 0x06]
    [Send Packet: 400/402]
    [Recieve: 0x06]
    [Send Packet: 401/402]
    [Recieve: 0x06]
    [Send Packet: 402/402]
    Send Xmodem done!
    Verify...
    Verify done.
    Close port COM56
    Download finish!
    Stop exited


    BL3335-P has been a bit of a disappointment so far:
    -no log out on any UART at any standard or many interim bauds.
    -IO27 outputs a load of odd characters in a boot-log kinda flow way, but nothing close to readable, ever
    -P21 is not routed out anywhere - may have to remove RF cover to try it (would have expected silence though instead of unreadable output)
    -No recognition of device by RDA Dump tool at any baud from either UART - BL3335-P is now fully de-soldered from plug in case of interference.
    -note: module does boot and wifi AP does show - plug/LEDs pairing mode look as it should - I have not tried pairing
    -yes I've searched for Tuya SDKs using variations of rda5991h

    SWD is reported to be an option by users here https://esp8266.ru/forum/threads/rda5981.2944/ but I have had no success with HLK-M50 or BL3335-P in trying. I even sought to try another J-Link which led to me converting these found discarded STM32 Discovery boards (at local recycling centre months ago) to J-Link from ST-Link - that was a bonus side-adventure but the newer firmware made no difference (2019 vs 2012 in clone)

    Two STM32 development boards with components and pin headers on a blue background.
  • ADVERTISEMENT
  • #24 21698160
    divadiow
    Level 36  
    ah yes, I did do the one in the v2 SDK. Doesn't print much, so not sure if this is BL only or if just silent after BL. I'm siding with yes it boots.

    uartwifi.bin
    Code: Text
    Log in, to see the code


    console.bin
    Code: Text
    Log in, to see the code
  • #25 21698166
    insmod
    Level 28  
    >>21698160
    Both of those were built by myself.
    uartwifi is AT console.
  • Helpful post
    #26 21698175
    divadiow
    Level 36  
    insmod wrote:
    uartwifi is AT console.

    ah yes.

    921600 baud still and on IO26/IO27. AT ack with IO21 high


    Screenshot of RealTerm showing AT commands sent and responses from a serial device

    Added after 7 [minutes]:


    Screenshot of RealTerm with AT commands and serial port set to 921600 baud

    Added after 5 [hours] 50 [minutes]:

    well that's unexpected
    RDA 5981AM/Broadlink BL3335-P - Generic/nobrand 15W RGBW B22 Bulb - basic teardown

    maybe BL0908 is some internal designation for RDA5981

    Added after 50 [minutes]:

    with IO21 high

    Code: Text
    Log in, to see the code


    Added after 1 [hours]:

    https://github.com/divadiow/FlashDumps/commit/9e1458f98d0c2f97d0956df885668a6d5c56b583

    Added after 11 [minutes]:

    trimmed away 0x0-0x1000 from dump and flashed from 0x1000 on HLK-M50 = booting + AP

    RDA 5981AM/Broadlink BL3335-P - Generic/nobrand 15W RGBW B22 Bulb - basic teardown

    Code: Text
    Log in, to see the code
  • Helpful post
    #28 21698744
    insmod
    Level 28  
    With config, sta and pins/pwm/uart
    Possible that it's broken, if flash offset is not 0x{addr}, but 0x180{addr}
    Attached both versions.

    Another potential problem is that SDK reads/writes some wifi data without possibility of disabling it.
    Do flash erase, flash AT binary, connect to wifi and take a backup.
  • #29 21698760
    divadiow
    Level 36  
    OK. OpenBeken_offset.bin to 0x1000 will often not give output, apart from the BL bit, but when it does:

    Code: Text
    Log in, to see the code


    RDA Flashtest Tool interface with settings window and success message visible

    insmod wrote:
    Possible that it's broken, if flash offset is not 0x{addr}, but 0x180{addr}


    not sure 100% I understand this bit. I've flashed both Openbeken.bin and Openbeken_offset.bin to 0x1000 and 0x18001000 in RDA Flashtest Tool but the above is the only signs of anything

    insmod wrote:
    Do flash erase, flash AT binary, connect to wifi and take a backup.


    will do. Also, I haven't quite understood from datasheets if it's safe to erase from 0x0 yet - do you know? I don't want a BK-T scenario without a working J-Link recovery option.
  • #30 21698765
    insmod
    Level 28  
    >>21698760
    It probably is, if you have a backup. It has ROM bootloader.

    Added after 1 [minutes]:

    What about earlier, AP only version?

Topic summary

The discussion revolves around the Broadlink BL3335-P smart bulb, which utilizes the RDA 5981AM chip. The original poster seeks information on the device and its components after peeling off the can to reveal the chip. They mention the bulb likely originated from AliExpress and express interest in moving away from proprietary firmware. Other participants inquire about the availability of a datasheet and suggest methods for obtaining a boot log, including using an Arduino for serial communication. They also note the existence of a similar module available on AliExpress (HLK-M50) and discuss the outdated nature of the available SDKs for the RDA5981AM chip.
Summary generated by the language model.
ADVERTISEMENT