M2M-logo

You have probably heard of the term the “Internet of Things” or IoT. However you may not have heard of M2M, or Machine to Machine. The two domains are very closely linked. If IoT is the overall idea, the paradigm, then M2M is the plumbing, the glue that holds it all together. ARM is probably already the world leading supplier of microcontroller designs for IoT, and it is those very same microcontrollers that are running the M2M services necessary for the IoT vision to become a reality.

So what does M2M mean? At one level it is what it says it is, a way for one machine to talk with another machine. However  in this context it means how a connected device (a “thing” in the “Internet of Things”) talks with a server to send information it has collected. It also includes how that “thing” is managed.

M2M isn’t new in the sense that we are all used to one device talking to another device. File transfers over Bluetooth, app updates over Wi-Fi, even emails are examples of how one machine talks to another to achieve a task. However the special thing about M2M in terms of IoT is that these connected devices a) have a low-power usage, b) aren’t always “on”, and c) are limited in terms of resources (e.g. processing power, memory, and so on).

Tomorrow, a new type of IoT device could be invented, one that hadn't previously been envisaged.

There are also some other interesting aspects of IoT connected devices. First, they come from a huge number of different vendors. Second, they all have different properties, some are consumer level devices, others are industrial devices like those used in the power grid. The role and function of a smartwatch is quite different to that of a sensor node in a smart city. Third, they haven’t all been invented yet. Tomorrow, a new type of IoT device could be invented, one that hadn’t previously been envisaged. Any M2M infrastructure that exists today needs to be able to support the connected devices of tomorrow.

ARM’s role in IoT and M2M is two-fold. First, as I mentioned earlier, ARM is probably already the world leading supplier of microcontroller designs for IoT. Second, ARM is a provider of software that runs on these microcontrollers.

Hardware

I won’t spend too much time discussing ARM’s hardware offerings for IoT and M2M, as Android Authority’s Robert Triggs has already written an excellent overview of ARM’s role in the Internet of Things. In a nutshell, ARM has a range of microcontroller designs known as the Cortex-M range. These are ultra low-energy processors which use a subset of ARM’s 32-bit instruction set which runs on your smartphone or tablet. In fact a program compiled for a Cortex-M processor is actually binary compatible with processors using ARM’s Cortex-A design (i.e. the Cortex-A15 etc.)

ARM Cortex M power consumption

The key thing about ARM’s range of microcontroller devices is that they already have the necessary connectivity. Devices with Cortex-M microcontrollers can already connect to the “Internet” using Ethernet, Wi-Fi, Bluetooth and NFC. A quick look at the range of development boards available with MBED compatibility will almost leave you dizzy in terms of the supported connectivity options.

In September ARM released details of a new microcontroller design, the Cortex-M7. Offering double the compute and digital signal processing (DSP) capability over the rest of the Cortex-M family, the new controller is targeted at connected devices, and smart homes and factories. Or in other words, for the Internet of Things.

mbed-devices-wm-aa

Software

So clearly ARM has the hardware side of the Internet of Things and M2M covered. However hardware without software is useless. You can have the best, fastest and most efficient microprocessor or microcontroller, but if you don’t have any software then it is just a lump of silicon. ARM are working to provide the software for M2M in three distinct areas: tools, standards and mbed OS.

ARM maintains the free toolchain that will compile for ARM processors, including the Cortex-M processor family.

The tools are the compilers and development environments needed to write software. Without these even the most basic programs can’t be made for the Cortex-M series, let alone any M2M software. As you would expect, ARM has a rich software ecosystem. There are two commercial development suites available: ARM DS-5 Development Studio – an end-to-end suite of tools for embedded C/C++ software development on any ARM processor, and Keil MDK Version 5 – a complete software development environment for a wide range of ARM, Cortex-M, and Cortex-R based microcontroller devices. However there is also a free compiler toolchain based on gcc. ARM maintains the free toolchain that will compile for ARM processors, including the Cortex-M processor family.

However ARM doesn’t stop there. Earlier this year at ARM TechCon, ARM announced a new operating system which it is hoping will become the foundation that enables widespread innovation in the Internet of Things (IoT) space. Called mbed OS, it is designed for IoT devices and includes the connectivity, security and device management functionalities required in every IoT device.

mbed-os

ARM has also announced details of a server product which compliments mbed OS and allows service providers to create back-end applications to turn all the data coming from IoT devices into useful information. mbed Device Server is analogous to a Web Server that accepts connections from mobile phones or web browsers, however the mbed Device Server handles the connections from Internet of Things devices.

Inherent in mbed OS will be various types of M2M. The diagram above shows four important protocols for M2M: CoAP, HTTP, MQTT, LWM2M. The second of those, HTTP, is already well established and is used heavily by various M2M protocols.

The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with in the Internet of Things. The protocol is designed for use in M2M applications, such as smart energy and building automation. CoAP uses URLs along with HTTP methods like GET, PUT, POST, or DELETE. This means that obtaining a value from a sensor is not much different than obtaining a value via a Web API.

coap-web-of-things-protocol

MQTT is a publish/subscribe protocol. The idea is that a client connects to a server (known as the broker) and subscribes to topics. Clients also connect to the broker and publish messages to topics. Since multiple clients can subscribe to the same topic, it is a simple way to disseminate information, a common interface for everything to connect to. For example,  various sensors in your house could send updates to the broker about what is happening in your house. Is the TV on? What is the current temperature in the kitchen, and so on. A broker collects that information and stores it. From your smartphone an Android app can also subscribe to the same broker and receive those status updates. As a result the Android app can display the current status of all the various sensors in your house. The app doesn’t need to be permanently connected as the broker acts as the central hub. Likewise the sensors only need to send update messages to the broker when necessary or based on a time interval.

IoT devices will need to switched on, configured, maintained, updated with new firmware, rebooted, and recovered from error conditions.

While CoAP and MQTT deal primarily with the sending and receiving of data, there is more to an IoT device than just getting the latest sensor data. At some time or other, IoT devices will need to perform other system administration tasks. They will need to be switched on, configured, provisioned for services, maintained, updated with new firmware, rebooted, recovered from error conditions, and finally taken off their networks at the end of their lifetime. For consumer devices much of this is simple, but for a remote sensor at the top of a hill, the ability to do these things remotely and securely is essential. It is this need for device management that LWM2M tackles.

And this takes us into the third area where ARM is playing a key role in M2M, standards. Since microcontrollers designed by ARM will likely be used in the majority of IoT devices, it makes sense for ARM to play a leading role in shaping the software and the protocols for M2M. For example Zach Shelby, ARM’s Director of Technology for Internet of Things, is a key contributor at the IETF for IoT standards with contributions in CoAP, LWM2M, 6LoWPAN, routing, web services and security related standards. Zach is known as a pioneer in the use of IP and Web technology in low-power networks with 6LoWPAN and CoAP standards development, and is coauthor of the book “6LoWPAN: The Wireless Embedded Internet”.

Conclusion

The IoT and M2M revolution has already started and ARM is providing the key components to make it work. Not only does it have a range of energy efficient microcontrollers, it provides the tools needed to write IoT and M2M software. It is also building an OS specifically designed for M2M, and is playing a key role in developing the next generation of standards for the Internet of Things.