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.14 (see Release Notes and Known Issues).

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.14

  • Bug Fixes
    • All imps:
      • Take upstream Squirrel fix for potential crashes in array.sort().

40.13

  • This release contains no customer-visible changes.

40.12

  • Bug Fixes
    • All imps:
      • Improve stability when the imp is low on available memory by discarding invalid traffic earlier in the receive chain. Note This primarily affects devices connected to Google WiFi routers.

40.11

  • Bug Fixes
    • All imps:
      • Prevent TLS resumption being attempted with stale or invalid session data.
      • Fix a rare scheduler issue causing missed timers.

40.10

  • Features
    • imp005
      • Attempt to reduce triggering of UART flow-control in between bytes on uart0.
  • Bug Fixes
    • imp004:
      • Apply upstream security fix to Bluetooth stack.

40.9

  • Bug Fixes
    • impC001:
      • Support modems which have ‘lost their MIDlets’.

40.8

  • Features
    • All imps:
      • Enable escrow customers to use their own OUI (MAC address prefix) in addition to ours.
  • Bug Fixes
    • All imps:
      • Fix rare scheduler issue that could lead to watchdogs (regression in 39.3).
    • impC001:
      • Fix re-enabling of blink-up once disabled.

40.7

  • Bug Fixes
    • All imps:
      • Fix potential crashes when calling Squirrel metamethods directly
    • imp002-004m, impC001:
      • Allow downgrades from 40.7 to 39.29 or earlier without manual power-cycling.
    • impC001:

40.6

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

40.5

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

40.4

  • Bug Fixes
    • All imps:
      • 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
    • All imps:
      • 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
    • All imps:
      • 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.