Skip to main content

impOS Release 40

impOS Version Naming

Electric Imp versions impOS™ releases as follows: odd-numbered major versions are pre-releases and even-numbered major versions are production-quality releases. As such, impOS 40 builds heavily on impOS 39, which was not released publicly. For information on changes and bug-fixes implemented in the various minor releases of impOS 39, please see the relevant release notes. This document will focus on changes made following the release of impOS 40, and upon new features introduced in impOS 39 but made public for the first time with impOS 40.

Versions

The current release is 40.6 (see Release Notes and Known Issues).

IMPORTANT BREAKING CHANGE Please see imp.net.info() for details of a breaking change between impOS 39 and 40 which will affect all impC001 users whose existing code makes use of the cellular data returned by this imp API method.

New Features and Improvements: Cellular imps

The primary role of impOS 40 is to fully support cellular imps such as the impC001.

In earlier releases, a number of imp API objects were not supported on cellular imps. Many of these ‘missing’ objects become available in impOS 40. This release contains the following imp API methods that had not been implemented in earlier versions of impOS for cellular imps:

New Features and Improvements: Other imps

Accelerated WiFi Operations

  • Lower Squirrel latency while connecting to hidden WiFi networks.
  • Faster reconnection times when the imp is at the limits of WiFi range (by caching multiple TLS sessions, rather than just one).
  • New imp API method imp.net.latchwifipower() helps reduce Squirrel latency during reconnects.
  • Reduce WiFi scan times during fail-retry.
  • Lower Squirrel latency when disabling WiFi (by only disabling DHCP when necessary).
  • Lower Squirrel latency during firmware recovery.
  • Better WiFi performance (by allowing normal-MTU-size packets on WiFi; was previously capped lower).

Bluetooth LE Enhancements

  • The Bluetooth UART runs faster than before and recovers more quickly from underruns.
  • impOS captures more advertisements in busy conditions in order to find target advertisements faster.
  • Lower Squirrel latency during Bluetooth advertisement scans.
  • The imp API method bluetooth.open() no longer fails if the chosen UART is already configured.

Other Improvements

  • Improvement connection state reporting: the imp is not now considered to be connected until the server has responded.
  • Add a new wake reason, WAKEREASON_POWER_RESTORED, triggered when waking from VBAT mode.
  • Updated DNS resolution code.

Bug Fixes

  • Exceptions raised by imp API methods and Squirrel default delegates (eg. string.tointeger()) report the correct line attribution.
  • Starting the fixed-frequency DAC (on a compatible imp) that has been configured with exactly two buffers no longer triggers an underrun.
  • Reduce impOS update installation latency in various circumstances.
  • Prevent crashes when doing imp.scanwifinetworks() while simultaneously attempting to connect to a now-absent access point.
  • Ensure that factory test shows green (or red) LED results, even when it takes over 60 seconds to run.
  • Better sequencing of LED patterns when BlinkUp fails and needs to be retried.
  • Better handling of 32-byte WiFi SSIDs.

New impOS Methods

Updated impOS Methods

Release Notes

40.6

  • Bug Fixes
    • Fix memory errors when using far too many local variables in a Squirrel function

40.5

  • Improvements
    • Enable escrow customers to use their own OUI (MAC address prefix).

40.4

  • Bug Fixes
    • Fix memory errors experienced when using acall() in Squirrel: cap array length at 10, like in the agent.
    • imp-to-server messages no longer cause long waits even when the connection is known to be down.
    • impC001: fix occasional crashes when using USB (eg. for cell-modem).

40.3

  • Bug Fixes
    • impC001: back-port LwIP fix for PPP peers which send IPCP NAKs while waiting for an IP address.

40.2

  • Bug Fixes
    • impC001: fix for cell networks that actively deny registration on 2G while allowing it on 3G or 4G.

40.1

  • Bug Fixes
    • Apply upstream Squirrel fix for generator functions losing local variables.
    • imp005: fix issues with factory SPI image scripts for escrow customers.

40.0

Initial release

  • Improvements
    • impC001:
      • Move operator selection out of SIM wait state.
      • Increase timeout for operator selection (roaming) commands to 180s.
    • imp002 and up: No longer cache the device ID.
  • Bug Fixes
    • Fix NVRAM corruptions if VBAT levels impede saving of data.

Please see the 39 release notes for details of earlier changes.

Known Issues

IMPORTANT BREAKING CHANGE Please see imp.net.info() for details of a breaking change between impOS 39 and 40 which will affect all impC001 users whose existing code makes use of the cellular data returned by this imp API method.

There are no other known impOS 40-specific issues at this time. Please see the main Known Issues page for broader issues that may affect this release.