This presentation by Aleksandr Bulyshchenko (Consultant, Engineering, GlobalLogic, Ukraine, Kharkiv) and Maksym Prymierov (Junior Software Engineer, Engineering, Consultant, GlobalLogic, Ukraine, Kharkiv) was delivered at GlobalLogic Ukraine On Air Webinar on April 15, 2020.
Our practical experts shared their expertise and results of porting the trendy Android 10 to Orange Pi board as well as demonstrated its possible DIY applications such as the ultra-popular Android TV box.
3. 1. GloDroid story, motivation and results
2. AndroidTV demo
3. Technical details and challenges during porting process
4. FDroid and Angry Birds demo
5. Q&A session
Agenda
FDroid
4. Our personal project requirements:
1. Use the latest actual version of Android
2. Take cheap single-board computer
3. Use open source projects only
4. Have an open source solution
5. Have a solution out of the box
6. Have fun
11. Supported platforms:
Orange Pi PC
SOC: Allwinner H3
CPU: ARMv7
RAM: 1GB
Retail price: 15$
Orange Pi Plus 2E
SOC: Allwinner H3
CPU: ARMv7
RAM: 2GB
Retail price: 46$
Orange Pi 3
SOC: Allwinner H6
CPU: ARMv8 64bit
RAM: 2GB
Retail price: 40$
Raspberry Pi 4
SOC: Broadcom BCM2711
CPU: Cortex-A72
RAM: 1,2,4GB
Retail price: 54$ (2GB)
In plans:
12. We are on GitHub
● Visit our page
https://glodroid.github.io/
● Get our sources
https://github.com/GloDroid/glodroid_manifest
● Find out more information from our wiki:
https://github.com/GloDroid/glodroid_manifest/wiki
13. mkdir -p GloDroid
cd GloDroid
Get your GloDroid
repo init -u https://github.com/GloDroid/glodroid_manifest
repo sync -cq
source ./build/envsetup.sh
lunch plus2e-userdebug
make sdcard
dd if=out/target/product/plus2e/sdcard.img of=${card} bs=4k count=300000
sync
15. GloDroid sources
Path Description Our patches
device/glodroid Product makefiles all is custom
prebuilts/applications Non-AOSP applications (f-droid, kodi) built 3rd-party apps
external/drm_hwcomposer Opensource HWComposer HAL based on DRM/KMS upstreamed
external/mesa3d Opensource OpenGL & Vulkan implementation for variety of graphic
cards
upstreamed
kernel/glodroid Mainline kernel (v5.4-rc7) + Google Patchset not accepted
external/tinyhal Opensource audio HAL from Cirrus Logic -
external/gbm_gralloc Opensource gralloc HAL that is using mesa GBM interface. -
external/u-boot Mainline u-boot v2019.10 -
kernel/glodroid-modules/rtl8189ES_linux Out of tree wifi kernel module -
prebuilts/gcc/linux-x86/arm/gcc-linaro_arm-linux-gnueabihf Prebuilt gcc from linaro (used to compile kernel and u-boot) -
Other ~750 repositories Google AOSP v10.0.0-r32 -
GloDroid
repos
Modified
Forks
Opensource
repositories
16. Guided by:
1. Trustworthiness
- Upstream as much our work as possible into mainline repositories with high acceptance criteria.
- Use repository forks only if necessary.
- Keep own code clean and easy for review.
- Avoid usage of proprietary binaries.
18. Guided by:
1. Trustworthiness
- Upstream as much our work as possible into mainline repositories with high acceptance criteria.
- Use repository forks only if necessary.
- Keep own code clean and easy for review.
- Avoid usage of proprietary binaries.
1. Performance (in progress)
- Continuously bring-up and improve hardware acceleration.
- Optimizations in graphics path, profiling, caching.
19. Step 1. Composer-
>ValidateDisplay()
Step 2: Composer-
>PresentDisplay()
HWComposer stages
Thanks to Linaro! Link to slides: https://s3.amazonaws.com/connect.linaro.org/yvr18/presentations/yvr18-204.pdf
SurfaceFlinger
21. Guided by:
1. Trustworthiness
- Upstream as much our work as possible into mainline repositories with high acceptance criteria.
- Use repository forks only if necessary.
- Keep own code clean and easy for review.
- Avoid usage of proprietary binaries.
1. Performance (in progress)
- Continuously bring-up and improve hardware acceleration.
- Optimizations in graphics path, profiling, caching.
1. Reliability (in plans after first release)
- Continue to fix existing and new bugs.
- Setup CI server to track regression and report to developer before applying new changes.
- Use and extend VTS and CTS.
- Manual testing (We hope to get your help here).
1. Free and open source
- Get as much as possible feedback from the community.
- Split development across the community.
- Keep project alive during long period of time.
22. Community drivers mainlining
For more info visit the following links:
Raspberry PI 4 support: https://github.com/lategoodbye/rpi-zero/issues/43
Sunxi support: https://linux-sunxi.org/Linux_mainlining_effort
H3 SOC (OPI PC) H6 SOC (OPI 3) BCM2711 (RPI 4)
Device Support Kernel v3.18 Kernel v4.17 Kernel v5.5
GPU Driver Kernel v5.2 Kernel v5.5 Kernel v4.18
VPU Driver (h264) Kernel v5.3 Kernel v5.3 Optimized CPU,
GPU + NEON?
VPU Driver (h265) Kernel v5.5 Kernel v5.5 Optimized CPU,
GPU + NEON?
24. Q & A? - Follow us on GitHub :)
Take a look at our page: https://glodroid.github.io
wiki: https://github.com/GloDroid/glodroid_manifest/wiki
sources: https://github.com/GloDroid/glodroid_manifest
28. 28
FDroid
F-Droid is an installable catalogue of FOSS (Free and Open Source Software) applications
for the Android platform.
The client makes it easy to browse, install, and keep track of updates on your device.