diff --git a/arduino/beken-72xx/cores/arduino/LibreTuyaAPI.cpp b/arduino/beken-72xx/cores/arduino/LibreTuyaAPI.cpp index 0ef7477..d3927a0 100644 --- a/arduino/beken-72xx/cores/arduino/LibreTuyaAPI.cpp +++ b/arduino/beken-72xx/cores/arduino/LibreTuyaAPI.cpp @@ -13,11 +13,16 @@ #define FLASH_OP_RDID 20 extern "C" { + #include +#include #include #include #include -} + +extern uint8_t system_mac[]; + +} // extern "C" void LibreTuya::restart() { bk_reboot(); @@ -35,10 +40,9 @@ const char *LibreTuya::getChipModel() { } uint32_t LibreTuya::getChipId() { - // TODO determine if this really is unique - uint32_t chipId = REG_READ(SCTRL_DEVICE_ID); - chipId &= 0xFFFFFF; - return chipId; + uint8_t mac[6]; + cfg_load_mac(mac); // force loading MAC from TLV (ignore user-set WiFi MAC) + return (mac[3]) | (mac[4] << 8) | (mac[5] << 16); } uint8_t LibreTuya::getChipCores() { diff --git a/arduino/libretuya/core/ChipType.h b/arduino/libretuya/core/ChipType.h index e9fde00..205bd01 100644 --- a/arduino/libretuya/core/ChipType.h +++ b/arduino/libretuya/core/ChipType.h @@ -26,4 +26,7 @@ enum ChipType { RTL8710L0 = CHIP_TYPE(F_RTL8710B, 0xFB), // CHIPID_8710BN_L0 / QFN32 RTL8711BN = CHIP_TYPE(F_RTL8710B, 0xFD), // CHIPID_8711BN / QFN48 RTL8711BU = CHIP_TYPE(F_RTL8710B, 0xFC), // CHIPID_8711BG / QFN68 + // Beken 72XX + BK7231T = CHIP_TYPE(F_BK7231T, 0x1A), // *SCTRL_CHIP_ID = 0x7231a + BK7231N = CHIP_TYPE(F_BK7231N, 0x1C), // *SCTRL_CHIP_ID = 0x7231c }; diff --git a/tools/soc/uf2_bk72xx.py b/tools/soc/uf2_bk72xx.py index 925ef16..cfef700 100644 --- a/tools/soc/uf2_bk72xx.py +++ b/tools/soc/uf2_bk72xx.py @@ -47,6 +47,8 @@ def upload_uart( except ValueError as e: print(prefix, f"Writing failed: {e.args[0]}") return False + # reboot the chip + bk.reboot_chip() return True