[Updated: 6:00PM] — Google has retooled Brillo into an “Android Things” OS, supported with Android development resources. It’s also updating Weave with new device types.
Google’s lightweight, Android-based Brillo OS for IoT has seen growing adoption in its first year, but it has hardly set the world on fire. It competes with a growing selection of open source Linux- and RTOS-based IoT operating systems, which on the Linux side includes the Intel backed Ostro Linux, Raspbian, and Huawei’s LiteOS. Now, Google has listened to developers’ feedback, and has relaunched Brillo as a more Android-like Android Things OS that can be more easily tapped by Android developers.
Raspberry Pi 3
Initial Android Things hardware platforms include the Intel Edison, an i.MX6UL based module called the NXP Pico, and the Raspberry Pi 3. This would appear to be the first official Raspberry Pi support offered by any version of Android. In addition, Qualcomm announced plans to add Android Things support to its Snapdragon processors in 2017.
Alphabet-owned Google also announced plans to update the Weave networking protocol, which is supported by Brillo and Android Things. It also tipped plans to merge Google’s version of Weave with the Weave version offered by Alphabet subsidiary Nest Labs (see farther below). In a separate announcement, Google said it was spinning off its self-driving car project into an Alphabet company called Waymo that will sell self-driving technology to car manufacturers rather than sell entire cars.
Inside Android Things
Android Things, which is now available in a developer preview version, adds support for Android Studio, the Android Software Development Kit (SDK), Google Play Services, and Google Cloud Platform. In the months to come, updates will “bring you the infrastructure for securely pushing regular OS patches, security fixes, and your own updates, as well as built-in Weave connectivity and more,” says the company.
Android Things architecture
(click image to enlarge)
We saw no claims for this being an open source project, but it appears to be as open as the mostly open source Brillo and Android. We also saw no minimum footprint specs. Given the increasing Android integration, it’s unlikely it can still match Brillo’s 32MB RAM and 128MB flash requirements. Google said it would work with existing Brillo partners to port their applications to Android Things, suggesting this is far more than a simple upgrade.
Android Things, which like Android runs on a Linux kernel, extends the core Android framework with additional APIs provided by a new Things Support Library. These APIs support hardware components not typically found on mobile devices, including interfaces such as GPIO, PWM, I2C, SPI, and UART, enabling support for sensors and actuators. There is also a User Driver API that “allows apps to inject hardware events into the framework that other apps can access using the standard Android APIs,” says Google.
Unlike Android, Android Things is “streamlined for single application use,” says Google. No system apps are present, and apps are launched automatically upon startup, much like an embedded Linux application. In addition, Android things omits the standard suite of system apps and content providers found on mobile devices, including calendar, contact, telephony, and other smartphone services.
Displays are optional, full-screen, and developed with standard Android UI tools, and there are no system status bars, navigation buttons, or notifications. On headless devices, “the framework delivers all input events to the foreground activity, which has focus,” says Google. “Your app cannot receive key events or motion events through any other application component, such as a service.”
Permissions must be declared in the app’s manifest, and you cannot request permissions at runtime. Android Things also expects there is one application that exposes a “home activity” in its manifest to make it bootable.
Android Things supports a subset of the Google APIs for Android, omitting most APIs that require user input or authentication credentials. In other words, services like Cast, Drive, Fit, Instance ID, Location, Nearby, Places, and Mobile Vision are available, while AdMob, Android Pay, Maps, Play Games, Search, and Sign-In are not. Some Firebase services like Analytics and Crash Reporting are supported, while others such as Authentication and Dynamic Links are not.
Hardware support: RPi 3, Edison, and an i.MX6UL COM
Like Brillo, Android Things supports the Intel Atom based Intel Edison module. This includes support for the Edison Arduino breakout board and Sparkfun Block kit accessories.
Android Things also adds Raspberry Pi 3 support. Evidence for a Brillo RPi port first emerged back in May. The Android Things RPi page shows an example of how to connect WiFi on the Raspberry Pi 3.
Finally, there’s the NXP i.MX6UL Development Platform [PDF file], which is a rebranded version of the TechNexion-manufactured HobbitBoard assembly. The sandwich-style HobbitBoard consists of a 36 x 40mm TechNexion PICO-i.MX6UL computer-on-module plugged into an open source, 100 x 45mm carrier board.
NXP carrier board detail with PICO-i.MX6UL module on top
(click image to enlarge)
The NXP development platform’s COM is one of the first of a long list of Linux- and Brillo-ready boards that are built around NXP’s i.MX6 UltraLite SoC. The power-sipping i.MX6UL clocks its single Cortex-A7 core to 528MHz. It’s limited to a stripped down WXGA display interface, but offers security, tamper detection, and power management features that were missing from the original i.MX6.
HobbitBoard carrier (top) and COM
The NXP development platform’s PICO-i.MX6UL COM includes onboard RAM, eMMC flash, WiFi, Bluetooth, and an NXP PF300 PMIC. The carrier board adds 10/100 Ethernet, USB 2.0 host, and micro-USB OTG Type-C ports, as well as an audio codec and output, a wireless antenna interface, a camera interface, and a UART console connection. The board also provides a 5V DC jack and dual MikroBus connectors for adding MikroElectronika’s Click I/O and sensor modules.
Google lists two other hardware platforms as “coming soon.” The Intel Joule module is a follow-on to the Edison that steps up to a quad-core Intel Atom T5700 or T5500 — 14nm Broxton SoCs that are similar to the new Apollo Lake Atoms. The module supports up to 4GB RAM and 16GB eMMC, plus BT/WiFi, 4K video, CSI/DSI, GPIO, USB, and UART I/O. The Joule can be extended with a Tuchuck carrier board, as well as a variety of custom carrier boards from Gumstix.
with i.MX6UL COM
Also coming soon is an NXP Argon i.MX6UL COM supported by a carrier. The module appears to be a rebrand of the Argon i.MX 6UL SOM Board COM, which is now on pre-order from ArgonBoards for $23. The carrier appears to be the Argon i.MX 6UL Development Board, which is on pre-order for $36.
Few NXP ArgonBoard details were offered except that the module offers WiFi, Bluetooth, and a PMIC, and connects to the baseboard via 3x Hirose 60-pin connectors. The carrier board provides interfaces such as Ethernet, USB host and OTG, UART, I2C, and audio.
Weave upgrades and re-integration with Nest’s version
Google announced plans to improve its Weave communications protocol, which was announced along with Brillo, and supports various discovery, provisioning, and authentication functions on IoT devices. Related both to Brillo and the Google backed Thread 802.15.4 and 6LoWPAN based peer to peer mesh networking standard, Weave was announced as a required component of Brillo. We see no such requirement for Android Things, although the two are expected to be tightly integrated.
Google’s Weave will become “easier for all types of devices to connect to the cloud and interact with services like the Google Assistant,” says Google. The Weave Device SDK currently supports schemas for light bulbs, smart plugs and switches, and thermostats. In the coming months, Weave will add support for additional device types, custom schemas/traits, and a mobile application API for Android and iOS.
Weave is already baked into Philips Hue lights and Samsung SmartThings IoT gizmos. Google says others in the process of implementing Weave include Belkin WeMo, LiFX, Honeywell, Wink, TP-Link, and First Alert.
Weave provides cloud infrastructure for Brillo and other Linux-based OSes, including the upcoming Android Things. Weave also includes a Device SDK for supported microcontrollers, as well as a management console.
Weave has advanced somewhat more quickly than Brillo, but has been hampered by the fact that Nest’s version has evolved differently from Google’s version. The promised reintegration with Nest’s version should go a long way toward making Weave a strong alternative to Apple’s HomeKit. So would making it fully open source, although no such plans have been announced. Weave competes to a certain extent with more comprehensive open source IoT frameworks like IoTivity and AllJoyn. The Open Connectivity Foundation (OCF) is attempting to add some Weave support to IoTivity.