feat(micropython): ship v1.28.0 firmware for the whole ESP32 family
The esp32/s3/c3 MicroPython bins were v1.20.0 (April 2023) — built by micropython.org on IDF 4.4, three IDF generations behind the compile pipeline and the engines' own validation corpus (both IDF 5.5), and two behind the C6 bin (already v1.28). That drift is what broke I2C on the S3: the engines decode the IDF 5.x driver sequences, and the v1.20 image drove them the 4.4 way. All four families now ship v1.28.0 (2026-04-06, IDF 5.x). Remote URLs and cache keys move together, so a browser holding the old bin in IndexedDB misses the new key and fetches v1.28 on its own. The new images all declare 4 MB flash — padToFlashSize's floor exactly (the old S3 bin declared 8 MB). Validated cold on each engine (boot -> REPL, i2c.scan finds an attached slave, WLAN scan/connect/DHCP; S3 additionally quad-PSRAM with a multi-MB heap) and in the app (scan [60] on esp32/s3/c3, the ssd1306 gallery example drawing). Companion engine release: esp32s3js v1.16.0 (I2C interrupts on both cores, quad-PSRAM data plane). Pin.toggle() and three years of upstream fixes come along; the v1.20 Pin.toggle note in the editor seed is now history only. Residual risk, flagged not fixed: the OSS QEMU self-host path (no JS engines) now boots v1.28 under QEMU — unvalidated here, velxio.dev does not exercise it.
This commit is contained in:
parent
4eb8060dcb
commit
bd1613a9e2
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -17,18 +17,18 @@ interface FirmwareConfig {
|
|||
|
||||
const FIRMWARE_MAP: Record<string, FirmwareConfig> = {
|
||||
esp32: {
|
||||
remote: 'https://micropython.org/resources/firmware/ESP32_GENERIC-20230426-v1.20.0.bin',
|
||||
cacheKey: 'micropython-esp32-v1.20.0',
|
||||
remote: 'https://micropython.org/resources/firmware/ESP32_GENERIC-20260406-v1.28.0.bin',
|
||||
cacheKey: 'micropython-esp32-v1.28.0',
|
||||
fallback: '/firmware/micropython-esp32.bin',
|
||||
},
|
||||
'esp32-s3': {
|
||||
remote: 'https://micropython.org/resources/firmware/ESP32_GENERIC_S3-20230426-v1.20.0.bin',
|
||||
cacheKey: 'micropython-esp32s3-v1.20.0',
|
||||
remote: 'https://micropython.org/resources/firmware/ESP32_GENERIC_S3-20260406-v1.28.0.bin',
|
||||
cacheKey: 'micropython-esp32s3-v1.28.0',
|
||||
fallback: '/firmware/micropython-esp32s3.bin',
|
||||
},
|
||||
'esp32-c3': {
|
||||
remote: 'https://micropython.org/resources/firmware/ESP32_GENERIC_C3-20230426-v1.20.0.bin',
|
||||
cacheKey: 'micropython-esp32c3-v1.20.0',
|
||||
remote: 'https://micropython.org/resources/firmware/ESP32_GENERIC_C3-20260406-v1.28.0.bin',
|
||||
cacheKey: 'micropython-esp32c3-v1.28.0',
|
||||
fallback: '/firmware/micropython-esp32c3.bin',
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -47,10 +47,10 @@ while True:
|
|||
time.sleep(1)
|
||||
`;
|
||||
|
||||
// NOTE: avoid Pin.toggle() — it was only added to the ESP32 port in
|
||||
// MicroPython v1.21 (Oct 2023). The firmware Velxio ships is v1.20.0
|
||||
// (April 2023), so Pin.toggle() raises AttributeError there.
|
||||
// See https://github.com/davidmonterocrespo24/velxio/issues/122
|
||||
// The shipped ESP32-family MicroPython is v1.28.0 (IDF 5.x drivers — the
|
||||
// same generation the compile pipeline and the JS engines are validated
|
||||
// against), so Pin.toggle() and friends exist now; this seed just stays on
|
||||
// the lowest-common API. History: #122 (v1.20 had no Pin.toggle).
|
||||
const DEFAULT_ESP32_MICROPYTHON_CONTENT = `# MicroPython Blink for ESP32
|
||||
from machine import Pin
|
||||
import time
|
||||
|
|
|
|||
Loading…
Reference in New Issue