Skip to content

Project-Flare/guide.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Project Flare — Device Bring-Up Guide

Project Flare is a CLO/CAF (CodeLinaro / Code Aurora Forum) based Android Custom ROM. This guide will walk you through bringing up your device for Flare — in simple steps anyone can follow.


Do I Need a Special Tree?

No. You do not need an AOSPA tree or any special CLO tree to build Flare.

You can build Flare directly using your existing LineageOS device tree. Some small adaptations are needed, but everything is explained below with references.


LineageOS Tree vs CLO Tree — What's Different?

The main difference is that LineageOS trees use some AOSP components where CLO uses Qualcomm's QTI CLO ones.

But here's the thing — if you have a Qualcomm device, you're most likely already using QTI components for display, audio, etc. from stock. The one area where LineageOS trees commonly differ is the power HAL:

  • LineageOS uses libperfmgr (Lineage Power HAL)
  • CLO/Stock uses QTI Perf HAL

Flare ships both power HALs for your convenience, so you can boot the ROM right away even with the Lineage power HAL. However, it's not ideal to run a CLO ROM long-term with the Lineage power HAL — you'll miss out on a lot of the performance benefits. More on this below.


Step 1 — Minimal Bring-Up (Get It to Boot)

Start here. The goal is just to get your device to boot Flare.

Important! — QPR Trees Are NOT Supported

CLO/CAF does not merge Google's QPR (Quarterly Platform Release) updates. Instead, all QPR features arrive in the next major Android version. This means:

  • For Android 16 → use a LineageOS 23.0 tree, not 23.1 or 23.2
  • For Android 15 → use a LineageOS 22.0 tree, not 22.1 or 22.2
  • And so on for older versions

If you only have a QPR tree (23.1 / 23.2 etc.), you'll need to revert the QPR-related commits from it before using it with Flare.

Use our minimal bring-up template as a reference for your device tree: 👉 Minimal Bring-Up Reference

Clean Up Telephony Lines

Delete any telephony lines from your device tree that are already defined in the Flare source. If they're defined in two places, you'll hit a build error. The reference above shows exactly which lines to remove.

Once you've done this, you should be able to build and boot Flare on your device.


Step 2 — Adapting QTI Components (After First Boot)

Once your device boots, you can start switching over to proper QTI/CLO components for a better experience. This section assumes your device is already booting.

Should You Even Do This?

Only switch to a QTI component if something is broken. Examples:

  • Telephony (calls/SMS) broken → switch to QTI telephony
  • Audio broken → switch to QTI audio
  • Bluetooth broken → switch to QTI BT

Don't switch things that already work fine. Stock display HAL for example is usually better than the common one — no need to change it unless there's a problem.

If you're already using the stock QTI perf HAL in your tree, you likely don't need to adapt anything at all. Just check what works and what doesn't.


Switching the Power HAL (Lineage → QTI Perf HAL)

If you were using the Lineage power HAL (libperfmgr) for your first boot, here's how to switch to QTI Perf HAL properly.

You need to switch three things together:

  1. Perf HAL blobs
  2. Common QTI init files
  3. Common QTI overlay

How to do it:

  1. Open our device_qcom_common repo
  2. You'll see two folders — system/ and vendor/
  3. Check the init/, overlay/, and perf/ directories in both
  4. Remove from your device tree any files that are already defined in device_qcom_common — no need to keep duplicates

For perf HAL specifically, the blobs are proprietary, so you also need to clean up your proprietary-files.txt:

  1. Check the proprietary file list inside the perf/ directory of device_qcom_common (both system and vendor folders)
  2. Remove any matching blobs from your device tree's proprietary list

You can use AI to speed up the comparison — just paste both lists and ask it to find duplicates.

Here are reference commits for each part of the switch:

Mostly the same across devices — might need minor tweaks for yours.


Using Exclude Flags to Skip Blob Adaptation

Switching blobs can be tedious, and for some components you can actually skip it entirely using exclude flags.

Check this commit for reference: 👉 Exclude flags commit

Add any of these flags to your device.mk to exclude the common prebuilt blobs for that component while still using the common configuration:

TARGET_EXCLUDE_QTI_PREBUILT_AUDIO := true
TARGET_EXCLUDE_QTI_PREBUILT_BT := true
TARGET_EXCLUDE_QTI_PREBUILT_DISPLAY := true
TARGET_EXCLUDE_QTI_PREBUILT_GPS := true
TARGET_EXCLUDE_QTI_PREBUILT_TELEPHONY := true

Or to exclude all common prebuilt blobs at once:

TARGET_EXCLUDE_QTI_PREBUILTS := true

This is especially useful for telephony — just switch to the QTI telephony component and set the flag, no blob migration needed.


Step 3 — Regenerating Vendor Blobs

After cleaning up your proprietary files list, you need to regenerate the vendor tree so everything stays in sync.

If you've done this before, you already know how. If not, don't worry — you don't need to fully regenerate blobs from a device dump. You can just regenerate the vendor makefiles instead, which is much simpler. Note that this will leave some unused blobs in your vendor tree, but that's fine for now. Here's how:

  1. Make sure you've fully synced the Flare source and cloned all your trees (device, vendor, kernel)
  2. cd into your device tree directory
  3. Run the setup script:
./setup-makefiles.sh
# or
./setup-makefiles.py
# (check your device tree for the actual filename)

If you use a common device tree, you only need to run the script from your device tree — it will automatically regenerate makefiles for the common tree too.

  1. Commit and push your vendor tree

Note: Unused blobs may still remain in your vendor tree after this. That's fine for now. Later on, you should learn how to do a full blob regeneration from a stock device dump to fully clean things up.


Summary

Situation What to do
First bring-up Use minimal bring-up reference, remove duplicate telephony lines, build and boot
Using Lineage perf HAL Boot first, then switch to QTI perf HAL + init + overlay
Already using stock QTI perf HAL You're good, just check what's broken and fix selectively
Something broken (audio/BT/telephony) Switch that specific QTI component
Don't want to migrate blobs Use TARGET_EXCLUDE_QTI_PREBUILT_* flags
After cleaning proprietary list Run setup-makefiles.sh to regenerate vendor makefiles

Resources


That's pretty much it. Follow the steps, don't over-adapt things that already work, and you should have a working Flare build on your device. Happy building! 🔥

Releases

No releases published

Packages

 
 
 

Contributors

Languages