The sky's the limit on the types of devices that can run custom AOSP ROMs. As popularity for Android grows, more and more types of peripherals and hardware configurations become supported through specific custom AOSP ROMs.
Let's take a look at what an AOSP ROM is, what a custom AOSP ROM is, and how to use both to unleash the full potential of your devices!
What does AOSP ROM mean?
AOSP ROM is an Android image built solely from the open-source version of the Android operating system code. AOSP stands for Android Open Source Project which is a stable and secure open-source code base for developers to work with when creating custom ROMs based on Android.
"Is my ROM AOSP-based?"
AOSP technically refers to the entire community of open-source developers surrounding the Android project. It also refers to the code itself. This community is led by Google.
Any ROMs built directly from this code without any modifications are 100% "AOSP ROMs." If developers modify the AOSP code, then that becomes a custom AOSP ROM.
Technically speaking, all Android ROMs are ultimately derived from the original AOSP code.
What is AOSP extended ROM?
AOSP Extended ROM is a custom version of the Android operating system that is directly based on the AOSP. It is also known as an AOSP Custom ROM and is created when developers modify the original AOSP ROM source code to add features and customizations.
Android vs. AOSP
The word AOSP is typically used in common parlance to mean the code-base itself. Similarly, "Android" is a more general word that encompasses any version of Android, whether it is purely AOSP or a modified version of AOSP.
There is another word: Stock Android. This is AOSP Android plus Google's proprietary software. It is the version of Android shipped to phone manufacturers such as Samsung, Xiaomi, or OnePlus who then add their own "Android skins" to these phones.
The Google functionality included in Stock Android includes Google Maps, Google Assistant, the Google Play Store, and several Google-specific APIs. These elements are all part of a greater package called Google Mobile Services (GMS) which Google licenses to device manufacturers if they want to create devices that use GMS.
GMS is not open-source. So, if you create an AOSP ROM directly from the AOSP code base, you will need to use an alternative app store such as F-Droid.
Purposes of Stock Android and AOSP
Stock Android is intended for major manufacturers of phones and tablets for end users. AOSP is intended for developers and enthusiasts who want to create custom versions of the Android operating system for specific devices or user needs. AOSP ROMs are the base for many custom ROMs.
A major use case for AOSP ROMs is in industrial and enterprise use.
Can there be a "Best AOSP ROM"?
Choosing the "Best AOSP ROM" depends very much on your use case. For example, an AOSP ROM that has been programmed to operate a vending machine would be useless to companies looking for a point-of-sale solution.
The best AOSP ROM solution is one that works precisely according to what you need. Some of the criteria you need to consider when choosing the best AOSP ROM include:
- Compatibility with your device
- Necessary customizations
- Battery life
- Security and updates
- Support and development
- Privacy and data protection
- Available space on the device
- The skill level of the end-user.
Community-developed AOSP ROMs are challenging for enterprises to use because there is a risk of a lack of accountability for errors. Likewise, home-grown AOSP ROM customizations tend to be overly burdensome on company resources.
For personal uses, however, there is a wide selection of excellent community-powered AOSP ROM customizations available. These customizations are excellent for non-mission-critical devices.
Where can you get an AOSP ROM download?
AOSP ROMs with customizations can be downloaded from various online sources. These include:
✔️ XDA Developers (one of the most popular locations for highly-customized AOSP ROMs)
✔️ Forums dedicated to Android development (users should be careful of malicious code when downloading from here)
No matter where you download an AOSP ROM version from, be alert to potentially malicious code. A widely downloaded version on XDA is less likely to be malicious than one downloaded from some shady obscure website.
The AOSP ROM you download needs to be compatible with your device. Modified AOSP ROMs tend to be designed for mass-produced phones, and it is more challenging to find AOSP ROMs that work on custom devices such as Android on Raspberry Pi, the Radxa ROCK Series, Intel NUC, or whatever device your enterprise has chosen for its fleet.
Installing the incorrect AOSP Download ROM on a device can "brick" that device, which means exactly what it sounds like — that the device will be about as useful as a brick to you. 😁
Benefits of a custom AOSP ROM
Custom AOSP ROMs provide a number of benefits for users looking to customize and optimize their device. These benefits include support for hardware and peripherals, reduced bloatware, and improved performance and battery life.
Support for hardware and peripherals:
One of the main benefits of a custom AOSP ROM is that it can provide support for additional hardware and peripherals. This can include things like support for specific sensors, cameras, or other hardware features.
Custom AOSP ROMs also provide support for a wide variety of peripherals, such as:
- Fingerprint scanners
- Payment devices
- Voice recognition microphones
- Electronic whiteboards
- Smartcard readers
- Electronic compass (such as for drones, robotics devices, vehicles, and so on)
- Barcode scanners
Modified AOSP ROMs reduce the amount of bloatware that comes pre-installed on a device. Bloatware refers to apps and services that are pre-installed by the manufacturer that are often of little use to the user. This bloatware typically can't be uninstalled, forcing the user to keep a space-wasting app on their devices.
Performance and battery life
When programmed properly, custom AOSP ROMs can be developed with performance at front-of-mind, resulting in significant improvements in a device's battery life and overall output. This is because AOSP ROMs can be created for a very specific subset of devices, something mass manufacturers cannot do due to the economies of scale.
Custom AOSP ROMs can also sometimes implement underclocking and overclocking of the device's CPU.
Overclocking is when programmers force a device's CPU to carry out instructions at a much higher rate per second than the manufacturer recommends. This typically heats up the device, requiring it to be cooled down by additional hardware, but can greatly enhance performance.
Similarly, underclocking slows down the CPU's instruction processing rate, resulting in lower power consumption.
Using AOSP ROM for other devices beyond phones, tablets, TVs, and so on
With the advent of Android x86 versions, even high-end devices can be supported through a properly programmed Custom AOSP ROM.
Some examples of other devices running embedded Android include:
- Point-of-sale devices
- Self-checkout systems
- Digital signage devices
- Kiosk devices of all kinds
- Smart parking meters
How to build an AOSP ROM
How to build a ROM from AOSP is a complex process requiring several specific steps. Although the entire scope of the procedure isn't the purpose of this article, here is a guide on the major steps required for how to build AOSP ROM from source:
You will need an understanding of Linux and Linux Shell Commands to build an Android custom ROM. You will also need a Linux machine with at least 400 GB of space and 16GB of RAM, and a 64-bit CPU with at least eight cores.
The 400GB choice is the minimum requirement. The official Android help page recommends using more than this if you plan on creating several builds because you need 250GB for the source code itself, then 150GB for each build.
The recommended hardware configuration is 64GB RAM on a 72-core machine. With that power, each build would take 40 minutes. On a 6-core machine with the same RAM, the build would take 180 minutes.
Set up a build environment
To build an AOSP ROM, we need to set up your local environment for development. This includes installing the appropriate development tools, grabbing the source code, getting necessary drivers, choosing a target to build to, and then starting the build.
The development tools and packages you need to build AOSP ROM include:
- GCC (GNU Compiler Collection) — a set of tools for compiling and linking programs written in C, C++.
- Older versions of AOSP will require separate installation of the JDK (Java Development Kit). The current version of AOSP comes prepackaged with OpenJDK (Open Java Development Kit).
To grab the source code, run repo init and then the repo sync command. The initial download will take several hours. Future downloads will be faster.
Choose your target device
It is necessary to choose a target device when building Android. A target device is either a certain model or specific configuration of hardware.. The peripherals you will be using are also included in the definition of a target device.
A simple AOSP ROM does have some basic support for some out-of-the-box target devices, these are mostly for specific phones or reference boards, such as the Khadas Vim3.
For this reason, you will need the proprietary binaries for the target device you're building for. Failing to have this, your device might not boot at all, or significant functionality will be missing from the booted device.
Hardware vendors sometimes hesitantly provide a Board Support Package (BSP) that lets the hardware communicate with the OS layer, but they usually charge you an arm and a leg for it.
If there is no BSP available, development time and costs begin to skyrocket.
Even when there is a BSP, customizations are still sometimes needed to extend the Linux kernel with more drivers and further extensions.
It is often also necessary to implement some form of customization on the image, such as:
The Android build system Soong (replacement for the old Make build system) compiles the source code to create an Android image.
Building the downloaded AOSP ROM code is done with the m command.
Signing the Android image
Android images need to be signed with a key to authenticate that they are authorized and trusted. This is important later for updating the firmware, as verification is needed to validate the source of an update and ensure that it has not been manipulated.
Without customization, the Android image would be signed with a publicly available test-key provided by Google. This involves high-security risks since the key is publicly accessible. Therefore, any Android image should be signed with custom keys.
When the code is not individually signed, hackers might be able to reprogram sensitive elements of the embedded operating system, modifying a valid update, and so install malicious code on the target device.
Flash the built
To flash your custom Android built onto your device, you need to connect the device to your development machine. What follows is highly device specific, depending on whether you want to flash a smartphone, a specific off-the-shelf hardware such as a Raspberry Pi or your custom board design based on a specific industrial reference platform e.g. Rockchip RK3588. Unfortunately, there is no standardized one-fits-all solution.
A simpler solution
As you can see, how to make a ROM out of AOSP is a significantly complicated process, requiring extensive knowledge of Android development. Assuming you have a BSP, don't need too many customizations, and everything runs fine, you will still have to dedicate several hours just to get a single build completed. Next, we will look at a simpler way to use a custom AOSP ROM for your specific device.
Use emteria.OS for a simpler custom AOSP ROM solution
Emteria.OS — an enterprise-grade custom AOSP ROM — requires absolutely no building by the end user: Just download it and install it on your chosen device because emteria.OS comes prebuilt with support for a huge variety of hardware configurations and offers enterprises a customization service in case you are using custom board designs.
Technically speaking, emteria.OS is actually an AOSP based ROM. Emteria uses the AOSP code base like every other developer uses it. There are emteria versions for:
- Android 7
- Android 9
- Android 11
- Android 12
- And Android 13
The primary difference between other AOSP ROM versions and emteria is the corporate support behind emteria.OS, and the enterprise-grade features it offers out of the box, including:
- Cloud-based device provisioning and management using emteria's Device Hub
- Policy management
- Regular security updates provided by a dedicated team of professionals
- Support for a wide variety of hardware setups
- Kiosk mode
- Root access
- VNC Server capabilities
- Company branding
- Over-the-air software updates
For enterprise use cases, emteria.OS is the logical choice because of the dedicated support behind this operating system. But even private users can benefit from it for up to three devices, free forever.
Emteria makes it easier than ever to create, update and manage embedded Android products.
Android at heart
Power your embedded devices with emteria's managed Android ROM
Learn more about emteria.OS and how it can be used to create secure embedded systems.