Skip to content

Releases: MicroPythonOS/MicroPythonOS

0.11.0

27 May 18:21

Choose a tag to compare

Builtin Apps:

  • About: show system uptime, use FontManager
  • Compile builtin apps to bytecode .mpy files to reduce build size by 60KiB and improve startup performance
  • HowTo app: make import lvgl as lv explicit

Frameworks:

  • AppManager: try .mpy after .py and use import instead of explicit compile
  • AppManager: require explicit import lvgl for clarity
  • FontManager: new framework that provides font listing, TTF support, emoji support
  • InputManager: mark emulate_focus_obj(group,o) as deprecated in favor of lv.group_focus_obj(o)
  • MposKeyboard: add support for typing a few basic emojis
  • SharedPreferences: avoid writing default-only configs at boot and prune empty config dirs/files

OS:

  • Add os.path functionality like in CPython
  • c_mpos/quirc: fix compilation warnings
  • Disable unused OS facilities (FreeRTOS internals, tracing, INFO logging, broken GIF, Pinyin IME, LVGL window, BMP) to reduce build size by 109KiB
  • Simplify focusgroup handling
  • Re-enable UART REPL again BUT add esp.uart_repl(False) functionality to disable/enable it at runtime
  • Format internal storage if mounting fails instead of hanging (even if not empty)

What to do:

  • To update, open the OSUpdate app and click "Update OS"
  • To do a fresh install, use the webinstaller at install.MicroPythonOS.com
  • As the API isn't frozen yet, if an app has an issue after the upgrade, then just update it using the AppStore

Merged pull requests

  • Implement support for Freenove's ESP32-S3 display board by @Rohansi in #122

New Contributors

Full Changelog: 0.10.0...0.11.0

0.10.0

18 May 13:34

Choose a tag to compare

Functionality should be identical, just with the latest lvgl_micropython dependency underneath.

OS:

  • Synchronize with upstream https://github.com/lvgl-micropython/lvgl_micropython 14ad6ce to bring ESP-IDF: 5.4 to 5.5.1 and MicroPython: 1.25 to 1.27
  • Split lvgl_micropython customizations into topic branches for easier rebasing: topic/fonts, topic/lv-conf, topic/platform, topic/error-handling

Full Changelog: 0.9.6...0.10.0

0.9.6

16 May 17:44

Choose a tag to compare

Builtin Apps:

  • About: show correct next update partition instead of always using get_next_update()
  • OSUpdate: restrict OTA update flip-flop target to ota_0/ota_1 instead of all ota_N partitions (via shared partition helper)

Frameworks:

  • Add mpos.partitions.get_next_update_partition() helper that alternates between ota_0 and ota_1 only
  • DownloadManager: add "redact" argument to replace sensitive info with REDACTED in log output
  • SettingActivity: support slider UI for integer settings
  • SettingActivity: show human-readable value instead of internally used option

Board Support:

  • Fri3d 2026: access expander.analog as property instead of function

OS:

  • Disable the repl on hardware uart for esp32s3 targets (USB serial still works)
  • Remove big, rarely used font Montserrat 34, 40 and 48 to reduce build size by 218KiB, while apps can still upscale or load fonts at runtime

Autogenerated Changelog

  • make expander analog method a property again by @bertouttier in #130
  • disable the repl on hardware uart for esp32s3 targets by @bertouttier in #132
  • add usb-device-midi from microptyhon-lib to the image by @bertouttier in #134
  • Add a driver and demo app for the DJ add-on by @bertouttier in #133
  • DownloadManager: add redact_url= kwarg to hide auth-bearing URLs in logs by @bitcoin3us in #136
  • SettingsActivity: render ui_options label instead of raw pref value by @bitcoin3us in #137

Full Changelog: 0.9.5...0.9.6

0.9.5

03 May 11:34

Choose a tag to compare

Builtin Apps:

  • Optimize PNGs to reduce build size by 8KiB

Frameworks:

  • WebServer: tweak webREPL UI and serve gzipped HTML to reduce total build size by 60KiB

Board Support:

  • Fri3d 2026: update CH32 firmware to 1.2.2 release
  • Fri3d 2026: remove workarounds for CH32 firmware 1.2.1

What to do:

  • To update, open the OSUpdate app and click "Update OS"
  • To do a fresh install, use the webinstaller at install.MicroPythonOS.com
  • As the API isn't frozen yet, if an app has an issue after the upgrade, then just update it using the AppStore

Full Changelog: 0.9.4...0.9.5

0.9.4

29 Apr 09:00

Choose a tag to compare

Board Support:

  • Fri3d 2026: add CH32 LCD backlight setting
  • Fri3d 2026: fix virgin CH32 coprocessor firmware installation

OS:

What to do:

  • To update, open the OSUpdate app and click "Update OS"
  • To do a fresh install, use the webinstaller at install.MicroPythonOS.com
  • As the API isn't frozen yet, if an app has an issue after the upgrade, then just update it using the AppStore

Full Changelog: 0.9.3...0.9.4

0.9.3

26 Apr 06:24

Choose a tag to compare

Builtin Apps:

  • AppStore: fallback to .zip file if no .mpk file found in filelist
  • AppStore: fetch new long_description from BadgeHub details API
  • Settings - Wi-Fi: don't print password on serial port

Frameworks:

  • Add new GPSManager framework
  • Add new IRManager framework
  • Add new LoRaManager framework
  • Add new DeviceManager framework
  • Add mpos.ui.change_task_handler() function for improving IR timing accuracy
  • AppearanceManager: fix set_light_mode() and set_primary_color()
  • AppManager: support .mpk/.zip files with compression and a redundant top-level directory
  • AppManager: export 'mpos' global to apps for convenience
  • Camera activity: use QR symbol for QR decoding, tweak fonts
  • LightsManager: allow changing number of LEDs after initialization
  • SettingActivity: add allow_deselect option (default False) to radiobuttons
  • SharedPreferences: don't print potentially sensitive values on serial port
  • WebServer: add basic 'View Screen' functionality to view the device's display remotely

OS:

  • aioREPL: use >>> prompt (for ViperIDE)
  • Drawer menu: reload apps when Launch(er) is (re)started
  • Export 'lv' and 'mpos' globals to aioREPL and apps for convenience
  • Compress largest fonts to reduce build size by ~208KiB
  • Rename font_montserrat_28_compressed to font_montserrat_28 for uniformity
  • LilyGo T-Watch S3 Plus: add support for IR Remote app TX
  • LilyGo T-Watch S3 Plus: add support for UART GPS
  • Fri3d 2024: add support for IR remote app (RX only)
  • Fri3d 2026: add CH32 coprocessor firmware handling (credit @bertouttier)
  • Fri3d 2026: add CH32 indev driver (credit @bertouttier)
  • Fri3d 2026: add calibrated battery voltage measurements using CH32

What to do:

  • To update, open the OSUpdate app and click "Update OS"
  • To do a fresh install, use the webinstaller at install.MicroPythonOS.com
  • As the API isn't frozen yet, if an app has an issue after the upgrade, then just update it using the AppStore

Autogenerated release notes

  • Fix AppearanceManager.set_light_mode / set_primary_color using non-existent prefs.set_string by @bitcoin3us in #120
  • SharedPreferences: don't log full prefs dict by @bitcoin3us in #123
  • Settings → Wi-Fi: redact password from serial/REPL logs by @bitcoin3us in #124
  • SettingActivity: keep exactly one radio option selected by @bitcoin3us in #125
  • add badge 2026 expander indev by @bertouttier in #100

Full Changelog: 0.9.2...0.9.3

0.9.2

15 Apr 09:27

Choose a tag to compare

Builtin Apps:

  • Settings: new Audio subsection to choose default output and input device, for boards with multiple audio devices

Frameworks:

  • Activity: add appFullName property
  • AudioManager: load and apply configured default_output and default_input devices
  • AudioManager: fix final 1-2 seconds of WAV files not being played
  • AudioManager: add support for PDM microphones
  • AudioManager: fix 24 and 32 bits per sample WAV support
  • SensorManager: add BMA423 IMU support
  • TimeZone: set Real Time Clock if present

OS:

  • Fix lvgl_micropython UI hang when lv.event_handler() throws exception from timers or callbacks
  • Fix notification bar hiding after swipe up in Launcher apps
  • Increase default heapsize from 8MB to 16MB on desktop to fix sporadic segfault
  • Fri3d 2026: don't provide unnecessary SCLK/BCLK to CJC4334 DAC
  • LilyGo T-Watch S3 Plus: fix power button sporadically becoming unresponsive
  • LilyGo T-Watch S3 Plus: add battery charge level support
  • LilyGo T-Watch S3 Plus: add IMU accelerometer support so IMU app works
  • LilyGo T-Watch S3 Plus: enable audio input (PDM microphone) and output (I2S speaker)
  • LilyGo T-Watch S3 Plus: enable Real Time Clock to keep time when powered off
  • LilyGo T-Watch S3 Plus: power down/up display and touch screen upon power button press

What to do:

  • To update, open the OSUpdate app and click "Update OS"
  • To do a fresh install, use the webinstaller at install.MicroPythonOS.com
  • As the API isn't frozen yet, if an app has an issue after the upgrade, then just update it using the AppStore

Autogenerated release notes

  • Add automatic WiFi reconnection when connection is lost by @bitcoin3us in #115
  • bugfix "unphone" target in build_mpos.sh by @jedie in #117

Full Changelog: 0.9.1...0.9.2

0.9.1

08 Apr 13:57

Choose a tag to compare

Builtin Apps:

  • AppStore: use BadgeHub.eu filter mpos_api_0 instead of device-specific hardware ID
  • HowTo: add padding
  • Settings: add Number Format setting

Frameworks:

  • Add new NumberFormat framework for decimal and thousands separators
  • DownloadManager: add connection timeout to DownloadManager session.get()

OS:

  • New board support: LilyGo T-HMI
  • New board support: M5Stack Core2
  • LilyGo T-Watch S3 Plus: initialize Power Management Unit at startup
  • LilyGo T-Watch S3 Plus: power button short press for display backlight on/off, long press for power down
  • Add driver for LoRa SX1262 with lvgl_micropython-style (= split Bus/Device) hardware SPI
  • Add drivers for LoRa SX126X with SoftSPI (and default MicroPython hardware SPI)
  • Add esp32-component-rvswd and MicroPython bindings to flash WCH's CH32 microcontrollers
  • Add glyphs to fonts: diacritics 0x7F-0xFF, Bitcoin symbol ₿ 0x20BF, italic satoshi symbol 丯 0x4E2F and regular satoshi symbol 丰 0x4E30
  • Add LVGL symbols to fonts: 0xf002,0xf004,0xf005,0xf00e,0xf010,0xf029,0xf030 for search, heart, star, search-plus, search-minus, qrcode, camera
  • Add LVGL symbols to fonts: 0xf15a,0xf164,0xf165,0xf1e0 for btc (without circle), thumbs-up, thumbs-down, share-alt
  • Add LVGL symbols to fonts: 0xf2ea,0xf379,0xf58f for undo-alt, bitcoin (in circle), headphones-alt
  • Improve handling of 'mpos.main' errors
  • Fix empty black window issue on macOS desktop
  • Fix macOS/unix desktop build with newer Clang (17+)

What to do:

  • To update, open the OSUpdate app and click "Update OS"
  • To do a fresh install, use the webinstaller at install.MicroPythonOS.com
  • As the API isn't frozen yet, if an app has an issue after the upgrade, then just update it using the AppStore

Autogenerated release notes

  • New App: "ESPNowChat" simple chat app between devices by @jedie in #86
  • Add support for LilyGo T-HMI board and initialize display and battery… by @Revers-BR in #90
  • feat: add M5Stack Core2 board support by @imliubo in #91
  • Add international number format setting by @bitcoin3us in #94
  • integrate esp32-component-rvswd and add bindings by @bertouttier in #92
  • Fix DownloadManager hanging on stalled connections by @bitcoin3us in #98
  • Fix run_desktop.sh greedy sed regex eating other JSON keys by @bitcoin3us in #104
  • Fix DownloadManager timeout kwarg compatibility with desktop aiohttp by @bitcoin3us in #107
  • Check and fix app manifest files by @jedie in #105
  • Fix macOS/unix desktop build with newer Clang (17+) by @bitcoin3us in #103
  • Add EditorConfig and cleanup shell scripts by @jedie in #113
  • Add "esp32-small" build target by @jedie in #111
  • Handle "mpos.main" errors, wait and reset by @jedie in #109

New Contributors

Full Changelog: 0.9.0...0.9.1

0.9.0

25 Mar 20:42

Choose a tag to compare

Builtin Apps:

  • About: show netmask separately, make labels focusable
  • AppStore: update BadgeHub.eu URL
  • HowTo: new onboarding app with auto-start handling to explain controls
  • Settings: add sub-groups of setings as separate apps, including WiFi app
  • Settings: add Hotspot sub-group (SSID, password, security)
  • Settings: add WebServer sub-group (autostart, port, password)
  • Launcher: ignore launchers and MPOS settings (except WiFi)

Frameworks:

  • Audio streams: WAV playback/recording improvements (duration/progress, hardware volume control)
  • AudioManager: registry/session model, multi-speaker/mic routing, ADC-based mic (adc_mic)
  • DownloadManager: explicit certificate handling
  • InputManager: pointer detection helpers and board registrations
  • SensorManager: refactor to IMU drivers with magnetometer support and desktop IIO fallback
  • SharedPreferences: fix None handling
  • WebServer: new framework with Linux/macOS fixes and no background thread
  • WifiService: hotspot support, IP address helpers, simplified connect/auto-connect
  • Websocket library: renamed to uaiowebsocket to avoid conflicts

OS:

  • ESP32 boards: bundle WebREPL (not started by default) to offer remote MicroPython shell over the network, accessible through webbrowser - see video demo
  • New board support: LilyGo T-Display-S3 (physical and emulated by QEMU)
  • New board support: LilyGo T-Watch S3 Plus
  • New board support: M5Stack Fire
  • New board support: ODroid Go
  • New board support: unPhone 9
  • Fri3d 2024/2026 updates: display reset support using CH32 microcontroller, communicator/expander drivers
  • ADC microphone C module and tests
  • Build system: switch to static builds for desktop systems to bundle LIBC and fix LIBC version issue
  • Build system: add linux-arm64 and macos-intel GitHub workflows to support more precompiled binaries
  • Add FreeRTOS module for low-level ESP32 functions
  • Add --optimize-size build flag to reduce internal flash storage usage

What to do:

  • To update, open the OSUpdate app and click "Update OS"
  • To do a fresh install, use the webinstaller at install.MicroPythonOS.com
  • As the API isn't frozen yet, if an app has an issue after the upgrade, then just update it using the AppStore

Autogenerated release notes

New Contributors

Full diff: 0.8.0...0.9.0

0.8.0

12 Feb 05:50

Choose a tag to compare

Builtin Apps:

  • About: use logger framework
  • AppStore: mark BadgeHub backend as 'beta'
  • Launcher: improve layout on different screen width sizes
  • OSUpdate: remove 'force update' checkbox not in favor of varying button labels

Frameworks:

  • SDCard: add support for SDIO/SD/MMC mode
  • CameraManager and CameraActivity: work fully camera-agnostic

OS:

What to do:

  • To update, open the OSUpdate app and click "Update OS"
  • To do a fresh install, use the webinstaller at install.MicroPythonOS.com