Skip to main content

impOS Release 41 (Internal Development Release)

Note impOS™ 41 has been solely made available internally and to select early testers. As such, most developers and customers will not receive it except in its public release form, impOS 42. As such, all other Electric Imp documentation will refer only to impOS 42 when discussing this release.

Changes apply to all imps unless stated otherwise.

Versions

The current release is 41.45.

Bug Fixes and Changes

41.45

  • Bug Fixes
    • All imps:
      • Fix further minor MNIF regressions caused by 41.43.
      • Increase default server.connect() timeout for cellular connections.
      • Fix SIM_ERROR issues being incorrectly reported as NO_WIFI.
      • Flush DNS cache completely when restarting network.
      • Stop attempting to supply IPv4 info for cell interfaces (regression in 41.38).

41.44

  • Bug Fixes
    • All imps:
      • Take upstream Squirrel fix for potential crashes in array.sort().
      • Fix missing callback when interface link is lost (regression in 41.43).
    • imp006:
      • Fix missing BLE firmware in ‘cloudification’ SPI images.
      • Ensure failed BLE startup doesn’t leave UART open.

41.43

  • Features
    • imp006:
      • Revert 41.42 change; keep startup times short by only resetting band selection when needed.
  • Bug fixes
    • All imps:
      • Fix cases of local-networking being disabled because the server connection is lost.

41.42

  • Experimental
    • imp006:
      • Temporarily override band selection during modem startup, to see if it reduces startup times.

41.41

  • Features
    • All imps:
      • Reduce memory usage (and thus risk of out-of-memory restarts) during packet-flood conditions.
    • imp001-004m, impC001:
      • Improve upgrade performance (MTU fix from 39.23 was missing from upgrader).
    • imp006
      • Don’t fail over from cellular to WiFi if there are no WiFi credentials stored.
  • Bug fixes
    • All imps:
      • Fix inadvertent (but believed to be unexploitable) buffer-overrun in HTTP header parsing during upgrades.
    • imp001-004m, imp006, impC001:
      • Fix long-standing but rare spurious restarts at 232 microseconds.
    • imp006
      • Fix occasional modem startup failures by reordering initialization sequence.

41.40

  • Features
    • imp005:
      • Support Squirrel bytecode up to 768Kbytes in size, up from 512Kbytes in 41.20.
    • imp006/impC001:
      • Allow for per-telco (per-SIM-owner) modem setup commands.
      • Support NB-IoT SIMs.
  • Bug fixes
    • All imps:
      • Override Squirrel’s network choices on rescue-pin boots only, not all cold-boots.
      • Fix long-standing potential crash on startup (bug found by inspection, no symptoms reported).
      • Fix potential crash (or confusing, “can't-happen” Squirrel errors) after mid-message network outage.

41.39

  • Features
    • All imps:
      • Reduce memory usage (and thus risk of out-of-memory restarts) during packet-flood conditions.
  • Bug fixes
    • impC001:
      • Recover from modem PPP unexpectedly stopping working. Mostly affects impC001-US.

41.38

  • Features
    • All imps:
      • Remain responsive to impCentral build-and-run commands even immediately after a Squirrel error.
  • Bug fixes
    • imp006:
      • Fix the use of pin V as a wakeup pin: an imp would previously not wake if pin V had been high while it was going to sleep.

41.37

  • Features
    • imp006, impC001:
      • If a PPP peer offers a bogus DNS server IP address, ie. 0.0.0.0, use a sensible default instead.

41.36

  • Features
    • imp006, impC001:
      • Use UDP DNS lookup, not ICMP ping, to check IP connectivity.

41.35

  • Features
    • imp006, impC001:
      • Fix an ICCID determination issue which could prevent connection (regression in 41.34).

41.34

  • Features
    • All imps:
      • Set status LED to constant red when the imp fails to start (then reboot as before).
      • Improve idle-state average power consumption (most noticeable on imp006).
    • imp004m, imp006, impC001:
      • Fixes applied to the crystal drive strength change made in 41.31.
    • imp006, impC001:
      • Allow cellular APN to be selected according to ICCID as an alternative to IMSI.
  • Bug fixes
    • imp006:
      • Fix crashes when trying to use Bluetooth but no module is present.
      • Fix further crashes caused by watchdog reboots triggered by an unresponsive modem.

41.33

  • This is a release-process update with no impROM changes.

41.32

  • Features
  • Bug Fixes
    • imp006:
      • Attempt to fix an issue on some breakout boards where the modem starts in USB test mode rather than modem mode.

41.31

  • Features
    • imp004m, imp006, impC001:
      • Increase crystal drive strength to permit a wider choice of 32kHz crystals.
    • imp006:
      • Clear list of “forbidden” cell networks on each boot, as per impC001.
    • impC001:
      • Support Bluetooth via external Murata/Cypress 1MW module.
      • Re-enable RDP2 chip-level code protection using new code which avoids a silicon erratum.

41.30

  • Bug Fixes
    • All imps:
      • Make less aggressive MNIF’s fail over to Automatic Mode when joining a network fails.
    • imp006:
      • Fix Bluetooth starting while WiFi is disabled.

41.29

  • Features
    • All imps:
      • Add new API method, hardware.pin.disable(), which can be used to return pins to a lower-power state than provided by DIGITAL_IN.
    • imp006, impC001:
      • Increase available Squirrel bytecode space from 256KB to 512KB.
  • Bug Fixes
    • imp006:
      • Ensure an unresponsive modem is restarted and doesn’t cause a watchdog reboot.

41.28

  • Features
    • imp006:
      • hardware.spiflash now works on the imp006 as it does on other imps.
      • Bluetooth LE modem firmware is now built in so does not need to be supplied by application Squirrel. Note This is an API change on imp006 only.
  • Bug Fixes
    • imp001-004m, imp006, impC001:
      • Fix watchdog reboots under heavy UART load (regression in 41.27).

41.27

  • Features
    • imp006:
      • Make Bluetooth UART buffer overruns less likely.
  • Bug Fixes
    • All imps:
      • Fix incorrect times in TIMING_ENABLED UARTs when the FIFO is full.
    • imp006:
      • Stop WiFi connections being dropped after cellular connects.
    • imp004m:
      • Fix issues occurring if an unnecessary TIMING_ENABLED UART is used for Bluetooth.

41.26

  • Features
  • Bug Fixes
    • imp006:
      • Only send IMEI and IMSI values to the server when actually connected via cellular.
    • All imps:
      • Ensure that clearing their configuration sends imps back to the welcome server (clearing any stored server list).

41.25

41.24

  • Features
    • imp006:
      • Force-reset the cell modem when it fails to turn on (or off).
  • Bug Fixes
    • imp006:
      • Fix failover from WiFi to cellular.
    • All imps:
      • Attempt to fix starvation when two threads repeatedly contend for a mutex

41.23

  • Features
    • imp006:
      • Support cell-modem and WiFi where both interfaces are fitted.
  • Bug Fixes
    • All imps:
      • Prevent TLS resumption being attempted with stale or invalid session data.
      • Fix a rare scheduler issue causing missed timers.

41.22

  • Features
    • imp005:
      • Attempt to reduce triggering of UART flow-control in between bytes on hardware.uart0.
    • imp006:
      • Support designs using WIFIBLE_POWER_EN (on PG3).
      • Support Macronix SPI flash.
      • Add hardware.i2cJK support (other I²C buses were added in 41.17).
      • Add hardware.spiXTUVW support (other SPIs were added in 41.18).
  • Bug Fixes
    • imp006/impC001:
      • Fix “fallback” SPI support for unknown chip IDs (regression in 41.21).

41.21

  • Features
    • imp005:
      • Improve Squirrel reload time for small programs (regression in 41.20).
    • imp006:
      • Enable customer factory flow using uncommitted initial load.
  • Bug Fixes
    • imp004m:
      • Apply upstream security fix (addresses potential MITM attacks) to Bluetooth stacks.

41.20

  • Features
    • imp005:
      • Support Squirrel bytecode up to 512KB in size, up from 256KB.
    • imp006:
      • Add hardware.dfsdm digital microphone input support (on pins P and Q).
  • Bug Fixes
    • imp005:
      • Fix ignored or corrupted BlinkUp when it takes place while new Squirrel is being downloaded.
    • imp006:
      • Ensure factory-fresh cell-modems work out of the box.
      • Fix crashes related to second SRAM bank (regression in 41.18).

41.19

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

41.18

  • Features
    • imp006:
      • Add hardware.spiEFGH, hardware.spiXABCD and hardware.spiXPQRS (hardware.spiXTUVW coming in a later release).
      • Reduce current consumption in sleep.
      • Add support for CYW43455 WiFi chip (with 5GHz support), as an alternative to 43438.
      • Add support for second SRAM bank: total now 320KB, up from 256KB.
  • Bug Fixes
    • All imps:
      • Fix rare scheduler issue that could lead to watchdogs (regression in 39.3).

41.17

  • Features
    • imp006:
      • Add hardware.i2cLM and hardware.i2cTU (hardware.i2cJK support coming in a later release).

41.16

  • Features
    • Speed up factory cloudification by eliminating unnecessary reconnection.
    • imp001-006:
      • New Cypress WiFi SDK imported from upstream.
    • imp006:
      • Support updated hardware design for power control circuitry.
    • impC001:
      • New upgrade scheme to work around chip errata which made existing scheme unworkable.
    • imp006/impC001:
  • Bug Fixes
    • imp006:
      • Improve handing of modem power-up sequence.

41.15

  • No external-facing changes in this release.

41.14

  • Bug Fixes
    • imp006:
      • Fix production-signing process upgrade files.

41.13

  • Features
    • All imps:
      • Remove the prohibition on disabling BlinkUp for 60 seconds after boot.
      • Enable escrow customers to use their own OUI (MAC address prefix) in addition to Electric Imp’s.
  • Bug Fixes
    • All imps:
      • Fix potential crashes when calling Squirrel metamethods directly.
      • Fix regexp capture bug reported on forums.
      • Ensure that falling back to MNIF automatic mode do not clear the user's manual-mode configuration.
      • Ensure that multiple callers of imp.net.open() can each set their own callback.
    • impC001:
      • Fix BlinkUp re-enable after disable.
      • Fix potential crashes when using external SPI flash.

41.12

  • Features
    • All imps:
      • Return error codes (rather than throw an exception) when udpsocket.send() has connectivity problems.

41.11

  • Bug Fixes
    • imp006:
      • Fix cloudification SPI images.
    • imp006/impC001:
      • Increase drive-strength of SPI flash interface pins (helps imp006 boot at low voltages).

41.10

  • Bug Fixes
    • All imps:
      • Fix crashes caused by poor networking conditions (regression in 41.2).

41.9

  • Features
    • imp006:
      • Build cloudification SPI image for imp006 with cell-modem.
  • Bug Fixes
    • All imps:
      • Fix memory errors when using more than 255 local variables in a Squirrel function.

41.8

  • Features
    • All imps:
      • Enable escrow customers to use their own OUI (MAC address prefix).
  • Bug Fixes
    • All imps:
      • Treat all-ones UDP broadcast address as network-local, ie. allow send/receive to/from it.

41.7

  • Bug Fixes
    • impC001/imp006:
      • Fix for cellular networks that actively deny registration on 2G while allowing it on 3G or 4G.

41.6

  • Bug Fixes
    • All imps:
      • Fix memory errors when using acall() in Squirrel: cap array length at 10, as per agents.
      • imp-to-server messages no longer cause long waits even when the connection is known to be down.
    • imp006:
      • Cellular builds don't have BlinkUp on the right pins.
    • impC001/imp006:
      • Fix occasional crashes when using USB (eg. for cell modem).
      • Retry PPP on NO CARRIER even if it happens right after CONNECT.

41.5

  • Features
    • All imps:
      • Enforce local subnet only constraints on UDP transmit/receive.
      • Allow escrow customers to run the unit-tests out of the box.
    • imp006:
      • Add basic support, including BlinkUp and cloudification.
  • Bug Fixes
    • All imps:
      • Apply upstream Squirrel fix for generator functions losing local variables.
      • Close UDP sockets when the underlying network connection is lost.
      • Fix MNIF reporting stale network interface states.

41.4

  • Features
    • impC001:
      • Pause for longer on Squirrel errors, in order to use less cellular data.
    • imp005:
      • Ensure escrow customers can build factory SPI images.
  • Bug Fixes
    • All imps:
    • imp005:
      • The state-change callback wasn't being triggered on WiFi loss while connected to the server via Ethernet; now it is.
    • impC001:
      • Power-cycle the modem if registering on the cell network keeps failing.
      • Fix for disconnecting while a imp.net.getcellinfo() call is pending.
      • Fix NVRAM corruptions if VBAT levels mean data is not correctly preserved.

41.3

  • Features
    • All imps:
      • UDP callbacks also receive the target IP address and port — a breaking change but to a pre-release API.
  • Bug Fixes
    • All imps:
      • Fix a crash which occurred when creating more UDP sockets than is allowed.
    • imp001-005:
      • Increase resilience to network-thread deadlocks (not seen in practice).
      • New Cypress WiFi SDK imported from upstream; some further bug fixes claimed.
    • imp005:
      • Fix several MNIF issues when using both Ethernet and WiFi.

41.2

  • Features
  • Bug Fixes
    • All imps:
    • imp001-005:
      • New Cypress WiFi SDK imported from upstream; many bug fixes claimed.
    • impC001:
      • Add timeout if cell-modem keeps switching from registered to unregistered and back.
      • Fix (theoretical, never observed) infinite loop on certain modem setup errors.

41.1

  • Features
    • All imps:
      • Major change to server-connection state-machine: imp not now considered connected until the server responds.
    • impC001:
      • Add extra logging of modem-side failures.

41.0

  • Features
    • All imps:
      • Improved, non-preliminary UDP API.
      • Introduce ability to utilize multiple network interfaces (aka ‘MNIF’).
    • impC001:
      • Prefer 4G networks to 3G if both are available.
      • Avoid constantly polling the modem for status updates.
      • Added resilience for modem UART handling.
    • imp006: preliminary support.
  • Bug Fixes
    • All imps:
      • Fix long pauses if HTTP proxy is in use and it disconnects our socket.
      • Fix connections for networks that need an HTTP proxy and a non-standard port to connect.
    • imp001:
      • Fix misreading of ID chip (regression in 39.23).
    • imp002:
      • Fix bogus driving of pin 6 (regression in 39.23).
    • imp004m:
    • imp005:
      • Increase resilience against potential Ethernet/WiFi teardown race conditions.
    • impC001:
      • Increase over-optimistic timeout for connection establishment.
      • Reduce excessive timeout if connection comes up but packets don't flow.
      • Do not overclock RNG peripheral (potential cause of watchdog resets).

Note This release branches from impOS 39.24, so please see the 39 release notes for earlier changes.