I think we can safely ignore this case
[WLIB_E]This operation is prohibited in current WiFi mode(1)!Added after 2 [minutes]:
... and the module draws a current from almost 100 mA in AP mode
Czy wolisz polską wersję strony elektroda?
Nie, dziękuję Przekieruj mnie tam[WLIB_E]This operation is prohibited in current WiFi mode(1)!p.kaczmarek2 wrote:Before I forget, that little fix is also awaiting testing:
https://github.com/openshwprojects/OpenBK7231T_App/pull/1189
Config:
ShortName 'SwitchC2A795XX'
Full Name 'Switch C2A795XX (Test)'
MQTT
Native name 'Switch_C2A795XX'
Switch_C2A795XX/1/get 0
Tasmota name: 'Switch_C2A795XX'
tele/Switch_C2A795XX/STATE {":-38,"LinkCount":21,"Downtime":"0T06:13:34"}}
Hass name: 'Switch_C2A795XX_(Test)'
homeassistant/sensor/Switch_C2A795XX_(Test)_uptime/config {"dev":{"ids":["Switch C2A795XX (Test)"],"name":"SwitchC2A795XX""}
p.kaczmarek2 wrote:Ok, so what's next for LN882H? Hm, isn't LittleFS still missing?
diff --git a/project/OpenBeken/CMakeLists.txt b/project/OpenBeken/CMakeLists.txt
index 0fd392e..8f29744 100644
--- a/project/OpenBeken/CMakeLists.txt
+++ b/project/OpenBeken/CMakeLists.txt
@@ -109,9 +109,9 @@ set(PROJ_ALL_SRC
# app/src/i2c/drv_i2c_mcp23017.c
# app/src/i2c/drv_i2c_tc74.c
app/src/jsmn/jsmn.c
-# app/src/littlefs/lfs_util.c
-# app/src/littlefs/lfs.c
-# app/src/littlefs/our_lfs.c
+ app/src/littlefs/lfs_util.c
+ app/src/littlefs/lfs.c
+ app/src/littlefs/our_lfs.c
app/src/logging/logging.c
# app/src/memory/memtest.c
27%] Building C object project/OpenBeken/CMakeFiles/OpenBeken.elf.dir/app/src/cmnds/cmd_main.obj
cd /OpenBK7231T_App/sdk/OpenLN882H/build/project/OpenBeken && /usr/bin/arm-none-eabi-gcc -DARM_MATH_CM4 -DLN882H -DPLATFORM_LN882H=1 -DUSER_SW_VER=\"dev_20240501_101247\" -I/OpenBK7231T_App/sdk/OpenLN882H/components/kernel -I/OpenBK7231T_App/sdk/OpenLN882H/components/kernel/osal -I/OpenBK7231T_App/sdk/OpenLN882H/components/kernel/FreeRTOS_Adapter -I/OpenBK7231T_App/sdk/OpenLN882H/components/kernel/FreeRTOS/Source/include -I/OpenBK7231T_App/sdk/OpenLN882H/components/kernel/FreeRTOS/Source/portable/GCC/ARM_CM4F -I/OpenBK7231T_App/sdk/OpenLN882H/components/ln_at -I/OpenBK7231T_App/sdk/OpenLN882H/components/ln_at/adapter -I/OpenBK7231T_App/sdk/OpenLN882H/components/ln_at/cmd -I/OpenBK7231T_App/sdk/OpenLN882H/components/ln_at/parser -I/OpenBK7231T_App/sdk/OpenLN882H/components/ln_at/transfer -I/OpenBK7231T_App/sdk/OpenLN882H/components/ln_at_cmd -I/OpenBK7231T_App/sdk/OpenLN882H/components/net/ping -I/OpenBK7231T_App/sdk/OpenLN882H/components/net/iperf -I/OpenBK7231T_App/sdk/OpenLN882H/components/fs/kv/kv -I/OpenBK7231T_App/sdk/OpenLN882H/components/fs/kv/kv_port -I/OpenBK7231T_App/sdk/OpenLN882H/components/fs/nvds -I/OpenBK7231T_App/sdk/OpenLN882H/components/fs/partition_mgr -I/OpenBK7231T_App/sdk/OpenLN882H/components/fota/ota_agent -I/OpenBK7231T_App/sdk/OpenLN882H/components/utils -I/OpenBK7231T_App/sdk/OpenLN882H/components/utils/runtime -I/OpenBK7231T_App/sdk/OpenLN882H/components/utils/reboot_trace -I/OpenBK7231T_App/sdk/OpenLN882H/components/utils/fifo -I/OpenBK7231T_App/sdk/OpenLN882H/components/utils/debug -I/OpenBK7231T_App/sdk/OpenLN882H/components/utils/debug/CmBacktrace -I/OpenBK7231T_App/sdk/OpenLN882H/components/utils/linux_compat -I/OpenBK7231T_App/sdk/OpenLN882H/components/serial -I/OpenBK7231T_App/sdk/OpenLN882H/mcu/ln882h -I/OpenBK7231T_App/sdk/OpenLN882H/mcu/CMSIS_5.3.0 -I/OpenBK7231T_App/sdk/OpenLN882H/mcu/driver_ln882h -I/OpenBK7231T_App/sdk/OpenLN882H/mcu/driver_ln882h/reg -I/OpenBK7231T_App/sdk/OpenLN882H/components/wifi/wifi_manager -I/OpenBK7231T_App/sdk/OpenLN882H/components/wifi/wifi_lib_import -I/OpenBK7231T_App/sdk/OpenLN882H/components/wifi/wifi_lib_export -I/OpenBK7231T_App/sdk/OpenLN882H/project/OpenBeken/app -I/OpenBK7231T_App/sdk/OpenLN882H/project/OpenBeken/app/include -I/OpenBK7231T_App/sdk/OpenLN882H/project/OpenBeken/bsp -I/OpenBK7231T_App/sdk/OpenLN882H/project/OpenBeken/cfg -I/OpenBK7231T_App/sdk/OpenLN882H/components -I/OpenBK7231T_App/sdk/OpenLN882H/components/net/lwip-2.1.3/src/include -I/OpenBK7231T_App/sdk/OpenLN882H/components/net/lwip-2.1.3/src/include/lwip -I/OpenBK7231T_App/sdk/OpenLN882H/components/net/lwip-2.1.3/src/include/lwip/prot -I/OpenBK7231T_App/sdk/OpenLN882H/components/net/lwip-2.1.3/src/include/lwip/priv -I/OpenBK7231T_App/sdk/OpenLN882H/components/net/lwip-2.1.3/src/include/netif -I/OpenBK7231T_App/sdk/OpenLN882H/components/net/lwip-2.1.3/src/include/posix -I/OpenBK7231T_App/sdk/OpenLN882H/components/net/lwip-2.1.3/src/include/posix/sys -I/OpenBK7231T_App/sdk/OpenLN882H/components/net/lwip-2.1.3/src/port/ln_osal/include -I/OpenBK7231T_App/sdk/OpenLN882H/components/net/dhcpd -mthumb -mabi=aapcs -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -MD -MP -ffunction-sections -fdata-sections -fno-strict-aliasing -O1 -DNDEBUG -std=gnu99 -o CMakeFiles/OpenBeken.elf.dir/app/src/cmnds/cmd_main.obj -c /OpenBK7231T_App/sdk/OpenLN882H/project/OpenBeken/app/src/cmnds/cmd_main.c
/OpenBK7231T_App/sdk/OpenLN882H/project/OpenBeken/app/src/cmnds/cmd_main.c:47:6: error: conflicting types for 'g_powersave'
47 | bool g_powersave;
| ^~~~~~~~~~~
In file included from /OpenBK7231T_App/sdk/OpenLN882H/project/OpenBeken/app/src/cmnds/cmd_local.h:4,
from /OpenBK7231T_App/sdk/OpenLN882H/project/OpenBeken/app/src/cmnds/cmd_main.c:6:
/OpenBK7231T_App/sdk/OpenLN882H/project/OpenBeken/app/src/cmnds/cmd_public.h:33:13: note: previous declaration of 'g_powersave' was here
33 | extern bool g_powersave;
| ^~~~~~~~~~~
#if ENABLE_LITTLEFS
#include "../littlefs/our_lfs.h"
#endifuint32_t CFG_GetLFS_Size() {
#ifndef LFS_BLOCKS_DEFAULT_LEN // nasty hack. There is something strange with the includes of littlefs in conjunction with LN882H - this define is included in our_lfs.h but not there ?!?!?
#define LFS_BLOCKS_DEFAULT_LEN 0x8000
#endifmax4elektroda wrote:
I made a new PR for this (PR #1191), which will fail for LN882H, because the littleFS files are missing in OpenLN882Hs CMakeList.txt
@p.kaczmarek2: I think I remember you mentioned, how to fix this with some git force command... Maybe you would be so nice to do this?
What I did in my local code:diff --git a/project/OpenBeken/CMakeLists.txt b/project/OpenBeken/CMakeLists.txt index 0fd392e..8f29744 100644 --- a/project/OpenBeken/CMakeLists.txt +++ b/project/OpenBeken/CMakeLists.txt @@ -109,9 +109,9 @@ set(PROJ_ALL_SRC # app/src/i2c/drv_i2c_mcp23017.c # app/src/i2c/drv_i2c_tc74.c app/src/jsmn/jsmn.c -# app/src/littlefs/lfs_util.c -# app/src/littlefs/lfs.c -# app/src/littlefs/our_lfs.c + app/src/littlefs/lfs_util.c + app/src/littlefs/lfs.c + app/src/littlefs/our_lfs.c app/src/logging/logging.c # app/src/memory/memtest.c
Piorun2002 wrote:Works for me![]()
I tested auto switch off:
Error: Cannot find module 'conventional-changelog-conventionalcommits
Info:MAIN:Time 1787, idle 0/s, free 95856, MQTT 1(2), bWifi 1, secondsWithNoPing 1, socks 0/0 POWERSAVE
Info:MAIN:Time 1788, idle 0/s, free 95856, MQTT 1(2), bWifi 1, secondsWithNoPing 1, socks 0/0 POWERSAVE Flag 27 - [HASS] Invoke HomeAssistant discovery on change to ip address, configuration
Flag 30 - [MQTT] Enable Tasmota TELE etc publishes (for ioBroker etc)TL;DR: Need to flash LN882H and keep a recovery path? Use 5 wires and keep BOOT low; as one expert put it, "BOOT is like IO0". First dump the original flash, then write the regular firmware binary over UART, usually at 115200 baud if higher speeds fail. This FAQ is for OpenBeken/OpenLN882H users who need a practical flash, backup, OTA, and recovery workflow. [#20923772]
Dlaczego to ma znaczenie: LN882H can run cloud-free firmware, but success depends more on wiring discipline, baud rate, and power cycling than on the chip itself.
| Opcja | Typowe użycie | Co działało w praktyce | Główne ryzyko |
|---|---|---|---|
LN882H_CMD_Tool.exe |
Flashowanie UART w Windows | Często ruszało po zmianie na 115200 | Błąd Fail. Error downloading file. |
LN882H_Flash_Dumper.py |
Backup flash i OTP | Tworzy dump przed zmianą firmware | Długi odczyt, wymaga poprawnego BOOT |
| OTA z Web App | Aktualizacja już działającego OBK | Chrome/Chromium działały stabilniej niż Firefox | Firefox mógł wywołać crash OTA |
| BK7231GUIFlashTool | Nowsze narzędzie GUI | Wspierane dla LN882H od aktualizacji 2026 | Nadal wymaga tego samego okablowania |
Najważniejszy wniosek: Najczęstsza przyczyna nieudanego flashowania LN882H nie była w module, tylko w procedurze: BOOT musi pozostać niski, po każdej próbie trzeba odłączyć i podłączyć zasilanie, a zejście do 115200 baud często rozwiązywało zapis. [#20958664]
PowerSave 2, kosztem większych opóźnień sieciowych. [#21055421]1441_merge_6d6a6086fa18 do OpenLN882H_1.17.789_OTA.bin właśnie w Firefox 132.0.2. [#21332121]python LN882H_Flash_Dumper.py COMx flashdump; narzędzie zapisze dump flash i OTP. 3. Wgraj nowy firmware poleceniem LN882H_CMD_Tool.exe COMx download flash 921000 0x0 flashimage.bin, a po zakończeniu odłącz BOOT od masy i zrestartuj zasilanie. Po starcie urządzenie wystawia AP na 192.168.4.1. [#20905518]115200 zamiast 2000000, skrócenie przewodów, pełne odłączenie zasilania i USB-TTL po każdej nieudanej próbie oraz podmiana adaptera USB-UART. Pomagało też upewnienie się, że wgrywany jest zwykły plik binarny, a nie plik OTA. Kilku użytkowników potwierdziło, że samo ustawienie 115200 natychmiast rozwiązało Fail. Error downloading file. [#20996463]autoexec.bat, skryptów i funkcji opartych o lokalny storage. Na początku LN882H go nie miał, więc przycisk „List Filesystem” nic nie pokazywał, a tworzenie plików nie działało realnie. Po późniejszym wdrożeniu potwierdzono, że pliki przetrwały kilka aktualizacji OTA. Dodanie LittleFS zwiększało rozmiar binarki LN882H o około 42 KB, ale odblokowywało skrypty i trwałe pliki konfiguracyjne. [#21069454]bin, Web App = OTA.bin. [#20955856]LN882H_CMD_Tool.exe COM# flash erase_all albo wgraj z powrotem oryginalny firmware z backupu. W jednym przypadku dopiero reflashing oryginalnego firmware przywrócił dostęp do sieci domowej, gdy urządzenie po zmianach nie wracało do UI. [#21021640]PowerSave 0 to tryb bez oszczędzania. PowerSave 1 obniżał temperaturę i prąd umiarkowanie. PowerSave 2 dawał największy efekt, np. spadek z 64.0°C do 36.0°C, ale podnosił ping do 56–73 ms i mógł psuć pomiary BL0937 oraz powodować reconnecty Wi‑Fi. Dla pojedynczego modułu raportowano też spadek poboru z około 90 mA do 50 mA przy trybie 1 i 35 mA przy trybie 2. [#21064064]wifi_init_sta(const char* oob_ssid, const char* connect_key, obkStaticIP_t *ip) jako miejsce wymagające aktualizacji w pliku hal_wifi_ln882h.c. Dlatego wpisy statycznego IP były ignorowane, a urządzenie wracało do DHCP. Dopóki ten fragment nie został uzupełniony, jedynym praktycznym obejściem było przypisanie stałego adresu po stronie routera. [#20997185]backlog. Przykład: backlog startDriver ntp; ntp_timeZoneOfs +2 albo backlog startDriver SSDP; startDriver Wemo. NTP wymaga ręcznego startu, a serwer ustawia się komendą ntp_setServer <IP>. DHT był obsługiwany per-pin, ale w części buildów LN882H nie był jeszcze aktywny. Wemo wymagał startu sterownika i sprawdzenia, czy działa endpoint /setup.xml, bo sam komunikat „OK” nie gwarantował wykrycia przez Alexę. [#21028427]HTTP Clie. Po poprawce autorzy potwierdzili udane OTA w Firefox 132.0.2. [#21332121]http_basic_auth.c i opcję kompilacji bez ALLOW_WEB_PASSWORD, co powoduje akceptację każdego połączenia. Później pojawiła się też wersja recovery: po restarcie i ponad 5 błędnych próbach logowania urządzenie mogło zaproponować pełny reset konfiguracji. To rozwiązanie było traktowane ostrożnie ze względów bezpieczeństwa, więc najbezpieczniejszy pozostaje własny build ratunkowy flashowany przez UART. [#21084206]LN882Loader, opublikowane jako projekt do flashowania LN882H bez Windows. Wcześniej użytkownicy próbowali Wine, QEMU i VirtualBox z mieszanymi wynikami; GUI pod Windows działało w VM, ale bywało zawodne. Dla Windows później polecano też GUI flash tool, natomiast w samym wątku jedynym jasno wskazanym rozwiązaniem linuksowym był właśnie LN882Loader. Dla macOS nie podano gotowego natywnego narzędzia, więc praktyczna ścieżka z wątku to Linux tool albo Windows VM. [#21376296]