Repository navigation
Every board now runs on omnipython-lvgl 665dec5, the RP2350 included, and every board has been tested on hardware with this firmware.
| Board | File | State |
|---|---|---|
| STM32H7_CORE V1.0 + IPS 1024x600 | STM32H7_CORE-V10-v0.1.6.dfu, .hex |
tested on hardware: board checks, SD card, perf; on c34fbee: 15 min soak, touch |
| STM32H7_CORE V1.3 + IPS 1024x600 | STM32H7_CORE-V13-v0.1.6.dfu, .hex |
tested on hardware: board checks, SD card, perf; on c34fbee: 15 min soak, touch 5/5, the 10 examples |
| DEV190806042 + IPS 1024x600 | DEV190806042-v0.1.6.dfu, .hex |
tested on hardware: board checks, perf; on c34fbee: 15 min soak, touch 5/5, the 10 examples |
| FK743M5-XIH6 + IPS 1024x600 | FK743M5-XIH6-v0.1.6.dfu, .hex |
tested on hardware: board checks, SD card, perf; on c34fbee: 15 min soak, touch 5/5, the 10 examples |
| Waveshare RP2350-Touch-LCD-4 | WAVESHARE_RP2350_TOUCH_LCD_4-v0.1.6.uf2 |
tested on hardware: tile CRCs, panel, perf; on c34fbee: 1 h soak, touch, the 10 examples |
| ESP32-4848S040 | ESP32_4848S040-v0.1.6.bin |
tested on hardware: panel, perf; on c34fbee: pools, 15 min soak, the 10 examples |
The checks before "on c34fbee" ran on these very files (2026-11-11). The rest ran the day before on the same sources with omnipython-lvgl c34fbee; the only change since is its #19, the LVGL assert handler, which every board was re-checked for.
What changes
- SD card on the STM32H743 boards. It never worked: the SDMMC kernel clock was 480 MHz, so the card got 960 kHz at init and 120 MHz in transfers. Now 240 kHz and 30 MHz. Tested on the V1.0 (SDMMC2), V1.3 and FK743M5-XIH6 (SDMMC1): mounted at boot as
/sd, reads of 8.7-12.5 MB/s. SPI1-3 share that clock;machine.SPIreads the real frequency. - UART flasher (
scripts/stm32_uart_flash.py) fixed for images over 1 MB, which every STM32 image since v0.1.5 is: the script of v0.1.5 stops withcmd 31: timeoutafter erasing the second flash bank. Use the script of this release. - The RP2350 moves to omnipython-lvgl from the archived lvgl-micropython, with LVGL's memory pools: a redraw costs the same whatever the state of the heap (26.5 ms with two buffers, against up to 43.8 ms without), for about 26 KB of heap. Same image as before (tile CRCs), 1 h soak at 57.7 fps.
- omnipython-lvgl 665dec5: an LVGL assert raises
RuntimeError: LVGL assert failed at lv_display.c:614and LVGL keeps running; images 46-50 KB smaller than v0.1.5. - ESP32-4848S040: 64 KB more free heap than v0.1.5. With code run from PSRAM, ESP-IDF keeps whole 64 KB pages of PSRAM for the code and the constants; v0.1.5's constants crossed into one more page (not 128 KB as the v0.1.5 notes said, and the cause is now known). 665dec5 brings them back.
Flashing
- STM32 boards over USB:
dfu-util -a 0 -d 0483:df11 -D <board>-v0.1.6.dfu, with the board in DFU mode:machine.bootloader()from v0.1.5 on, or BOOT0 held while pressing RESET. Seedocs/flash-dfu.md. - STM32 boards over UART1:
scripts/stm32_uart_flash.py flash <board>-v0.1.6.hex --verify, with the script of this release (seedocs/stm32h743.md). - RP2350-Touch-LCD-4:
machine.bootloader()(or hold BOOT and press RESET), then copy the.uf2to the RP2350 drive. - ESP32-4848S040, from v0.1.0 or later, keeping your files:
esptool.py --chip esp32s3 -p <port> -b 460800 write_flash 0x0 ESP32_4848S040-v0.1.6.bin. From other firmware,erase_flashfirst (it erases everything on the board).
Good to know
- FAT file names that are not UTF-8 (written by some PCs) make
os.listdir()withstrpaths raiseUnicodeError; withbytespaths (os.listdir(b"/sd")) they list fine. That is MicroPython's FAT driver.
Sources: MicroPython 1.29.0, omnipython-lvgl 665dec5, ESP-IDF 5.5.2. Measurements and logs: docs/stm32h743.md, docs/rp2350-touch-lcd4.md, docs/esp32-4848s040.md, docs/log/. Checksums: SHA256SUMS.