RK3588 AOSP 16: Current Status, Issues, And Roadmap

by Alex Johnson 52 views

Welcome! This page tracks the current status of AOSP 16 for Orange Pi 5 Pro (RK3588). Check back regularly for updates! This project can be ported or used for other boards which utilize RK3588(s) like Radxa, NanoPi, Firefly, and many more by minor modifications.

๐Ÿ“‹ TODO / Planned Features

Let's dive into the roadmap for the RK3588(s) AOSP 16 project. Our todo list includes some critical features and improvements aimed at enhancing the overall user experience. We are actively working on these areas and appreciate community input and collaboration.

In Source Code

  • [ ] Fix USB 3.0 port functionality: Ensuring reliable USB 3.0 performance is a high priority. This involves debugging and implementing the necessary drivers and configurations to achieve optimal data transfer speeds.
  • [ ] Test and fix Ethernet support: Ethernet connectivity is crucial for many users, so thorough testing and bug fixing are essential to provide a stable network connection.
  • [ ] Add AV1 hardware decoder support (waiting for userspace support): AV1 is a modern video codec offering excellent compression efficiency. Adding hardware decoding support will significantly improve video playback performance and reduce CPU load, but weโ€™re currently awaiting userspace support to fully implement this feature.
  • [ ] Add mainline camera drivers: Integrating mainline camera drivers will enhance camera compatibility and functionality. This involves developing and incorporating drivers directly into the kernel to support various camera modules.
  • [ ] Fix 3.5mm jack support: Addressing audio output issues with the 3.5mm jack is important for users who rely on wired audio connections. This requires identifying and resolving any hardware or software conflicts affecting audio output.
  • [ ] Enable NVMe boot support: NVMe boot support will allow for faster and more efficient system startup and operation. This involves configuring the bootloader and kernel to properly recognize and utilize NVMe storage devices.
  • [ ] Convert audio HAL to APEX module: Converting the audio HAL (Hardware Abstraction Layer) to an APEX module will improve system modularity and update capabilities. This makes it easier to manage and update audio-related components independently.
  • [x] 2nd HDMI port on Orange Pi 5 Pro near mic (dp0->hdmi): Enabling the second HDMI port expands display options for users. This has been successfully implemented and allows for dual-display setups.

๐Ÿ”’ Private Implementations (Image Releases Only)

Itโ€™s important to note that some features are implemented privately and are available only in official image releases. These private implementations are not included in the GitHub source code but are provided as part of the pre-built images to enhance user experience and system functionality.

Private Implementations (Image Releases)

  • [x] CPU Governor Control - Available in Rockchip Settings: This feature allows users to fine-tune CPU performance based on their needs. You can adjust the CPU governor via the Rockchip Settings app to optimize for either performance or power efficiency.
  • [x] CPU Boost Toggle - Available in Rockchip Settings: The CPU boost toggle provides an easy way to enable or disable CPU boost mode, allowing you to prioritize performance or battery life.
  • [x] Desktop Mode Toggle - Available in Rockchip Settings: Desktop mode transforms the user interface into a desktop-like environment, making it easier to use the device with a mouse and keyboard.
  • [ ] Reboot to Recovery Option - Available in Rockchip Settings: This feature will add a convenient option to reboot directly into recovery mode from the Rockchip Settings app, simplifying the process for advanced users and developers.
  • [ ] Additional system tweaks (TBD): We are continually exploring additional system tweaks to further optimize performance and stability. Stay tuned for updates as we implement these improvements.

โœ… What's Working

Now, let's celebrate what's already working well in our AOSP 16 implementation. The following core features and capabilities have been successfully implemented and tested.

Core Features

  • [x] Vulkan 1.4 - Upgraded from 1.2, now as APEX module: We've upgraded to Vulkan 1.4 from 1.2 and converted it to an APEX module, providing enhanced graphics performance and better support for modern games and applications.
  • [x] Desktop Mode - Full desktop experience support: Enjoy a full desktop experience on your device, making it suitable for productivity tasks and traditional computing workflows.
  • [x] TWRP Recovery - Custom recovery included: TWRP (Team Win Recovery Project) is a custom recovery that allows you to perform advanced operations such as flashing custom ROMs, creating backups, and more.
  • [x] Bluetooth & Bluetooth Audio - Fully functional: Bluetooth connectivity, including audio streaming, is fully functional, allowing you to connect wireless devices and enjoy seamless audio playback.
  • [x] HDMI Audio - Tested and working: Audio output via HDMI is tested and confirmed to be working, providing high-quality audio through your connected displays.
  • [x] Multi-core Hardware Decoding - Optimized performance: Weโ€™ve optimized multi-core hardware decoding to ensure smooth playback of video content, leveraging the full potential of the RK3588(s) processor.

Hardware Decoding Capabilities

The RK3588(s) chip offers robust hardware decoding capabilities, and weโ€™ve made significant progress in supporting various video codecs. Hereโ€™s a breakdown of the current status:

  • [x] H.264 (AVC)

    • Up to 4K@25fps, 8-bit
    • โš ๏ธ Note: Some bitrates not supported
    • Driver by: Detlev Casanova (Collabora)

    H.264 hardware decoding is functional up to 4K resolution at 25 frames per second, with 8-bit color depth. However, please note that some bitrates may not be fully supported, which could lead to playback issues.

  • [x] HEVC (H.265)

    • Up to 4K@25fps, 8-bit
    • โš ๏ธ Note: Some bitrates not supported
    • Driver by: Detlev Casanova (Collabora)

    Similar to H.264, HEVC hardware decoding is also supported up to 4K@25fps with 8-bit color depth. Keep in mind that certain bitrates may not be fully compatible, potentially causing playback issues.

  • [x] VP9

    • Up to 4K@30fps, Profile 0, Level 5.1
    • Driver by: Custom implementation

    VP9 decoding is functional up to 4K resolution at 30 frames per second, specifically for Profile 0 videos at Level 5.1. This has been achieved through a custom implementation, ensuring smooth playback of VP9-encoded content.

System Architecture

  • [x] APEX Modules - All HALs converted except audio: We've converted all Hardware Abstraction Layers (HALs) to APEX modules, except for audio. This modular approach simplifies updates and enhances system stability.
  • [x] Mini GBM Gralloc - Converted to APEX: The Mini GBM Gralloc component has also been converted to an APEX module, further improving system modularity and maintainability.

โŒ What's NOT Working

As with any ambitious project, there are areas that still require attention. Here's a rundown of whatโ€™s not working in the current AOSP 16 implementation, along with the reasons, status, and priorities.

Feature Status Reason Priority
๐Ÿ“ท Camera โŒ Not Working Missing mainline kernel drivers Medium
๐Ÿ–ฅ๏ธ NVMe Booting โŒ Not Working - Medium
๐Ÿ”Œ 3.5mm Jack โŒ Not Working Orange Pi 5 Pro IO limitation Low
๐ŸŽฌ AV1 HW Decoder โŒ Not Working Missing userspace support Medium
๐Ÿ”Œ USB 3.0 Port โŒ Not Working - High
๐ŸŒ Ethernet โ“ Untested - Low

โš™๏ธ Recovery Mode Guide

Understanding how to use recovery mode is essential for troubleshooting and performing advanced system operations. Hereโ€™s a guide on how to manage and utilize recovery mode in our AOSP 16 implementation.

How Recovery Works

Recovery mode is controlled by the recovery= parameter in the boot partition's config.txt file:

  • recovery=true โ†’ Boot into TWRP Recovery
  • recovery=false โ†’ Boot into Android (default)

Steps to Enable/Disable Recovery

  1. Mount the boot partition on your computer.
  2. Edit /boot/config.txt.
  3. Change recovery=false to recovery=true (or vice versa).
  4. โš ๏ธ IMPORTANT: Safely eject the SD card
  5. Insert SD card into board and boot.
  6. Don't forget to change it back to false when done!

๐Ÿ› Known Issues & Workarounds

We're transparent about the challenges and are committed to providing workarounds where possible. Here are some known issues and their respective solutions.

๐Ÿ–ฅ๏ธ Issue #1: No Display While Booting to Recovery

Problem: Screen stays black when booting into TWRP recovery.

Workaround:

  1. Enable recovery mode in config.txt (set recovery=true).
  2. Boot the board and wait 2-3 minutes.
  3. If no display appears, remove and re-insert the HDMI cable.
  4. TWRP should appear on screen.

๐Ÿ“ก Issue #2: WiFi Shows