All You Need to Know About Embedded Android
The world would not function without embedded systems. We are surrounded by embedded Android and yet most people don’t even know it. Embedded Android powers vending machines, point-of-sale (POS) terminals at gas stations and stores, parking meters, car infotainment systems, TVs, central heating, factory robots, and hundreds of other types of devices.
Embedded Android is not limited to specific sectors or industries. Any company that uses any devices, generally speaking, is a candidate for using Android embedded in that device. Specific, real-life examples of the Android embedded system in operation include:
- Point-of-Sale (POS) terminals at a gas station or retail store. The terminal connects to a payment system and receives transactions. Embedded Android is used because of its high-quality touch-screen functionality, reliability, and user-friendliness.
- Rugged infotainment systems on motorbikes. An embedded Android hardware solution means that the infotainment system can use its own app store and so users can easily add apps to it.
In the world of Internet of Things (IoT), where smart devices operate in a connected fashion, embedded Android is more crucial than ever. Embedded systems for IoT are one of the primary drivers of the popularity of embedded Android.
But what is an embedded device or system, and what is the benefit of Android for embedded devices?
What Is an Embedded Device or an Embedded System?
An embedded system is a computer system that is designed to run on non-conventional devices. The device often performs a dedicated function, but doesn’t have to.
Embedded devices must often be robust because they tend to be used in high-demand environments, and replacing them is generally not as easy as replacing a mobile phone or computer.
Is Android an Embedded System?
Stock Android is not a classic embedded operating system in its original form. Nevertheless, it is becoming more and more popular as one. Embedded Android has many of the same advantages as embedded Linux, while additionally offering an exquisite user interface and familiar programming interface.
Where is embedded Android used?
Embedded Android is used in digital signage, point of sale terminals, automotive infotainment systems and dozens of other devices. The primary challenge when choosing Android as an embedded system is the wide variety of hardware available. To make Android work on embedded devices, you need to invest enormous effort and have tremendous know-how on how to modify the Android operating system.
Alternatively, you could use a ready-made embedded Android solution such as emteria.OS.
Google’s official embedded Android project was canceled
There used to be an official embedded Android project where versions of embedded Android had been created to support a wide array of underlying hardware configurations. That project was called Android Things but Google eventually shut it down.
The reasons for Google shutting down its official embedded Android project weren’t clear, but one can only guess that it had a lot to do with maintaining so many different codebases and forks.
Android Embedded Systems Basics
Embedded Android essentially sits “on top” of a Linux kernel. This is also true of stock Android. Android uses the Linux kernel with some adjustments. However, it differs fundamentally from common Linux distributions, such as Debian /Raspbian/Alpine Linux.
It is the Linux kernel that communicates directly with the underlying hardware configuration. Usually, it is the board manufacturers and chip manufacturers who provide the underlying Linux kernel. They then also provide drivers that can communicate with the operating system.
Android provides an abstraction layer between the Linux kernel and the other components of the Android architecture. This layer is called the Hardware Abstraction Layer (HAL) and is responsible for communicating with the underlying Linux kernel. It defines a standard interface for hardware vendors to implement.
As you can imagine, this is a lot of work for every hardware configuration and chipset that exists out there. For companies that produce millions of devices a year, such as phone manufacturers, the investment is worth it. Consumers buy the devices and the company makes a return on its investment.
But the matter is different for embedded Android. There are simply too many types of devices to merit mass-scale support.
Android vs Embedded Linux
Embedded Linux was a popular choice for embedded devices before Android came around and started stealing the show. There is still plenty of support for embedded Linux configurations, with decades of code and libraries available to ensure a wide variety of compatibility.
But as the popularity of embedded Android grows, so does the available support for it.
In an embedded system, Android has certain advantages that Linux doesn't, not the least of which is a slick user experience.
Here are the main points of comparison between using Linux and Android as your embedded OS:
- Highly familiar and high-quality user interface
- Native and high-quality touchscreen support
- Extensive ecosystem of Android apps (900,000+)
- Built-in communication stacks (WiFi, Bluetooth, cellular stack)
- Optimized for ARM (low power consumption)
- Built-in updating mechanism
- Built-in battery-optimized power management
- Optimized for tablets and touch devices
- Uses its own C library called Bionic, adapted from GNU C. Bionic has been optimized for devices with less power and memory than typical Linux devices.
- Requires the Android runtime to execute applications
- The standard memory footprint is significantly smaller
- Lower CPU requirements and greater CPU diversity
- Optimized for desktops and laptops
- Supports multiple architectures
- Uses standard C library
- No special runtime is required to run applications
- Real time OS available
Emteria’s Android for Embedded Devices
In the face of the lack of an official project for embedded Android, emteria created emteria.OS, based on Android, which supports a large array of hardware devices for embedded Android.
Out of the box, emteria.OS can run on the following architectures without the need to tweak any code whatsoever:
- Broadcom: BCM2837, BCM2837B0, BCM2711B0, BCM2711C0
- Intel: Core I-Series, Celeron M-Series
- NXP: i.MX8MP, i.MX8MM, i.MX8MQ
- Rockchip: RK3399
What Hardware Can You Use for Embedded Android?
In the case of Android embedded, hardware configurations are limited only by the Android version itself. In emteria.OS’s case, support for underlying hardware configurations comes out of the box.
Let’s have a look at some of the embedded Android hardware configurations that emteria can support:
Embedded Android on Raspberry Pi
Raspberry Pi is a wildly popular solution for companies that create their own fleets of embedded devices. The computer is cheap, reliable, and a workhorse. Running Android on Raspberry Pi requires only a touchscreen to make it the perfect solution for creating massive amounts of reliable embedded devices at very little cost.
Embedded Android powers Raspberry Pi devices that operate as Point of Sale devices, parking ticket systems and numerous other types of devices.
Embedded Android on ROCK Pi
ROCK Pi is a Single Board Computer (SBC) that offers considerably enhanced CPU and GPU performance compared with the Raspberry Pi.
The ROCK Pi offers both an eMMC (Embedded Multimedia Card) and an M.2 SSD slot for improved internal storage. The M.2. SSD is a Solid State Drive that allows for high-performance storage in thin and low-powered devices. This makes the ROCK Pi the obvious choice over the Raspberry Pi when dealing with devices that are more storage-dependent.
Embedded Android on Intel NUC, for high-performance solutions
The Intel NUC is a mini PC that can run embedded Android using emteria's custom-built Android version. The Intel NUC is for high-powered, mission-critical uses where devices such as the Raspberry Pi and ROCK Pi simply would not suffice.
The use cases for the Intel NUCs are wide and varied. These include:
- POS systems
- Gaming devices
- Medical devices
- Infotainment systems
- Facial Authentication terminals (such as at airports and concerts)
- A wide assortment of interactive educational devices
The Intel NCU can operate using a plethora of CPU, storage, and memory configurations.
How to choose the underlying hardware for an embedded Android system?
Before deciding what hardware to use for your embedded Android project, you need to make sure that your hardware is supported by the embedded Android version you’re using.
Emteria.OS supports many hardware configurations directly out of the box. These include:
- Various incarnations of the Raspberry Pi, such as the Raspberry Pi Compute Modules 3 and 4
- ROCK Pi 4B
- Elo I-Series 2.0
- TechNexion EDM-G-IMX8M-PLUS
- TechNexion PICO-IMX8M-MINI
You can simply download emteria.OS from the emteria website, and then run it without any code changes on any supported device.
Once you’ve created the shortlist of which hardware configurations are supported by your version of Android, it’s necessary to narrow down the choices based on what specific capabilities you require, such as:
- Processing speed
- Storage capabilities
- Bluetooth support
- External sensor support (as applicable, such as for devices that must measure and report on environmental factors)
Embedded Android Software Updates
Completely aside from developing an embedded Android version for your specific hardware configuration, there is also the matter of software updates.
Over-The-Air software updates, known as OTA updates, are critical to maintaining an embedded Android version. But very few companies provide the functionality.
Too often, embedded Android OS development companies provide an image to a product developer, and then never furnish an update. This can lead to security holes and broken software. In some cases, failure to update an embedded Android system regularly is also a violation of the law.
The reason embedded Android OS providers don’t provide IoT OTA updates is because the required infrastructure to do this is gargantuan. And the embedded Android code needs to be specifically modified to make this possible.
To provide OTA updates, an embedded Android provider must also have the support staff to work on updates, test updates, roll them out, and have a mechanism in place to roll them back if any of them fail.
This amount of dedicated back-office support is far beyond the ability of most companies to offer.
Emteria has built all of this functionality into emteria.OS, as well as the infrastructure behind it to support these updates. Additionally, emteria offers the Device Hub that lets fleet managers remotely push updates to embedded Android devices whenever they please. The Device Hub also lets you carry out other tasks on remote devices, such as changing device settings, or provisioning the device for first use.
The entire process of managing a device remotely like this is called Mobile Device Management (MDM). The benefits of MDM are particularly obvious in retail MDM and MDM in manufacturing, where direct access to devices is not always possible.
Tutorial on How to Install Embedded Android
If you don’t use a ready-made solution such as emteria.OS, then installing embedded Android on your chosen hardware configuration can be quite a challenge. You would need to download the official Android project (AOSP)—250 GB—and keep an additional 150 GB of storage space free just to build it. For additional builds, you will need even more space.
Recommended RAM for building Android is as high as 64 GB. Google currently uses 72-core machines to build its Android versions, which take 40 minutes for a full-build. This is in contrast with 6-core machines which take as much as 3 hours for a single build.
Furthermore, you would need to be thoroughly experienced in both Android and Linux development, have plenty of time on your hands, and take care of the updates and code versions in the future.
Your other option is to download emteria.OS which is a fully-fledged version of embedded Android, and which receives regular updates.
How to install emteria.OS for embedded Android
To install emteria.OS, you must register on the emteria website to download the necessary files.
Click the “Start for Free” link which will let you install emteria.OS completely for free on up to three devices.
After registering and choosing a strong password, you will receive a code to unlock the free starter plan.
Enter the code on the respective screen, and then navigate to the downloads page.
There is no need to download separate installers for different hardware setups. Only one version of emteria.OS is required for all the different hardware configurations that it supports.
Double-click the installer on your computer, type in your email address and password, select the embedded Android version you want to use, then select the drive you want embedded Android to be installed on.
The installer will write an embedded Android image to the drive you selected. You can then use this drive to run embedded Android on your chosen device.
The free version of emteria.OS receives OTA updates as regularly as the paid version. And it is a fully-functional version of embedded Android.
After booting your device up, run through the basic configuration steps to set up the language, WiFi, and other settings.
And that’s it, you’re running embedded Android!
The official Google Play Store doesn’t run on ported versions of Android out of the box because they are not GMS certified. If you would also like an App Store on your embedded Android device, without conducting the complex certification process, you can download and install FDroid. This allows users to install own and publicly available apps for the embedded Android device just like any GMS certified Android device.
Why Use emteria.OS for Your Embedded Device Requirements?
Embedded Android provides users with all the familiar functionality of stock Android. It supports touch screens and has an aesthetic, smooth appearance. It is a far better choice for user-facing devices than embedded Linux.
The Android codebase is constantly improving within in a considerably short timespan. These improvements filter down to embedded Android versions such as emteria.OS.
Android is the logical choice for your fleet of embedded devices, but building an embedded Android solution in-house is extremely expensive. Building an embedded Android solution that also supports OTA updates and MDM is virtually impossible for many firms.
Emteria.OS was developed to resolve all of these problems. The OS is actively worked on by a team of highly-skilled, expert developers. The OS supports a wide range of hardware configurations, and custom changes can be easily made for those fringe cases that don’t fully fit the mold.
Emteria works hard to stay up to date with the latest Android versions. Doing so depends a lot on the underlying hardware configurations and what changes the latest Android version implements. As much as possible, emteria.OS’s Android operating system is the embedded version of the latest available Android version, provided that the latest version can be made compatible with the underlying hardware of your device.
Installing emteria.OS is easy, and fleet managers can decide when to feed updates to their fleet, or a subset of their fleet, using emteria’s Device Hub.
To learn more about how emteria can help your business with its fleet of embedded Android devices, contact us for a free demo of the product.