/android_device_whaleshark

Android Automotive OS (AAOS) 14 configuration for Google Pixel Tablet (tangorpro)

Primary LanguageMakefileApache License 2.0Apache-2.0

Whale Shark - an AOSP14 Automotive Device configuration based on Pixel Tablet (tangorpro)

GitHub release (latest by date) GitHub GitHub GitHub GitHub code size in bytes GitHub all releases

🧑‍💻 About

This device configuration is intented to be run on a Google Pixel Tablet (tangorpro)

See also aosp_docker for a Docker-based tool chain and android_tools for additonal sync and flash scripts.

🛠️ Setup

This product is currently being tested against UP1A.231105.003 (android-14.0.0_r14)

See Android tags for other build ids and branches

Download AOSP repository

  1. cd $AOSP_HOME (this is a placeholder for your workdir)
  2. repo init --depth=1 -u https://android.googlesource.com/platform/manifest -b android-14.0.0_r14
  3. repo sync -c --no-tags --no-clone-bundle -j$(nproc --all)

Add binary drivers

  1. Download binaries for tangorpro from here according to branch and build id
  2. Extract with tar -xvf google_devices-tangorpro-*.tgz
  3. Copy extract-google_devices-tangorpro.sh to $AOSP_HOME
  4. Execute with bash extract-google_devices-tangorpro.sh
  5. Drivers will be extracted to vendor/google_devices/tangorpro
  6. Clean up with rm extract-google_devices-tangorpro.sh

Add product configuration

Clone this repository to $AOSP_HOME/device/feixiao/whaleshark

  1. cd $AOSP_HOME
  2. git clone https://github.com/feixiao/android_device_whaleshark.git device/alexanderwolz/whaleshark

⚙️ Build the product

This follows the normal AOSP build approach, e.g.

  1. cd $AOSP_HOME
  2. source build/envsetup.sh
  3. lunch whaleshark-userdebug
  4. make clobber (optionally, cleans target folder)
  5. m -j$(nproc --all)
  6. m -j$(nproc --all) android.hardware.automotive.vehicle@2.0-default-service
  7. See compiled files at $ANDROID_PRODUCT_OUT (should be out/target/product/tangorpro)

✨ Flash the build

Currently, there is an issue with vendor partition, so it needs to be adb synced manually, but these are the steps:

  1. Flash device with official firmware matching the build id first
  2. Disable OEM lock (see settings app)
  3. Copy or rsync the $ANDROID_PRODUCT_OUT folder to localhost, if built remotely
  4. Check that $ANDROID_PRODUCT_OUT is set and export otherwise
  5. adb reboot bootloader
  6. fastboot flashing unlock
  7. fastboot flash bootloader $ANDROID_PRODUCT_OUT/bootloader.img (could be skipped)
  8. fastboot reboot bootloader
  9. fastboot -w flashall
  10. adb root
  11. adb remount (eventually you need to adb shell vdc checkpoint commitChanges)
  12. adb synch vendor
  13. adb reboot

Otherwise you can use my script collection here for an automated sync and device flash

🧑‍💻 Known Issues

  1. Android Automotive service is not build automatically even though it is set in the product-package definition.
  2. While building the firmware, some vendor files are missing in the image, they must be pushed manually via adb sync vendor
  3. Screen rotation is upside-down. Should be fixed by overlay but it is not applied yet. Can be temporarily changed with adb shell settings put system user_rotation 3