Introducing the Cloud IoT Device SDK: a new way for embedded IoT devices to connect to Google Cloud IoT Core

Embedded processors—in particular, microcontrollers—are the fundamental building blocks of the internet of things (IoT), powering edge devices such as smart refrigerators, industrial motors, and energy monitors. With the Google Cloud IoT platform, you can now manage all of your devices, establish data streams with analytics tools such as BigQuery or Bigtable, monitor performance, and visualize data. But, how do you get microcontroller-class devices to connect directly to Google Cloud IoT? In collaboration with our silicon partners, today we are introducing our new Cloud IoT Device SDK (software development kit).  

The Cloud IoT Device SDK consists of client libraries written in Embedded C that enable developers to securely connect, provision, and manage devices with Cloud IoT Core. The kit targets energy- and size-constrained applications, such as battery-powered cellular devices that act as asset trackers, or Wi-Fi smart home devices with limited flash ROM (read-only memory).

In addition to partner platforms that are supported out of the gate, now you or your embedded systems engineering team can easily port the Cloud IoT Device SDK to a wide array of 32-bit microcontrollers (MCUs) and across various real-time operating systems such as Zephyr, ARM Mbed OS, FreeRTOS kernel, with more to come. The SDK also operates on POSIX-compliant operating systems like Linux, and can scale down to bare metal devices with the inclusion of its asynchronous API and event scheduler.

Here are a few key features included in the SDK:

  • A highly portable feature set paired with a lightweight BSP (Board Support Package) allowing for the deployment of new features with minimal engineering impact

  • Single-threaded operations with co-routines to support bi-directional messaging without interrupting device applications

  • All the necessary security requirements to connect to IoT Core via JSON Web Token (JWT) authentication, out-of-the-box integration with third party TLS stacks (wolfSSL, mbedTLS), including TLS 1.2 and support for various secure elements

  • Integrated back-off logic that implements intelligent networking behavior to prevent self-inflicted DDoS (distributed denial of service) events after service outages

  • Future support for Cloud IoT Provisioning

  • Support for compute-, memory-, or space-constrained devices:

    • Small memory footprint (estimated 25KB of flash memory depending on tool chain optimizations, 80kb with a TLS software solution) with optional feature modularity for size optimizations

    • Asynchronous API enabling no-OS operation

    • Low power consumption via non-blocking sockets

    • An event scheduler and optional thread pool for user callbacks

From a value perspective, this SDK allows embedded engineers to rapidly prototype, profile, and test in a standard desktop environment before porting to an embedded target, allowing for shorter time to market. Meanwhile, this SDK allows semiconductor companies to easily update  product lines with support for the latest features in Cloud IoT Core. For customers designing, building, or deploying IoT solutions, the SDK supports a wider array of MCU-class devices, opening up the opportunity to build systems for asset tracking, smart agriculture, and energy metering. Partners and developers can start building with the SDK today via our GitHub repository.

We’re happy to engage in a broad collaboration with the following partners on our Cloud IoT Embedded SDK:

  • Arm

  • Cypress Semiconductor

  • Nordic Semiconductor

  • Espressif Systems

  • Microchip

  • NXP

“Our collaboration with Google on Mbed OS support for the new Cloud IoT Device SDK furthers our commitment to providing partners with an open source platform OS that helps them scale their IoT solutions.” 
—Chris Porthouse, Vice President and General Manager of device services, IoT Services Group, Arm

”Our collaboration allows for an easy integration of two of our most widely used products ESP32, and ESP8266. We are committed to working with Google Cloud to support updates to the SDK and enabling our customers to easily make use of current and future designs with Cloud IoT Core.” 
—Teo Swee Ann, CEO, Espressif Systems

The Cloud IoT Device SDK is part of our broader Cloud IoT Edge platform, aimed at extending data processing and machine learning capabilities to billions of edge devices, such as cameras, industrial controllers, and wind turbines, so they can act on the data from their sensors in real time, and predict outcomes locally. Check out a few of the embedded platform offerings from our partners at Embedded World this week in Nuremberg, Germany, and don’t forget to join us in April at Google Next ‘19 in San Francisco to learn more about Cloud IoT Edge.