Canonical has announced a version of Ubuntu specifically designed for IoT devices running Linux, with a low hardware requirements, and a new package manager called snappy, replacing apt-get for this version of Ubuntu, which provides simpler, faster, and more reliable updates, stronger security, and allows roll-backs in case something goes wrong. Easy firmware updates are something missing in most connected device, which means they are more vulnerable to potential hackers, but with snappy security updates should be able to make it regularly, so that if something like heartbleed occurs again, you know your router, home automation gateway, connected washing machine, or robot will be soon patched automatically.
Snappy Ubuntu Core Logo
Let’s go through the hardware requirements first:
- Processor – 600 MHz processor (ARMv7 or greater, or x86)
- System Memory – 128 MB RAM or greater (The system itself uses 40 MB RAM)
- Storage – 4GB flash / storage for factory reset and system rollback
So the hardware requirements are not quite as low as something as OpenWRT, but still lower than what you’d expect from Ubuntu, so you could use an old laptop or PC as a development platform, and Canonical also recommends BeagleBone Black or ODROID-C1 ARM based development boards. The Raspberry Pi board won’t work with Snappy, because Broadcom BCM2835 processor is using an older architecture (ARMv6) not supported by Ubuntu.
Twenty one companies and organization have partnered with Canonical on Snappy Ubuntu Core:
- Home automation – Ninjablocks (Ninjasphere), Openhab (smarthub framework), Trasibot
- Robotic – OSRF – ROS robots, , Erle Robotics with Erle-Copter
- Development Boards – Hardkernel ODROID-C1, Beagleboarg community’s Beaglebone Black, Lemaker (Banana Pro), Udoo, LinkSprite (PCDuino), and Parallella
- Silicon Vendors – Allwinner
- IoT frameworks – Kaa, DeviceHive, IoTSys, Resin.io, OpenSensors.io
- Misc- Riot-OS, Nwave, Fairwaves, Docker with Weave
As mentioned in the introduction, apt-get is no where to be found in Snappy, as the distribution is using snappy instead, but the command line options remain familiar in some aspects:
$ sudo snappy install docker
docker 4 MB [=====================================================] OK
Part Tag Installed Available Fingerprint Active
docker edge 1.3.2.004 - 788b0787b18b1c *
with various new/different options like info, search, versions and more:
$ snappy versions -a
PART TAG INSTALLED AVAILABLE FINGERPRINT ACTIVE
ubuntu-core edge 14.11.1-20141130 - 4e8c32456ab10
ubuntu-core edge 14.12.1-20141201 - 7611de9a73923 *
docker edge 1.1.21 - 34b32c359a08e *
hello-world edge 1.0 - 27e98ab23492c *
You can see in the list above two version of ubuntu-core, with one ACTIVE and the previous available for roll-back with the command:
$ sudo snappy rollback ubuntu-core
rolling back ubuntu-core -> (edge 14.11.1-20141130 8337ce7b64821)
Reboot to use the new ubuntu-core.
You can find more example in Ubuntu Developer’s snappy page, and find out snappy can also be used to build software packages from source.
There’s also a work-in-progress web interface called WebDM (Web Device Manager) used to configure the device and install packages. It can be installed with sudo snappy install webdm, but Canonical warns it should not be enabled in production devices for now, as access control is not implemented yet.
If you want to try it, you don’t even need extra hardware, as a Snappy Ubuntu Core instances can be launched from Azure, GCE or Amazon EC2 cloud services, or run in a Virtual Machine with KVM, OVA (VMWare, VirtualBox,…) or Vagrant. All you have to do is follow the instructions provided here. Complete instructions and a preview image are also available for the BeagleBone Black. There does not seem to be pre-built images yet for the other ARM boards mentioned in this article.