Czy wolisz polską wersję strony elektroda?
Nie, dziękuję Przekieruj mnie tamModerated By p.kaczmarek2:
Thanks, but this should be (and it is now) in the separate topic, so I will just leave a link here:
https://www.elektroda.com/rtvforum/topic4054847.html
Tilator wrote:Now it does not update itself by OTA.
Debug:OTA:Writelen 1460 at 123759
Debug:OTA:write at flash: 0x00151000
Debug:OTA:Writelen 4380 at 125219
Debug:OTA:Writelen 1460 at 129599
Debug:OTA:write at flash: 0x00152000
Firmware name: wifi_mcu_basic_example, hardware version: HW_V1.0, software version: SW_V1.0
Fault on thread HTTP Clie
===== Thread stack information =====
addr: 20033a10 data: 0001fff3
addr: 20033a14 data: 20019274
addr: 20033a18 data: 20034570
addr: 20033a1c data: fffffef1
addr: 20033a20 data: 0000ff06Info:MAIN:Time 73, idle 0/s, freeInfo:MAIN:Time 73, idle 0/s, free 78480, MQTT 1(2), bWifi 1, secondsWithNoPing 8, socks 0/0
Info:MAIN:Time 74, idle 0/s, free 69968, MQTT 1(2), bWifi 1, secondsWithNoPing 9, socks 0/0
(HTTP Clie)StackOverFlow
Firmware name: wifi_mcu_basic_example, hardware version: HW_V1.0, software version: SW_V1.0
Fault on thread HTTP Clie
===== Thread stack information =====
addr: 20033988 data: 0002ef7b
addr: 2003398c data: 20019274
addr: 20033990 data: 20034980
addr: 20033994 data: ffffff69
addr: 20033998 data: 0000ff06
78480, MQTT 1(2), bWifi 1, secondsWithNoPing 8, socks 0/0
Info:MAIN:Time 74, idle 0/s, free 69968, MQTT 1(2), bWifi 1, secondsWithNoPing 9, socks 0/0
(HTTP Clie)StackOverFlow
Firmware name: wifi_mcu_basic_example, hardware version: HW_V1.0, software version: SW_V1.0
Fault on thread HTTP Clie
===== Thread stack information =====
addr: 20033988 data: 0002ef7b
addr: 2003398c data: 20019274
addr: 20033990 data: 20034980
addr: 20033994 data: ffffff69
addr: 20033998 data: 0000ff06--- ota.vue 2024-11-19 13:24:54.000000000 +0100
+++ ota_own.vue 2024-11-23 16:12:25.954693401 +0100
@@ -297,7 +297,7 @@
this.bOTAstarted = true;
this.status += '<br/>starting OTA...';
console.log('start ota ');
- let url = window.device+'/api/ota';
+ let url = 'http://10.42.0.1:88/api/ota';
if (this.otadata){
fetch(url, {
method: 'POST',
sudo nc -l -p 88 > p88.outmax@max-PC:~/LN882H/OTA_issues$ cat -n p88.out | head -n 18
1 POST /api/ota HTTP/1.1
2 Host: 10.42.0.1:88
3 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:132.0) Gecko/20100101 Firefox/132.0
4 Accept: */*
5 Accept-Language: de,en-US;q=0.7,en;q=0.3
6 Accept-Encoding: gzip, deflate
7 Referer: http://10.42.0.159/
8 Content-Length: 363813
9 Origin: http://10.42.0.159
10 DNT: 1
11 Sec-GPC: 1
12 Connection: keep-alive
13 Priority: u=0
14 Pragma: no-cache
15 Cache-Control: no-cache
16
17
� %��������u�k��]
� �R��Z����&�
18 ,b�́~��i�y�ɝX�OTg|s��o
max@max-PC:~/LN882H/OTA_issues$ tail -n +17 p88.out > p88-17.out
max@max-PC:~/LN882H/OTA_issues$
max@max-PC:~/LN882H/OTA_issues$ ls -l p88-17.out
-rw-rw-r-- 1 max max 363813 Nov 23 16:38 p88-17.out
max@max-PC:~/LN882H/OTA_issues$ ls -l ~/Downloads/OpenLN882H_1.17.772_OTA.bin
-rw-rw-r-- 1 max max 363813 Nov 22 11:15 /home/max/Downloads/OpenLN882H_1.17.772_OTA.binmax@max-PC:~/LN882H/OTA_issues$ cmp ~/Downloads/OpenLN882H_1.17.772_OTA.bin p88-17.out
max@max-PC:~/LN882H/OTA_issues$ md5sum ~/Downloads/OpenLN882H_1.17.772_OTA.bin
f2d53e1f34037709196a9823828240a6 /home/max/Downloads/OpenLN882H_1.17.772_OTA.bin
max@max-PC:~/LN882H/OTA_issues$ md5sum p88-17.out
f2d53e1f34037709196a9823828240a6 p88-17.out
max@max-PC:~/LN882H/OTA_issues$ max@max:~/LN882H/OTA_issues$ cat -n temp.out | head -n 14
1 POST /api/ota HTTP/1.1
2 Host: 10.42.0.1:88
3 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:132.0) Gecko/20100101 Firefox/132.0
4 Accept: */*
5 Accept-Language: de,en-US;q=0.7,en;q=0.3
6 Accept-Encoding: gzip, deflate
7 Referer: http://10.42.0.159/
8 Content-Length: 363813
9 Origin: http://10.42.0.159
10 Connection: keep-alive
11 Priority: u=0
12
13
� %��������u�k��]
� �R��Z����&�
14 ,b�́~��i�y�ɝX�OTg|s��o
max@max:~/LN882H/OTA_issues$ tail -n +13 temp.out > temp-17.out
max@max:~/LN882H/OTA_issues$ md5sum temp-17.out
f2d53e1f34037709196a9823828240a6 temp-17.out
max@max:~/LN882H/OTA_issues$ md5sum ~/Downloads/OpenLN882H_1.17.772_OTA.bin
f2d53e1f34037709196a9823828240a6 /home/max/Downloads/OpenLN882H_1.17.772_OTA.bin
max@max:~/LN882H/OTA_issues$
max@max:~/LN882H/OTA_issues$ docker cp ota.vue $(docker ps | grep closed | sed "s/[ ]*closed.*//"):/usr/src/app/vue/ota.vue
Successfully copied 18.9kB to edf816d08a79:/usr/src/app/vue/ota.vue
max@max:~/LN882H/OTA_issues$ Info:MAIN:Time 4420, idle 0/s, free 98296, MQTT 1(17), bWifi 1, secondsWithNoPing 4355, socks 0/0
Info:MAIN:Time 4421, idle 0/s, free 78376, MQTT 1(17), bWifi 1, secondsWithNoPing 4356, socks 0/0
Firmware name: wifi_mcu_basic_example, hardware version: HW_V1.0, software version: SW_V1.0
Fault on thread HTTP Clie
===== Thread stack information =====
addr: 20033a18 data: 0001ffdf
addr: 20033a1c data: 20019274
addr: 20033a20 data: 200345e0
addr: 20033a24 data: ffffff05cat p88.out | nc 10.42.0.159 80Info:MAIN:Time 112, idle 0/s, free 78496, MQTT 1(2), bWifi 1, secondsWithNoPing 47, socks 0/0
Firmware name: wifi_mcu_basic_example, hardware version: HW_V1.0, software version: SW_V1.0
Fault on thread HTTP Clie
===== Thread stack information =====
addr: 20033a28 data: 0001afdf
addr: 20033a2c data: 20019274
addr: 20033a30 data: 200345f0
addr: 20033a34 data: ffffff05
addr: 20033a38 data: 0000ff06
addr: 20033a3c data: 1004221f
addr: 20033a40 data: 200206a0
addr: 20033a44 data: 00000014
addr: 20033a48 data: a5a5a5a5
max@max:~/LN882H/OTA_issues$ head -n 12 p88_chromium.out
POST /api/ota HTTP/1.1
Host: 10.42.0.1:88
Connection: keep-alive
Content-Length: 363813
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
Accept: */*
Origin: http://10.42.0.159
Referer: http://10.42.0.159/
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
� %��������u�k��]
� �R��Z����&�
max@max:~/LN882H/OTA_issues$
max4elektroda wrote:(in fact, it could be ==, for the offset should not be > SECTOR_SIZE_4KB, meaning we wrote outside allocated memory)
part_len = temp4k_offset + buf_len - SECTOR_SIZE_4KB;
memcpy(temp4K_buf + temp4k_offset, buf, buf_len - part_len);
hal_flash_program(flash_ota_start_addr + flash_ota_offset, SECTOR_SIZE_4KB, (uint8_t *)temp4K_buf);max4elektroda wrote:my conclusion is, that line 1318 should read: if (temp4k_offset >= SECTOR_SIZE_4KB) {
max4elektroda wrote:called twice with buffers of length 8 and 14
XJ_ wrote:Written is always just delta, there is no oveflowpart_len = temp4k_offset + buf_len - SECTOR_SIZE_4KB; memcpy(temp4K_buf + temp4k_offset, buf, buf_len - part_len);
if (part_len > 0) {
memcpy(temp4K_buf + temp4k_offset, buf + (buf_len - part_len), part_len);
temp4k_offset += part_len;
}XJ_ wrote:this routine should not be called with buf_len > SECTOR_SIZE_4KB (as in your example, 14>10)
Debug:OTA:write at flash: 0x00135000
Debug:OTA:Writelen 4380 at 9819
Debug:OTA:Writelen 1460 at 14199
Debug:OTA:write at flash: 0x00136000
Debug:OTA:Writelen 4380 at 15659
Debug:OTA:write at flash: 0x00137000
max4elektroda wrote:And 4380 is bigger than 4096, so buffer is filled e.g. to 4000, the original code will write one 4k slice to flash and later try to copy the remaining 4284 bytes to the 4096 byte memory.
So I made it work in this case, too (at least I tried).
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]