Skip to content
Merged
Show file tree
Hide file tree
Changes from 65 commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
30fbf55
Initial plan
Copilot Oct 5, 2025
93908e7
Add ESP32 bootloader upgrade functionality with JSON API support
Copilot Oct 5, 2025
a18a661
Add esp_flash.h include for ESP32 bootloader flash operations
Copilot Oct 5, 2025
c3e1890
Improve bootloader flash implementation with proper erase and write o…
Copilot Oct 5, 2025
042ed39
Fix: Remove static keyword from getBootloaderSHA256Hex() to match dec…
Copilot Oct 5, 2025
f5f3fc3
Fix: Cast min() arguments to size_t for ESP32-C3 compatibility
Copilot Oct 5, 2025
d79b023
Fix: Move bootloader JavaScript to separate script block to avoid Get…
Copilot Oct 5, 2025
62c78fc
Refactor bootloader upload to buffer entire file in RAM before flash …
Copilot Nov 8, 2025
f4b98c4
Add ESP-IDF bootloader image validation before flash operations
Copilot Nov 8, 2025
da1d53c
Enhance bootloader validation to match esp_image_verify() checks comp…
Copilot Nov 8, 2025
76bb3f7
Initial plan
Copilot Oct 5, 2025
5f33c69
Fix copilot-instructions.md to require mandatory build validation
Copilot Oct 5, 2025
e2b8f91
Reference Hardware Compilation section for common environments list
Copilot Oct 5, 2025
2acf731
Update platformio.ini
wled-compile Oct 5, 2025
f0182eb
safety check for bootloop action tracker: bring it back on track if o…
DedeHai Oct 9, 2025
186c4a7
fix low brightness gradient "jumpyness"
DedeHai Oct 12, 2025
1dd338c
Fix blank area issue with Twinkle (#5005)
benjamw Oct 17, 2025
4973fd5
Adding DDP over WS, moving duplicate WS-connection to common.js (#4997)
DedeHai Oct 21, 2025
eb80fdf
Game of Life Rework
Brandon502 Oct 9, 2025
0391488
Game of Life Optimizations
Brandon502 Oct 15, 2025
7e1992f
adding function to check if a backup exists
DedeHai Oct 19, 2025
46ff438
check config backup as welcome page gate
DedeHai Oct 19, 2025
0f06535
Include audioreactive for hub75 examples
netmindz Sep 25, 2025
8e00e71
Include audioreactive for hub75 examples - MOONHUB audio
netmindz Sep 26, 2025
5fb3713
Include esp32 debug build
netmindz Nov 7, 2025
acd415c
fix release name for esp32
netmindz Nov 7, 2025
c623b82
improve esp32_dev env
netmindz Nov 8, 2025
1afd72c
Initial plan
Copilot Oct 5, 2025
151acb2
Initial plan
Copilot Oct 5, 2025
07e26d3
fix ESP32_DEBUG
netmindz Nov 8, 2025
601bb6f
Initial plan
Copilot Oct 5, 2025
9134923
Initial plan
Copilot Oct 5, 2025
d475d21
Initial plan
Copilot Oct 5, 2025
670f74d
Initial plan
Copilot Oct 5, 2025
013ecfb
Add ESP32 bootloader upgrade functionality with JSON API support
netmindz Nov 9, 2025
2963c1b
Add esp_flash.h include for ESP32 bootloader flash operations
Copilot Oct 5, 2025
94bea44
Improve bootloader flash implementation with proper erase and write o…
Copilot Oct 5, 2025
ffc7b66
Fix: Remove static keyword from getBootloaderSHA256Hex() to match dec…
Copilot Oct 5, 2025
c91a39f
Fix: Cast min() arguments to size_t for ESP32-C3 compatibility
Copilot Oct 5, 2025
00ca694
Fix: Move bootloader JavaScript to separate script block to avoid Get…
netmindz Nov 9, 2025
9e0f7ec
Refactor bootloader upload to buffer entire file in RAM before flash …
Copilot Nov 8, 2025
8fc33fd
Add ESP-IDF bootloader image validation before flash operations
Copilot Nov 8, 2025
520f1f8
Enhance bootloader validation to match esp_image_verify() checks comp…
Copilot Nov 8, 2025
3c5df5a
Initial plan
Copilot Oct 5, 2025
3d9012b
Initial plan
Copilot Oct 5, 2025
aef5e96
Initial plan
Copilot Oct 5, 2025
f1242bf
Initial plan
Copilot Oct 5, 2025
104d2ae
Initial plan
Copilot Oct 5, 2025
2e7b6b7
Initial plan
Copilot Oct 5, 2025
00904d8
Merge branch 'copilot/fix-d4f5fc55-f916-458a-9155-deb9bbff6662' of ht…
netmindz Nov 9, 2025
90d4dd7
remove duplicate call for validation - isValidBootloader
netmindz Nov 9, 2025
b98ee3e
remove duplicate updatebootloader handler
netmindz Nov 9, 2025
95611f1
Improve error handling
netmindz Nov 9, 2025
5250a0f
move verifyBootloaderImage to ota_update
netmindz Nov 9, 2025
4cddd3f
refactor bootloader update to pattern used by main ota update
netmindz Nov 9, 2025
c5631b8
remove null checks
netmindz Nov 9, 2025
34445db
working upgrade! (for esp32 classic)
netmindz Nov 9, 2025
a4109c7
tidy up merge conflict on update.htm
netmindz Nov 9, 2025
abfe91d
tidy up imports in wled_server.cpp
netmindz Nov 9, 2025
8097c7c
refactor current bootloader reading out of the server ino ota
netmindz Nov 9, 2025
9474c29
single definition of BOOTLOADER_OFFSET
netmindz Nov 9, 2025
ff93a48
optimise fetching of bootloaderSHA256
netmindz Nov 9, 2025
a36638e
Stop processing once an error is detected during bootloader upload
netmindz Nov 9, 2025
88466c7
Truncated bootloader images slip through verification and get flashed
netmindz Nov 9, 2025
af8c851
Privilege checks must run before bootloader init
netmindz Nov 9, 2025
c7c379f
match all esp32 types
netmindz Nov 9, 2025
50d33c5
Only supports ESP32 and ESP32-S2
netmindz Nov 9, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 18 additions & 2 deletions wled00/data/update.htm
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,13 @@
if (data.arch == "esp8266") {
toggle('rev');
}
const isESP32 = data.arch && data.arch.startsWith('esp32');
if (isESP32) {
gId('bootloader-section').style.display = 'block';
if (data.bootloaderSHA256) {
gId('bootloader-hash').innerText = 'Current bootloader SHA256: ' + data.bootloaderSHA256;
}
}
})
.catch(error => {
console.log('Could not fetch device info:', error);
Expand All @@ -42,8 +49,7 @@
@import url("style.css");
</style>
</head>

<body onload="GetV()">
<body onload="GetV();">
<h2>WLED Software Update</h2>
<form method='POST' action='./update' id='upd' enctype='multipart/form-data' onsubmit="toggle('upd')">
Installed version: <span class="sip installed-version">Loading...</span><br>
Expand All @@ -60,6 +66,16 @@ <h2>WLED Software Update</h2>
<button id="rev" type="button" onclick="cR()">Revert update</button><br>
<button type="button" onclick="B()">Back</button>
</form>
<div id="bootloader-section" style="display:none;">
<hr class="sml">
<h2>ESP32 Bootloader Update</h2>
<div id="bootloader-hash" class="sip" style="margin-bottom:8px;"></div>
<form method='POST' action='./updatebootloader' id='bootupd' enctype='multipart/form-data' onsubmit="toggle('bootupd')">
<b>Warning:</b> Only upload verified ESP32 bootloader files!<br>
<input type='file' name='update' required><br>
<button type="submit">Update Bootloader</button>
</form>
</div>
<div id="Noupd" class="hide"><b>Updating...</b><br>Please do not close or refresh the page :)</div>
</body>
</html>
3 changes: 3 additions & 0 deletions wled00/json.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -820,6 +820,9 @@ void serializeInfo(JsonObject root)
root[F("resetReason1")] = (int)rtc_get_reset_reason(1);
#endif
root[F("lwip")] = 0; //deprecated
#ifndef WLED_DISABLE_OTA
root[F("bootloaderSHA256")] = getBootloaderSHA256Hex();
#endif
#else
root[F("arch")] = "esp8266";
root[F("core")] = ESP.getCoreVersion();
Expand Down
Loading