Android (RITA) 14 Release for Tungsten Platforms We are pleased to announce our Android 14 open-source release for all Tungsten Platforms. This includes our new Tunsgten510 SMARC and our Tungsten700 SMARC. This release is based on the great Baylibre RITA release! Prebuilt Image You can download the prebuilt images from here: Tungsten510: rita14-tungsten510-ap2a-userdebug-20250428.zip Tungsten700: rita14-tungsten700-ap2a-userdebug-20250428.zip How to Burn The .zip archives include all the files to be flashed using fastboot as well as a flashing script. Connect from your machine a serial-to-USB adapter to the SERIAL header and a USB-C cable to J25 on the carrier board. First you need to enter fastboot mode from U-Boot prompt: => fastboot 0 If you are unable to get into fastboot mode from U-Boot, you can follow the this blog to recover your Tungsten platform. Finally, flash the images: $ ./flash.sh Note that you can also use fastboot from a Windows Host PC, see following blog post to learn how: Android Tools for Nitrogen Platforms on Windows10 What’s new? Android 14 OS updates Google provides a list of notable changes for developers: https://developer.android.com/about/versions/14 Open-source This release is the “most open-source” Android BSP we’ve ever provided as even the GPU driver is! It comes at the price that not all features are supported yet, but the community and Baylibre are working hard on adding those. SELinux This release comes with SELinux in permissive mode for easy debugging / customization. Note that this feature only works on userdebug builds, user builds are enforced at all time. AVB2.0 The image also supports Android Verified Boot 2.0! So I can’t make any modification now? No, there’s a way to disable verity for userdebug builds: $ adb root $ adb disable-verity $ adb reboot At this point you will be able to modify every partition. However, it goes without saying that this disablement isn’t possible on user builds. Linux Kernel 6.12.x This Android release is based on a 6.12.x kernel from Google + a few upstream changed. It allows to use the GKI (Generic Kernel Image) from Google and be future proof as the 6.12 kernel is the latest LTS version available. Supported features MIPI-DSI as primary display support Supporting our displays by default ARM Mali GPU using open-source driver/mesa Ethernet connectivity This release supports both our KSZ9031 and USB LAN78xx PHYs Standard peripherals & busses: I2C, SPI, GPIO, PCIe, USB Wi-Fi & Bluetooth connectivity Sona MT320 Wi-Fi 6 + BT 5.3 support The currently missing items are: HDMI/DP display support Video codecs (decode / encode) Audio I2S MIPI-CSI We will update this release as soon as those features become available. Build instructions First and foremost, we recommend to read Baylibre RITA documentation as it is well written and includes a lot of details this section will not provide. This documentation is meant for MediaTek EVK platforms but note that most of it still applies for us as specific to the processor (Genio family). This section will provide shorten instructions specific to our platforms. Note that the Android BSP includes the bootloaders and kernel modules as binary files to separate the OS build from it. Therefore the instructions are split in different sections depending on what you need to modify/rebuild. Android Below are the instructions to fetch the OS source code: $ repo init -u https://github.com/boundarydevices/android-manifest.git -m ezurio-rita.xml -b mtk-android-14 $ repo sync --current-branch --no-tags --optimized-fetch Then you need to ensure your machine matches Android’s build requirements: Android’s Build Requirements Android’s Build Environment On top of that, you’ll need to install an extraneous package needed for GPT creation: $ pip3 install --user pyyaml At this stage you will be able to build the images: $ source build/envsetup.sh $ tungsten700-ap2a-userdebug $ make For Tungsten510, simply replace the tungsten700 with tungsten510 in the instructions above. Kernel In case you need to modify the kernel modules, here is how to get its source code: $ repo init -u https://github.com/boundarydevices/android-manifest.git -m ezurio-kernel-6.12.xml -b mtk-android-14 $ repo sync --current-branch --no-tags --optimized-fetch The kernel uses bazel which is as simple as a single command (applies to both 510 & 700): $ tools/bazel run --config=fast //common:mtk_dist $ cp -v out/mtk/dist/* <android_path>/vendor/ezurio/prebuilts/kernel/6.12/mtk/ Bootloaders In case you need to modify the bootloaders, here is how to get its source code: $ repo init -u https://github.com/boundarydevices/android-manifest.git -b mtk-android-14 -m ezurio-bootloaders.xml $ repo sync --current-branch --no-tags --optimized-fetch Before being able to build it, you need to ensure to have a few required packages: $ sudo apt install bc bison build-essential curl flex git libssl-dev python3 python3-pip meson wget -y $ pip3 install pycryptodome pyelftools shyaml --user Finally, here is the build instruction for Tungsten700: $ ./build/build_all.sh --config=build/config/boards/tungsten700.yaml $ ./build/build_all.sh --config=build/config/boards/tungsten700.yaml --mode=debug $ cp -v out/tungsten700/{debug,release}/* <android_path>/vendor/ezurio/prebuilts/boards/tungsten700 For Tungsten510, simply replace the tungsten700 with tungsten510 in the instructions above. As always, let us know your experiences (both good and bad) when you test out this image.