Releases: MicroPythonOS/MicroPythonOS
Releases · MicroPythonOS/MicroPythonOS
0.11.0
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
New Contributors
Full Changelog: 0.10.0...0.11.0
0.10.0
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
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
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
Board Support:
- Fri3d 2026: add CH32 LCD backlight setting
- Fri3d 2026: fix virgin CH32 coprocessor firmware installation
OS:
- Patch esp-idf for to workaround sporadic SD card slowness (espressif/esp-idf/issues/16909)
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
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_deselectoption (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
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
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
- @Revers-BR made their first contribution in #90
- @imliubo made their first contribution in #91
Full Changelog: 0.9.0...0.9.1
0.9.0
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
- Use a dot-whitelist by @jedie in #36
- Support ODROID-GO by @jedie in #35
- Add initial support for M5Stack-Fire board by @ancebfer in #32
- Clear battery cache in ShowBattery app by @jedie in #37
- Add simple calendar application by @pavelmachek in #38
- Enhance ShowBattery App by @jedie in #39
- Updates for ODROID-GO by @jedie in #40
- Update board/m5stack_fire.py by @jedie in #43
- WIP: New app: "Scan Bluetooth" by @jedie in #58
- Add MPU6886 driver (tested with M5Stack FIRE) by @jedie in #56
- Clean up existing install/symlink before extracting .mpk by @bitcoin3us in #55
- Fix EEXIST errors in zipfile.py during extraction by @bitcoin3us in #54
- Odroid-Go: Unmute+Mute buzzer before/after Playback by @jedie in #52
- imu: Allow access to iio on Linux by @pavelmachek in #45
- waveshare_esp32_s3_touch_lcd_2: Fix soft reset by @jedie in #68
- Fix MPU6886 X-Axis by @jedie in #67
- columns: simple falling-blocks game by @pavelmachek in #63
- weather: start simple weather application by @pavelmachek in #62
- compass: Add an application for magnetometer / accelerometer debugging by @pavelmachek in #61
- magn: Start magnetometer support by @pavelmachek in #60
- Enhance ScanBluetooth app by @jedie in #72
- scan_bluetooth: Display "last seen in sec." and fix timeout by @jedie in #73
- cellular: simple cellular-network example by @pavelmachek in #80
- floodit: simple game by @pavelmachek in #79
- navstar: Simple navigation application by @pavelmachek in #77
- gyro: add gyroscope test/display application by @pavelmachek in #76
- weather: add forecasts, switch to download manager by @pavelmachek in #75
- Add support for unPhone 9 by @jedie in #74
- add a driver for the 2024 and 2026 communicator by @bertouttier in #82
- add fri3d badge 2026 expander driver by @bertouttier in #81
New Contributors
- @jedie made their first contribution in #36
- @ancebfer made their first contribution in #32
- @bitcoin3us made their first contribution in #55
- @bertouttier made their first contribution in #82
Full diff: 0.8.0...0.9.0
0.8.0
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:
- Add board support: Makerfabs MaTouch ESP32-S3 SPI IPS 2.8' with Camera OV3660
- Scale MicroPythonOS boot logo down if necessary
- Don't show battery icon if battery is not supported
- Move logging.py to subdirectory
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