LineageOS 23.2 device tree for the Nothing Phone (4a) (A069, codename frogger,
Qualcomm SM7635-AC / Snapdragon 7s Gen 4, platform volcano).
Adapted from the Nothing Phone (3a) (asteroids) tree. The two phones share the
platform, the partition layout, fstab.default and config.fs (byte-identical), so
most of the tree is common; everything that differs is listed below.
Firmware baseline: Frogger_B4.1-260309-1830 (Nothing OS 4.1, Android 16) — the
same build proprietary-files.txt was extracted from, so images, module lists and
fingerprints all match. See Upgrading to Nothing OS 5.0 for the A17 step.
git clone https://github.com/<you>/android_device_nothing_frogger device/nothing/frogger
cd device/nothing/frogger && ./extract-files.py # populate vendor/nothing/frogger
. build/envsetup.sh
breakfast frogger
brunch frogger| piece | source |
|---|---|
| kernel | NothingOSS/android_kernel_msm-6.1_nothing_sm7635, branch sm7635/b/mr_Frogger — the only branch with vendor/Frogger.config and arch/arm64/boot/dts/vendor/qcom-frogger |
| modules | kernel/nothing/sm7635-modules, referenced by TARGET_KERNEL_EXT_MODULE_ROOT |
| blobs | vendor/nothing/frogger, generated by extract-files.py from a stock dump |
TARGET_KERNEL_CONFIG is gki_defconfig + vendor/pineapple_GKI.config +
vendor/Frogger.config. The last one matters: it sets CONFIG_NOTHING_IS_FROGGER and
the frogger LED / NFC-SE / OEM-info drivers. The 3a tree uses
vendor/asteroids_perf.config instead, so this line has to stay device-specific.
PRODUCT_SHIPPING_API_LEVEL is 36 (Android 16, the level the 4a launched with).
dtb/sm7635.dtb(13 concatenated FDTs) +dtbo.img— prebuilt from stock; the 3a tree builds DTBs from source insteadconfigs/display_id_4630947039571902850.xml,...851.xml,...4630947107087237506.xml(3a ships a singledisplay_idfile)init/init.frogger.{rc,hw.rc,nfc.sh}+init/ueventd.frogger.rc: no Base/Pro PBID split (4a and 4a Pro are separate codenames), plus thesltntcthermal service, touchpanelTP_charger_flagsand the OTG enable nodevintf/manifest_frogger.xml(target-level="8")qcril-database/config/0016.1_config.sql(3a:0015.1)audio/audio_effects.xml,audio/lvacfs_{1,2}mic_config.patchand the extralib*audio packagesconfigs/power/powerhint.json+android.hardware.power-service.lineage-libperfmgr(3a uses the QTI power HAL)DeviceExtras(OTG tile/switch),nothing-fwk,sku/build_{EEA,IND,JPN,TUR}.prop,odm.prop/product.prop/system_ext.prop/vendor.prop- source
vibrator/HAL (android.hardware.vibrator.service.frogger, AAC RichTap) instead of the QTI effect library - kernel module lists (
modules.load.*,modules.blocklist) from the 4a firmware — they differ heavily from the 3a set (nothing_*,*-cliffs,st21nfc,hapticdrv)
Verified (static checking — the tree has not been built or booted yet):
- codename/product/model/sku all
frogger; noasteroids/A059leftovers outside the stockodm.propfeature keys - every
$(LOCAL_PATH)source and everyAndroid.bpsrcreferenced exists - no dangling makefile continuations; no CRLF in the module lists (CR would otherwise end up inside module names passed to init)
- all frogger service binaries have
sepolicyfile_contexts labels dtbparses as 13 FDTs,dtbo.imgheader magic valid- SELinux is enforcing — the
androidboot.selinux=permissivedebug flag was removed; early avc denials belong insepolicy/, not back inBOARD_BOOTCONFIG - fingerprints (
lineage_frogger.mk,sku/*.prop) are consistent withBuildDescand with the blob list
Known gaps:
odm.propstill ships the stockro.vendor.nothing.feature.diff.{device,plus}.Asteroids=…keys — they come from the 4a firmware and may legitimately be shared on sm7635android-info.txt(version-bootloader,version-baseband) and the security patch levels are from the B4.1 build; bump them when you move to a newer stock build- no per-device
READMEfor build bot integration yet — add yourREADME.mdbadges /lineage_build_targetas your infra needs
- Extract blobs from the A17 images (
vendor,odm,product,system_ext,vendor_dlkm,system_dlkm) — fromFrogger_C5.0-261023-2145-image-logical.7z.001-003, or from a fresh dump — and regenerateproprietary-files.txt. dtb/sm7635.dtbanddtbo.img: take A17'sdtbo.imgand carve the DTB set out ofvendor_boot.img(13 consecutive FDTs starting at the vendor-ramdisk offset).modules.load.vendor_boot,modules.load.recovery,modules.blocklist: copylib/modules/modules.load,modules.load.recoveryandmodules.blocklistout of the A17vendor_bootramdisk (legacy-LZ4 + cpio).modules.load.vendor_dlkm,modules.load.system_dlkm,system_dlkm.modules.blocklist: from the A17vendor_dlkm/system_dlkmimages.- Fingerprints →
Nothing/Frogger/Frogger:17/CQ2A.260522.002-CP2A.260605.016/2610232145:user/release-keys(and the EEA/IND/JPN/TUR variants) inlineage_frogger.mkand all foursku/*.prop, withBuildDesc="qssi_64-user 17 CQ2A.260522.002-CP2A.260605.016 2610232145 release-keys". - Bump the security patch levels and
android-info.txtfrom the A17 build.
Do all of it in one go — a mixed tree (A17 dtb/dtbo with B4.1 blobs) is what breaks display/touch and HAL bring-up.
https://nothingarchive.tech/docs/firmware (Phone (4a) → Frogger).
Releases: https://github.com/spike0en/nothing_archive/releases.
| build | notes |
|---|---|
Frogger_B4.1-260309-1830 |
what this tree ships with |
Frogger-C5.0-261023-2145 |
Nothing OS 5.0 / Android 17, see upgrade section |
The system dump at https://dumps.tadiphone.dev/dumps/nothing/frogger only has the
B4.1 branch, which matches this tree's blob list exactly.
Device tree structure and the shared platform bits come from the Nothing Phone (3a)
(asteroids) LineageOS trees; the frogger-specific work builds on
FroggerSpace/android_device_nothing_frogger. Firmware images belong to Nothing
Technology Limited. Everything is SPDX-License-Identifier: Apache-2.0 as marked in
the individual files.