This week we are rolling out release 27 of the Electric Imp firmware, the mini-operating system that lives on the imp and runs your Squirrel code. There’s no overarching theme to this release, per se – it’s a collection of improvements and/or fixes all over the system.

The most fundamental change in this release is the behavior on cold boot (power-up) when no WiFi is available. In previous releases, the imp always checked with the server on cold boot to make sure the Squirrel code it was running was up-to-date. No WiFi meant no server, and thus no start-up. In release 27, the imp will still *try* to check with the server on cold boot, but if it fails to join WiFi within ten seconds it will proceed to start up the Squirrel code anyway (as it already does on wake-from-deep-sleep). This is intended to be useful for device manufacturers who wish to use an imp to power their device’s “out-of-the-box” behavior even before their end-user has joined the device to their WiFi.

Also, to improve end-users’ first experiences, the flashing imp LED codes have been extended, providing more information if the imp doesn’t connect successfully: see Troubleshooting BlinkUp/ for further insight.

The largest new hardware-related feature in release 27 is a *pin-triggered pulse generator*. This is intended for use with triac circuits, such as those utilized by dimmer-switches for lights, but might find wider application, too. We’ll cover ptpg more deeply in a future blog post.

Additionally, various existing hardware-related features have been upgraded. For instance, the sampler can now sample two or more pins every cycle – up to all six pins on imp, or all eight analog-capable pins on imp002 modules. Finally, the fixed-frequency DAC now has a special “audio” mode, which removes any audible clicks when turning on or off.

The improvement you’re most likely to notice in this release isn’t a new feature at all, however. A substantial swathe of memory-efficiency work has been done, and applications that prior to this latest release were close to filling the imp’s memory (as seen using imp.getmemoryfree()) should now see as much as 20K or even 35K more available memory. It’s time to cram in more features to your imp-enabled product!

For developers, you will be able to tell you are using release 27 by running imp.getsoftwareversion() in the device, which will return “9af2fae – release-27.9 – Mon Nov 25 09:58:12 2013” after your device has been updated.

Those are just a few of the noteworthy new features in release 27. If you have any questions or comments, you can submit them on our forums. And, as always, if you’re looking for additional information please refer to the Release Notes page in the Dev Center which provides more detail.

Peter Hartley
Software Architect and Co-founder