No description
Find a file
Brax Technologies fe1f1fd3ee manifest: BaseOS for the BraX3 (MT6835)
default.xml pins every project of the baseos_brax3 build, under the
Brax3_BaseOs namespace, with per-project clone-depth. README.md
describes the layout and how to sync.
2026-08-25 15:32:25 +03:00
default.xml manifest: BaseOS for the BraX3 (MT6835) 2026-08-25 15:32:25 +03:00
README.md manifest: BaseOS for the BraX3 (MT6835) 2026-08-25 15:32:25 +03:00

BaseOS for the BraX3

The repo manifest for BaseOS, an Android 16 distribution for the BraX3 smartphone (MediaTek MT6835 / Dimensity 6300), by Brax Technologies.

This repository is the entry point: it lists every other repository the build needs and pins each to an exact revision. Start here.

Android 16 (AOSP android-16.0.0_r4)
Base LineageOS 23.2
Kernel 5.15.209-android13-8, GKI android13-5.15
SoC MediaTek MT6835 (Dimensity 6300), arm64
Device BraX3 (brax3)
Branch baseos-1.0
Lunch target baseos_brax3-bp4a-userdebug

Contents

Quick start

mkdir baseos && cd baseos
repo init -u https://git.os-source.co/Brax3_BaseOs/android_manifest -b baseos-1.0
repo sync -c --no-clone-bundle --no-tags -j8
repo forall -c 'git lfs ls-files -n >/dev/null 2>&1 && git lfs pull'

source build/envsetup.sh
lunch baseos_brax3-bp4a-userdebug
m -j"$(nproc)"

Read on if any of that fails — two of these steps have non-obvious failure modes, and both are described below.

If you would rather not manage the toolchain yourself, Brax3_BaseOs/build provides a containerised builder that runs all of the above for you.

Prerequisites

  • Disk: ~120 GB for the source tree, plus ~250 GB for build output.
  • Memory: 64 GB recommended. 32 GB will work with reduced parallelism.
  • OS: a current Linux distribution. Ubuntu 22.04+ or Debian 12+ are known good; the AOSP toolchain itself is hermetic, so the host mostly needs to provide git, git-lfs, python3 and repo.
  • git-lfs must be installed before syncing. See step 2.

Get the repo tool if you do not have it:

mkdir -p ~/bin && export PATH=~/bin:$PATH
curl -fsSL https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

1. Get the source

repo init -u https://git.os-source.co/Brax3_BaseOs/android_manifest -b baseos-1.0
repo sync -c --no-clone-bundle --no-tags -j8

Brax3_BaseOs/* projects are fetched over HTTPS from git.os-source.co; AOSP and LineageOS projects come from their own upstreams, as declared by the remote elements in default.xml. Every project is pinned to an explicit revision, so --depth is not used; per-project clone-depth is set in the manifest where a shallow fetch is wanted. default.xml also sets <default sync-c="true" sync-j="8"/>, so clients fetch only the pinned revision of each project rather than every branch of every project.

The mirror lags Gerrit by a minute or two after a push, so a revision uploaded moments ago may not be fetchable yet. Upload and review are unaffected: the review attribute in default.xml is independent of the fetch URL.

2. Resolve the Git LFS prebuilts

This step is not optional, and skipping it costs you two hours.

repo sync fetches git objects but never runs the Git LFS smudge filter, so LFS-backed files arrive as ~130-byte pointer stubs rather than their real contents. The WebView prebuilts are LFS-backed:

external/chromium-webview/prebuilt/{arm,arm64,x86,x86_64}/webview.apk

Left unresolved, the build runs for about 1 hour 45 minutes and then fails at 86%:

external/chromium-webview/prebuilt/arm64/webview.apk: error: failed opening zip: Invalid file.
error: Command '[... aapt2 dump badging .../webview.apk]' returned non-zero exit status 1.

Run this after every sync:

repo forall -c 'git lfs ls-files -n >/dev/null 2>&1 && git lfs pull'

Verify — the arm64 APK should be around 247 MB:

$ file external/chromium-webview/prebuilt/arm64/webview.apk
Android package (APK), with AndroidManifest.xml

An unresolved stub reports ASCII text and begins with version https://git-lfs.github.com/spec/v1.

3. Build

source build/envsetup.sh
lunch baseos_brax3-bp4a-userdebug
m -j"$(nproc)"

Do not build as root. Running repo or m under sudo produces a root-owned tree that later non-root syncs and builds cannot write to. This is tedious to unpick; it is much easier not to do it.

The kernel is built from source by default, from Brax3_BaseOs/android_kernel_mt6835 and Brax3_BaseOs/android_vendor_mediatek_kernel_modules. Passing BUILD_KERNEL=false uses the prebuilt kernel, DTB and vendor_dlkm modules committed in device/brax/brax3-kernel instead; that flag is read by the device's BoardConfig.mk. The two paths are meant to produce equivalent images, which holds only while the committed prebuilts are the output of a build of the current kernel source.

Artifacts land in out/target/product/brax3/. See Brax3_BaseOs/build for the flashable-image targets and for the containerised build path.

Troubleshooting

Build fails at ~86% on webview.apk

Unresolved Git LFS pointers. See step 2. Run the repo forall command and rebuild; no clean is required.

Permission denied during sync or build

The tree was probably created or synced as root. Restore ownership:

sudo chown -R "$(id -u):$(id -g)" .
Connection refused on port 29418

Transient Gerrit restart; port 29418 is the SSH review endpoint, not the fetch path. Re-run repo sync; it is resumable. Adding --retry-fetches=3 makes it ride out short outages.

Reporting a problem

For build problems, or a question about how this manifest pins a revision, contact Brax Technologies.


© Brax Technologies.