Skip to main content

Release 37 (Internal)

Note impOS™ 37 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 38. As such, all other Electric Imp documentation will refer only to impOS 38 when discussing this release.

Changes apply to all imps unless stated otherwise.


Current release is 37.29.

Bug Fixes and Changes


  • Prevent WiFi power-save from being activated on imp004m-based devices where it won’t work.
  • Close rather than ignore insecure BLE connections when in secure-only mode on imp004m.
  • Fix notifications of multiple BLE LESC secure connections on imp004m.
  • Fix crash when using BLE LESC secure connections on imp004m.


  • Improve power consumption in idle (shallow sleep, WiFi off) to 30μA (imp004m) or 500μA (imp003).
  • Fix further regressions in available Squirrel memory as compared to impOS 36.
  • Fix imp005 power-consumption regression caused in 37.25.


  • Fix some regressions in available Squirrel memory as compared to impOS 36.



  • Further fixes to firmware upgrades when an HTTP proxy is in use.
  • Fix imp005 configuration mechanism for 2.4GHz-only (or 5GHz-only) WiFi usage.


  • Force WiFi power-save mode off during network join (re-enacting requested state once joined).
  • Reset WiFi power-save mode to off (default) when reloading Squirrel.
  • Fix TLS SNI when using an HTTP proxy.
  • Add experimental clocking changes on imp005 — may reduce “memory error” restarts.


  • More aggressive avoidance of overruns when using two-wire UART for Bluetooth on imp004m.


  • Add imp.reset().
  • Add tcpsendfree property to ipv4.server slot to help debug all-or-nothing send mode.
  • Improve Bluetooth GAP connection security on imp004m.
  • Remove WiFi low-power-mode experiments on imp004m.
  • Fix unintentional non-restarts in server.restart().
  • Remove occasional five-second delays when disabling WiFi or doing a network scan on imp004m.


  • Experimental: disable WiFi low-power-mode completely to assess effect on imp004m Bluetooth.


  • Make mitigation of WiFi firmware forgetting low-power-mode state more robust.


  • Reduce delay when imp is redirected from Welcome server to Home server.
  • Add support for Adesto AT25SF641 and ISSI IS25LP064A SPI flash parts to imp005.
  • Further fixes for all-or-nothing send mode.
  • Re-enable WME for improved compatibility with 802.11n routers (regression in 37.11).


  • Move the imp004m’s bluetooth Squirrel object under hardware.
  • Add GATT security to Bluetooth support.
  • Fix unintentional blocking behavior in all-or-nothing send mode.
  • Revert experimental WiFi/Bluetooth co-existence fix on imp004m.
  • Add experimental new WiFi firmware from our supplier to imp004m.


  • Following BlinkUp, refuse to join open WiFi networks if a password has been given.
  • Further PWM audio fixes when using AUDIO flag on the imp004m.
  • Add experimental improvement to WiFi/Bluetooth co-existence on the imp004m.


  • On imp004m, expose overruns in Bluetooth UART to Squirrel via bluetooth.uartflags().
  • On imp004m, allow Squirrel to set buffer size for Bluetooth UART via uart.setrxfifosize().
  • Setting Bluetooth transmit power on imp004m is no longer ineffective if performed before advertising is started.
  • Reduce pause before first LED status shown (regression in 30.4, 33.0).


  • Fix critical issue when rebooting following imp.clearconfiguration(CONFIG_WIFI) (regression in 37.11).
  • Import upstream Squirrel fix for local variables in for loops.


  • Add ‘all-or-nothing’ mode for server.setsendtimeoutpolicy() which can be used to help avoid disconnections.
  • Remove experimental ‘32kHz sleep clock on pinE’ feature from imp004m.
  • Update bluetooth.settxpower() on the imp004m.
  • Fix exceedingly rare crash in BlinkUp™ code.
  • Fix behavior change when no WiFi settings are present (regression some time in 37.x).
  • On imp001-003, fix inadvertent change in ADC results for high-impedance inputs (regression in 35.3).
  • On imp001-004m: fix rare crash in hardware random number generation code.
  • On imp005, import new WiFi firmware blob from upstream, including ‘KRACK’ fixes.


  • On imp001-004m, import new WiFi firmware blobs from upstream, including ‘KRACK’ fixes.


  • Add for WiFi performance monitoring.
  • Introduce a sophisticated Bluetooth filtering API (bluetooth.setscanfilter()) to the imp004m.
  • Add bluetooth.settxpower() to the imp004m, for controlling beacon signal strength.
  • Fix rare audio-output crash on imp004m.


  • Re-try without needless delays if WiFi join ‘succeeds’ but WPA handshake fails.
  • React more quickly if a WiFi access point deauthorizes the imp client.
  • On imp004m, revert the WiFi firmware blob ‘upgrade’ which made reliability worse (regression in 37.3).
  • On imp004m, fix various Bluetooth-related crashes.
  • On imp004m, fix the re-use of audio-output pins.
  • On imp004m, fix audio playback of very short samples.


  • Support for a global Squirrel exception handler, registered with the new imp API method imp.onunhandledexception().
  • PWM-based audio output added to imp004m.
  • Support on imp004m for ‘zombie’ PWM which keeps running even after Squirrel stops (eg. during upgrades).
  • Switch Bluetooth HCI to raw mode, to work around advertisement-reception issues (imp004m).


  • Improve Bluetooth output power when WiFi is also active (imp004m).
  • Bluetooth advertisement callbacks are no longer dropped when under load (imp004m).


  • Removed preliminary and incomplete UDP local-networking support.
  • Support Bluetooth Low Energy on imp004m.
  • Fix issues with hardware.spiflash use during WiFi connection (regression in 35.7).


  • Add support to the imp005 for S25FL-L SPI flash chips as S25FL-K chips are now hard to find.
  • Fix rare crashes when starting WiFi under heavy IRQ load (eg. sampler, fixedfrequencydac) on imp001/002/003/004m.


  • DFSDM (sigma-delta digital microphone) input support for imp004m.
  • Support for quad-mode read on S25FL064L SPI flash chips (imp005).
  • Fix for the “Broadpwn” security threat in WiFi firmware for all imps.
  • Enhanced mitigation against future WiFi threats.


  • 37.2 was a release-process change only, with no impROM changes.

37.1, 37.0

  • Reduce delays when USB connects/disconnects rapidly (imp005).
  • UDP local networking.
    • New API method: