@rojer rojer released this Jul 25, 2018 · 9 commits to master since this release

Assets 2

New features:

  • Major improvements to STM32 port: OTA support, boot loader and filesystem on external storage.
  • pwm: Add functions to control an RGB LED
  • azure: Add mgos_azure_is_connected
  • azure: A utility to retrieve Device-to-Cloud messages
  • mos: Add no_implicit_init_deps
  • mos support for LFS (littlefs) https://github.com/ARMmbed/littlefs
  • Core refactoring: break out VFS and OTA into libs
  • mos: Add mos ota - a way to push OTA update via RPC. As usual, any suitable RPC channel can be used - UART, WS, MQTT, etc. Argument is the fw filename. Requires OTA.Commit within 5 minutes by default.
  • Winbond W25XXX SPI NAND flash driver
  • vfs-dev-part: A VFS device that is a part of another VFS device
  • Add VFS device registration by name
  • fstab: Storage device and filesystem init table
  • vfs-dev-encr: A VFS device that encrypts reads and writes
  • Add skeleton for the provision library
  • mqtt: Add backup server support. See https://github.com/mongoose-os-libs/mqtt#reconnect-behavior-and-backup-server

Bug fixes and minor changes:

  • Reboot on successful OTA.End
  • mg_lwip: Fix race during clean conenction teardown
  • Update ESP32 SDK to espressif/esp-idf@9a55b42
    bt/esp32: Adverising can coexist with scan now
    mg_file_upload_handler: Support multiple files
  • Add missing CC3220 sub-header to mongoose.h
  • mos: Do not mount non-existent paths
  • mos: Make --no-libs-update apply to mongoose-os as well
  • mg: Fix pipelining issue with multipart upload
  • mg: Fix a bug in mg_mgr_init_opt with opts.num_ifaces
  • Increase early WDT timeout to 30 seconds
  • STM32 FS refactoring
  • Refactor VFS device interface to return error code
  • Integrate #429
  • Add mg_strstrip: trims whitespace at the ends of s
  • mgos_sys_config_parse_sub: parse part of config
  • SPI: Allow specifying SPI settings in device config
  • vfs-dev-ram: Allow using existing memory as backing store
  • Make frozen tolerate 0x.. numbers
  • mos: Increase timeout on large digest calculations
  • Fix build with CS_ENABLE_STDIO=0
  • vfs-fs-spiffs: Remove the "force" flag
  • Add mgos_gpio_str; support for STM32 DISCO-F746NG
  • vfs-dev-spi-flash: Send Block Protection Unlock for Micorchip chips
  • Fix CD handling on Mac
  • Fix shadow reporting
  • Add VFS device locking, Dev.* RPC methods.
  • ESP32: Add default system event handler
  • mos: Use --baud-rate and --hw-flow-control for RPC
  • Add long press reset logic

@rojer rojer released this Jun 18, 2018 · 46 commits to master since this release

Assets 2
  • A lot of work on STM32 (but not ready yet)
  • mos: Reduce default ESP flashing baud rate. This will make flashing slower by default but hopefully more reliable. use --esp-baud-rate to set higher.
  • mos: Fix path mapping in debug-core-dump
  • Add a knob for enabling autocommit on ota-update (shadow.autocommit)
  • Update the C UART example to show how to process input line by line.
  • Introduce "params" as alias for "args" in RPC to make our RPC
  • Move docs to cesanta/mongoose-os-docs
  • WiFi: Reduce rate of reconnects when not connected
  • vfs-dev-spi-flash: SFDP 1.6 and DPD support
  • Add Bearer auth for WS RPC channel
  • Move Docker images to docker.io/mgos
  • wifi: Fix crash in ent auth when user is not set
  • Add FS.Rename
  • mos: Support globs in init_deps entries
  • rpc: Fix memory leak in RPC auth over HTTP
  • RPC UART: One frame per line
  • rpc-uart: Add a simple tool to make RPC requests
  • Add OTA.{Begin,Write,End}

@rojer rojer released this May 14, 2018 · 67 commits to master since this release

Assets 10

New features

  • IBM Watson IoT Platform support: mos watson-iot-setup, watson library, RPC channel support (mos call --port watson://...). See library README for details.
  • mos debug-core-dump, automatic core dump analysis from mos console: cesanta/mos-tool@9991c58
  • Multiple WiFi station configurations (see here)
  • Implement JS apply()

Fixes and minor changes

  • Fix timezone support on ESP8266
  • CC3220: Speed up first boot after flashing
  • CC3220: Fix wifi scan
  • CC32xx: Support WiFi channels 12-14
  • mos: Increase default RPC timeout to 20s
  • mos: Don't fail GCP setup if rpc-mqtt is not there
  • Fix a bug in mgos_uart_config_set_tx_params
  • ESP32 IDF update to espressif/esp-idf@22fbcd2
  • Fix a leak in mgos_azure_send_d2c_msgf
  • WiFi: Fixed WiFi reconnect timeout handling
  • rpc-service-wifi: Add BSSID to Wifi.Scan results, change result to array
  • dns-sd: Fix name comparison
  • mjs: Allow null as char and void pointers in FFI
  • Fix issues with JS SPI bindings
  • Add shadow.ota_enable knob, per AWS request
  • Improve OTA progress reporting
  • ESP32: Disable WiFi power saving for now
  • Add timeout field to OTA.Update
  • Update ESP8266 SDK to fix WiFi regression

@rojer rojer released this Apr 18, 2018 · 84 commits to master since this release

Assets 2

New features

  • Azure IoT Hub support: easy onboarding (mos azure-iot-setup) and a library Cloud-to-Device and Device-to-Cloud messaging, Device Twin shadow support, Direct Method invocation and RPC over Direct Method (including mos call support).
  • Multiple WiFi STA config support (currently 3). mOS will cycle through the list until successful connection. Last successful config index will be saved to make connection faster after reboot.

Important API changes

  • BREAKING: Change shadow API to return state object. See here for details.

Fixes and minor changes

  • mjs: Add String.indexOf
  • mjs: Add s2o(), a way to convert structs to objs (see here)
  • Add mg_url_encode_opt() - a parametrized version of mg_url_encode()
  • Add json_{sprintf,vsprintf}()
  • Add mgos_mqtt_pubf() - a helper to pub JSON messages
  • CC32XX SSL/TLS refactoring. Make CC3220 use mbedTLS for TLS.
  • CC3220 SDK update (to
  • DNS-SD: Add an option to hide info from adv, add mgos_dns_sd_advertise(), mgos_dns_sd_goodbye()
  • Fix mg_http_parse_header(): treat ";" as a delimiter.
  • Add shadow.enable knob to control the shadow lib
  • MQTT: Only PUBACK if the message's QoS is > 0
  • mos: Use --timeout for config and file ops
  • Add ability to remove event handlers
  • Add M5stack demo app.

@rojer rojer released this Apr 4, 2018 · 102 commits to master since this release

Assets 2

License change

Mongoose OS 2.0 introduces license change:

  • Mongoose OS Community Edition - Apache License Version 2.0
  • Mongoose OS Enterprise Edition - Commercial License

See Licensing section for details.

Technical changes

  • ESP32: Add ability to reference partitions in fw manifest
  • Fix buffer size passed to inet_ntop()
  • vfs-dev-spi-flash: Fix handling of SFDP PT0 versions > 1.0
  • Fix mg_socketpair for lwip + UDP
  • Fix button debouncing logic
  • Add clock mode selection knob for ESP32
  • ESP32: Add half-duplex UART mode
  • Resurrect MGOS_UPD_EV_BEGIN, add MGOS_OTA_STATE_BEGIN, allow rejecting updates
  • Fix invoking mgos_clear_timer() with an invalid ID.
  • Add mgos_config_get("key") / _set("key", "value"): An easy way to get stringified config value and set value of a config key from string.
  • Fix mongoose_schedule_poll on CC32xx
  • Move MDNS to DNS-SD lib, fix init, add example app
  • Only send config diff during mos config-set
  • ESP32 SDK update, to espressif/esp-idf@8478823. Also includes fix for heap free space fragmentation.
  • Optimize UART TX path on ESP
  • Update ESP build images - updated ourTLS (rebased to mbedtls-2.8.0).
  • Add SNTP as a dependency for GCP
  • mos: Do not generate init code for libs with no sources
  • Remove mongoose.{c,h} from the mongoose-os repo; mongoose library should be used instead.
  • ESP8266 SDK update (2.2.1, upstream commit 6f57c05)
  • Fix an edge case in multipart HTTP upload parsing
  • Mongoose net_if and ssl_if refactoring

@dimonomid dimonomid released this Feb 8, 2018 · 154 commits to master since this release

Assets 2


  • Allow use of GPIO9 and 10 on ESP8285
  • Allow up to 10Mbit UART speeds on ESP32
  • Fix OOB access in mg_match_prefix_n().
  • Show stringified event number in debug
  • Make AWS init less noisy
  • Implement the Bluetooth current time service (https://github.com/mongoose-os-libs/bt-service-time)
  • Add mgos_dash_callf_noreply() API to dash library
  • Make mgos_rlock_* functions public
  • Fix make debug_coredump for esp32 and esp8266


  • Fix stack underflow on an empty block
  • fix a bug which could cause string data corruption in certain circumstances
  • Fix a few modulo-related issues
  • Handle the wrong return expression properly
  • Fix handling of invalid JSON strings
  • Fix JSON parsing which leads to string buffer reallocaction

Mongoose Web Server:

  • Fix socket leak when there are too many open file descriptors
  • Fix publish-subscribe example
  • Fix mg_parse_multipart in case of malformed request
  • Websocket: Respond to Ping with Pong
  • Websocket: Properly close a connection with Close frame (in response to a client's close and when protocol failure is detected)
  • Websocket: Fix support of fragmented messages
  • Websocket: Add support for control frames interjected in the middle of a fragmented message
  • Digest authentication: Fix nonce validity check (expired nonce or nonce from the future did not cause the the check to fail)
  • Digest authentication: Fix nonce request value; it worked before because nonce validity check was broken as well
  • Digest authentication: Add nonce argument to mg_http_create_digest_auth_header(): clients should use the value received from the server's authentication request.
  • Fail if passed a NULL handler to mg_bind or mg_bind_opt.
  • Publish sources and tests
  • Remove tunneling functionality which was used by nobody
  • Add UDP client example
  • Don't use user_data in mqtt server
  • Deprecate mg_http_parse_header() and implement mg_http_parse_header2() instead, which allocates a new buffer if the client-provided one is not large enough (similarly to asprintf).
  • Fix limitations of header value lengths, e.g. when parsing authentication headers such as nonce, etc.

mos tool:

@dimonomid dimonomid released this Jan 25, 2018 · 193 commits to master since this release

Assets 2

Mongoose OS:

  • Add GPIO open-drain output mode
  • Rewrite bitbang I2C to use open-drain output, make frequency adjustable
  • CC3200: Fix OTA regression, which caused OTA to fail
  • CC3220: Update SDK to
  • Fix bluetooth support: subscribing to notifications resulted in a
  • Fix emitting device config; the bug doesn't cause problems as
    long as config structure doesn't contain empty objects.
  • Fix TCP RX path regression in SSL mode
  • Close undrained and stuck http connections
  • Replace esp_bd_addr_t with generic mgos_bt_addr
  • Make BT UUID utility functions platform-independent
  • Refactor neopixel to a separate lib and add C API, add a C example app (example-neopixel-c)
  • Do not put sys config schema defs on the device FS by default
  • Add a simple heap-backed VFS device, mostly for testing

Mos tool:

  • Default location for all modules, including mongoose-os, is now "deps", so one could place under deps all libs, mongoose-os (and maybe mjs_module), and have a hermetic reproducible build.
  • Do shallow clone for the mongoose-os repo