I am new to Anbox Cloud, trying to figure out below possibilities for one of my POC.
Is it possible to add Custom AAOS Image and create Anbox VM Instance
Use case : Android Middleware developers , BSP developers can change the AAOS BSP/Middleware layer quiet often for OEM RFQs and hence we need to have own custom aaos image created and integrated with Anbox Cloud. Query : What should be our starting point for this activity ,do we need to consider some prerequisites ? additional configurations ? can i get some supportive documentation or user support ? Reference:Custom images - Anbox Cloud documentation
LXD capabilities Anbox Cloud - VM
Use case : Automotive Android Application developer would like to get a system with fully virtualized environment to develop, debig, test,and as per android following subsystems have virtual implementations → Audio, Dumpstate, Extended View System (EVS), Garage Mode, Graphics, Sensors, Touchscreen input, Vehicle HAL, Bluetooth, Global navigation satellite system (GNSS) Query : LXD Hypervisor does it support virtualization of all these subsystems ? , i could see storage aspects are supported from LXD documentation , but could not find details on other subsystems → Guest OS compatibility
Query : What should be our starting point for this activity ,do we need to consider some prerequisites ? additional configurations ? can i get some supportive documentation or user support ?
Building custom AAOS image is subject to a commercial engagement with Canonical. I’ve read that you have been using the contact form to reach out. I will have this looked at and have someone reaching out to you. As part of the engagement you will have experts from Canonical working with your team to enable your custom AAOS images inside Anbox Cloud, provide knowledge sharing and enable your team to repeat the process.
Query : LXD Hypervisor does it support virtualization of all these subsystems ? , i could see storage aspects are supported from LXD documentation , but could not find details on other subsystems → Guest OS compatibility
LXD is only a technology used for baseline containerization and virtualization within Anbox Cloud but itself doesn’t provide any Android specifics. You can find necessary information of what Android features are currently supported here and here. We’re continuously extending what is supported based on user feedback. So if there is something specific which you’re missing, we’re happy to add support for it.
Thanks for your response @morphis , let me elaborate little bit on the second question, so that you get me right.
I was trying to evaluate Anbox for its hardware virtualization capability in general.
As you know, we have open standards (like VIRTIO from OASIS) to create virtual devices/drivers/transport layers such that we can mimic the hardware peripherals so that
we can host multiple Guest OS on single Processor
decouple the software development from hardware.
Like if you see below approach by CoQos Virtual Platform it offers an SDK with which hardware peripheral virtualization is made possible for most of the subsystems supported by android, so that it can host multiple guest os (Android, Linux) and still run on same SOC/Processor
So the idea is if we choose a cloud solution which has a base to help us build such a setup, then we can be guaranteed that the cloud hosted guest os and the development/tests we perform on cloud is at 90% inline with the actual hardware setup, and with which we can achieve better time to market, reduced hardware costs etc …
So i am curious to know if Anbox cloud, also guarantees to be VIRTIO compliant in this way, so that we can achieve above vision ?
Anbox Cloud doesn’t cut at the VirtIO layer at this point as we primarily provide containerization of Android to be able to use lower cost cloud resources and achieve higher density than what is possible with using virtual machines. The images we ship in Anbox Cloud come with an Anbox specific vendor image on the Android side containing the hardware abstraction specific to Anbox Cloud but implementing standard HAL layer APIs for Android. On top of that you can then run custom AAOS system images to integrate your own solutions.
As part of Anbox Cloud we also provide VM images which use a subset of what is possible today with VirtIO for standard functionality. These will be extended with support for virtualized graphics and other things in a future version of Anbox Cloud.
Let me know if you need any further information or clarifications.
Thanks for your response @morphis , so my take away is as below, hope this is correct
container based Anbox instance does not support VIRTIO, but a scalable solution than a traditional VM approach.
VM based based Anbox instance does support a subset of VIRTIO, but not fully, but scalability is limited compared to container.
Further more questions are.
To what extent does Anbox Cloud support emulation and continuous testing of Android systems for vehicles?
Specifically, in the role of a developer up to which layer (application Layer, Service Layer, HAL, BSP layer) can we deploy our own implementation , test and emulate using Anbox Cloud ?
for example, an OEM request for an application demands us to have a new driver, which needs customized Hardware Abstraction Layer (HAL), and then required application need to be developed, how can Anbox Cloud facilitate this process?
Is it possible to flash vendor-specific images directly within the vendor partition using Anbox Cloud so that vendor-specific implementations be decoupled from the android system image ?
What is the roadmap for supporting general Android features, such as Bluetooth and other currently unsupported functionalities, in Anbox Cloud? Are there any timelines or updates available for these features?
VM based based Anbox instance does support a subset of VIRTIO, but not fully, but scalability is limited compared to container.
Scalability for VMs on Anbox Cloud is not necessarily limited but it has the additional overhead of running a virtualization layer (e.g. requires nested virtualization if not running bare metal which for example is not present on Arm currently available through public clouds).
To what extent does Anbox Cloud support emulation and continuous testing of Android systems for vehicles?
We for example have extensive support for the VHAL part, you can find more details at the following parts of our documentation
You can also directly used the VHAL remotely through our UI or integrate it into your own UI implementations.
Specifically, in the role of a developer up to which layer (application Layer, Service Layer, HAL, BSP layer) can we deploy our own implementation , test and emulate using Anbox Cloud ?
for example, an OEM request for an application demands us to have a new driver, which needs customized Hardware Abstraction Layer (HAL), and then required application need to be developed, how can Anbox Cloud facilitate this process?
At this point it is not possible to replace the vendor layer within Anbox Cloud. An exception is the VHAL implementation which can be externally provided, see the links from above for more details. The main reason for this is that our vendor layer is what provides the integration with our streaming solution and tight integration with for example data center GPUs (NVIDIA, AMD Intel).
If there are specifics needs for customized or new HAL interfaces, there is an option to place them as part of the ODM partition as long as they are built against the same VINTF version as the rest vendor layer. If there are specifics needs for other HAL interfaces, it would be best to have a conversation to understand the needs better.
You can provide your own Android system image to Anbox Cloud which is then placed on top of our vendor image for integration with the Anbox runtime. The system image is built from your sources as part of that process and is fully in your hands. A requirement for this is a commercial engagement with Canonical so we can provide the necessary service to enable support for your system image, transfer knowledge and train your team on how to maintain support going forward.
What is the roadmap for supporting general Android features, such as Bluetooth and other currently unsupported functionalities, in Anbox Cloud? Are there any timelines or updates available for these features?
We are subject to feedback we receive from our users on what is most critical to add to our roadmap. We maintain a public roadmap and if you’re interested in particular features (e.g. Bluetooth) we’re more than happy to have a conversation on how we can best support your needs.