Skip to main content

Release 35 (Internal)

Note impOS 35 was solely made available internally. As such, most developers and customers will not receive it except in its public release form, impOS 36. As such, all other Electric Imp documentation will refer only to impOS 36 when discussing this release.


Final release is 35.8, followed by 36.0.

Bug Fixes and Changes


  • imp005 USB now notifies of device arrival even if descriptors can’t be parsed (or are too large).
  • Remove trailing zeroes from, for example, result of server.log(5.1); (regression in 33.0).
  • imp clock could drift up to two minutes ahead of real time on devices that only connect briefly to the server.
  • More robustness against disabling imp005 USB while a transfer is active.


  • Squirrel given access to non-volatile storage (see imp.getuserconfiguration()/imp.setuserconfiguration()).
  • The “missing handler” error for lost agent.send()/device.send() messages now includes the handler name.
  • WPS automatic WiFi configuration can now be triggered from Squirrel (see
  • now contains the currently-connected WiFi SSID (as well as the currently-configured one).
  • WiFi is now started on a background thread, reducing the time spent blocked.
  • SHA256 and HMAC-SHA256 now available to device Squirrel (see new crypto.sha256/hmacsha256)
  • Enable recovery of otherwise-bricked devices from external SPI flash (imp003/imp004).
  • PWM support for imp005 (pins E, F, G, S, U and V only).
  • Ethernet connection not attempted on imp005-based WiFi-only products (PHY detection).
  • WiFi connection not attempted on imp005-based Ethernet-only products (special WiFi NVRAM needed).
  • Fix the Squirrel date() function to return yday (regression in impOS 34).
  • Fix cases where asynchronous imp.scanwifinetworks() didn’t call the callback.
  • Reinstate “expanded factory secret” on imp004m (see impOS 35.6, below).
  • Fix pin.write() for PWM on imp004m pinK.


  • Temporarily revert “expanded factory secret” for imp004m.


  • Reset UART FIFO sizes to defaults on a Squirrel reload.
  • Fix Squirrel crash after repeated use of if (x in y) where x wasn’t found.
  • Fix Squirrel format() handling of ‘special’ floats, INF and NAN.
  • Always update Squirrel following an impROM upgrade (to save potential errors later).
  • Increase TLS connection timeout to 7.5s (from 5s) to cope better with high latency connections, eg. 4G hotspots.
  • Further attempted workarounds for broken DNS implementations on consumer routers.
  • Workaround imp003 CM4 erratum which could cause odd behaviour in very rare circumstances.
  • Do not reset UART FIFO sizes to defaults in uart.disable() on imp005; other imps never did this.
  • Various imp005 USB-related fixes.
  • Fix for imp005 Ethernet-related crashes in rare circumstances.
  • Fix for rare reboots/crashes when using uart.settxactive() on imp005.


  • Release process changes only; no impROM changes.


35.1, 35.2

  • Factory-only release with no impROM changes.


  • Add a basic, upgradeable impROM for imp004m.