• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!

[ROM][UNOFFICIAL] LineageOS 17.1 for Unihertz Atom L (20200828)

Search This thread

landsome

Senior Member
May 4, 2015
443
114
Last time few people asked me to describe rooting of my Atom L step by step. Here it is. The method is very similar to what is described in the top, but here a recovery for "Atom XL" is used instead of recovery for "Atom L" that didn't work when I've tried it. Now is it possible that last version of TWRP works, but I didn't try it.

1. Standard steps to provide control of the phone via adb: unlock bootloader, install adb anf fastboot on the computer, enable USB debugging, connect the phone to the computer, ensure that adb sees the phone.

2. Run `adb reboot bootloader` to put your device in bootloader mode

3. Run `fastboot flash --disable-verification --disable-verity vbmeta vbmeta.img`

4. Run `fastboot flash --disable-verification --disable-verity vbmeta_system vbmeta_system.img`

5. Run `fastboot flash --disable-verification --disable-verity vbmeta_vendor vbmeta_vendor.img`

6. Run `fastboot flash recovery "Recovery XL.img"` (this is a recovery of Atom XL)

7. Run `fastboot reboot`, after thet press volume+ button to enter recovery

8. Choose Apply Update, then Apply Update from ADB.

5. Run `adb sideload Magisk-v20.4.zip` from your PC

6. Wait for the process to finish. The recovery might prompt something about verification failure, just ignore it and continue anyway.

8. Reboot into system and enjoy.
Thanks a lot. No changes on the custom rom front, am I right?
 

a-dead-trousers

Senior Member
Jul 28, 2016
356
1
166
Samsung Galaxy S5 Mini
Last time few people asked me to describe rooting of my Atom L step by step. Here it is. The method is very similar to what is described in the top, but here a recovery for "Atom XL" is used instead of recovery for "Atom L" that didn't work when I've tried it. Now is it possible that last version of TWRP works, but I didn't try it.
Or you could do WITHOUT flashing my recovery (Atom XL) at all.

1. Install LATEST Magisk 22.0 apk.
2. Download the Official ROM from Unihertz and extract "boot.img".
3. Transfer "boot.img" onto your SD card (or whatever).
4. Use Magisk on your phone to install it into your "boot.img".
5. Transfer the modified "boot.img" (different name!) back onto your computer.
5. Boot your phone into bootloader and use "fastboot flash boot boot.img" to flash the magisk mdified "boot.img".
6. Profit!

EDIT2: EDIT: No need for vbmeta & co. Obviously the steps for vbmeta to disable AVB are needed nonetheless.
(see my post further down)
 
Last edited:
  • Like
Reactions: landsome

covexx

Member
May 18, 2021
9
0
Or you could do WITHOUT flashing my recovery (Atom XL) at all.

1. Install LATEST Magisk 22.0 apk.
2. Download the Official ROM from Unihertz and extract "boot.img".
3. Transfer "boot.img" onto your SD card (or whatever).
4. Use Magisk on your phone to install it into your "boot.img".
5. Transfer the modified "boot.img" (different name!) back onto your computer.
5. Boot your phone into bootloader and use "fastboot flash boot boot.img" to flash the magisk mdified "boot.img".
6. Profit!

EDIT: No need for vbmeta & co.

There are few more steps to do

0. switch on developer mode, switch on oem unlocking, adb reboot bootloader, fastboot flashing unlock - othewise it is not possible to flash anything.

In the step 5. I would recommend to test the modified boot.img with just fasbtoot boot boot.img (this boots it one time) - I did that but I overlooked that the device rebooted after that back to original bootloader and I thought it is OK, but it was not.

After flashing the boot.img from magisk I ended up in an infinite bootloader loop - it start the bootloader up to message the device is not trusted (unlocked), it will boot in 5s but it then reboots.

I had to take the device apart (two layers of terrible design to get to battery contact) to disconnect the battery, but still no go - holding the Pwr and VolDwn button does not react. I thought I'll try the SP flash tool for MTK, but my only Windows 7 are not in the best shape, not sure the provided drivers from Uniherzt really do work.

So now obvious question - what to try next to resurect the phone?
 

covexx

Member
May 18, 2021
9
0
There are few more steps to do

0. switch on developer mode, switch on oem unlocking, adb reboot bootloader, fastboot flashing unlock - othewise it is not possible to flash anything.

In the step 5. I would recommend to test the modified boot.img with just fasbtoot boot boot.img (this boots it one time) - I did that but I overlooked that the device rebooted after that back to original bootloader and I thought it is OK, but it was not.

After flashing the boot.img from magisk I ended up in an infinite bootloader loop - it start the bootloader up to message the device is not trusted (unlocked), it will boot in 5s but it then reboots.

I had to take the device apart (two layers of terrible design to get to battery contact) to disconnect the battery, but still no go - holding the Pwr and VolDwn button does not react. I thought I'll try the SP flash tool for MTK, but my only Windows 7 are not in the best shape, not sure the provided drivers from Uniherzt really do work.

So now obvious question - what to try next to resurect the phone?
I managed to bring it back to life with the SPMultiportFlashDownloadProject.exe provided by Unihertz (under Windows).
 
Last edited:

covexx

Member
May 18, 2021
9
0
Tried to repeat the boot.img patching with magisk after I reflashed AtomL with the provided EU image, it boots with just fastboot boot boot.img but no root, if flashed the phone is in bootloop again. There are two differences 1. I use the AtomL EU image 2020110320_g63v71c2k_dfl_eea.zip, and 2. I use the latest Magist 23.

Sadly this simple method is not working for this configuration.
 

a-dead-trousers

Senior Member
Jul 28, 2016
356
1
166
Samsung Galaxy S5 Mini
Tried to repeat the boot.img patching with magisk after I reflashed AtomL with the provided EU image, it boots with just fastboot boot boot.img but no root, if flashed the phone is in bootloop again. There are two differences 1. I use the AtomL EU image 2020110320_g63v71c2k_dfl_eea.zip, and 2. I use the latest Magist 23.

Sadly this simple method is not working for this configuration.
That's odd...
0. switch on developer mode, switch on oem unlocking, adb reboot bootloader, fastboot flashing unlock - othewise it is not possible to flash anything.
Thanks.
I didn't mention that because you also need to do that when you are using TWRP (beforehand).
I had to take the device apart (two layers of terrible design to get to battery contact) to disconnect the battery, but still no go - holding the Pwr and VolDwn button does not react. I thought I'll try the SP flash tool for MTK, but my only Windows 7 are not in the best shape, not sure the provided drivers from Uniherzt really do work.
Whoa... Glad I didn't had to go through this for all the times I nearly bricked my device. I was always able to use spflash to get out of the bootloop by simply flashing a corrected partition img (boot or recovery) or in some totally ****ed up situations the whole stock rom.

@ Everyone
I really recommend to try at least one stock rom flash with spflash before getting anything done custom rom wise. That way you can be sure that you are always able to revert what you did without the need to disassemble the phone.
 

a-dead-trousers

Senior Member
Jul 28, 2016
356
1
166
Samsung Galaxy S5 Mini
Tried to repeat the boot.img patching with magisk after I reflashed AtomL with the provided EU image, it boots with just fastboot boot boot.img but no root, if flashed the phone is in bootloop again. There are two differences 1. I use the AtomL EU image 2020110320_g63v71c2k_dfl_eea.zip, and 2. I use the latest Magist 23.

Sadly this simple method is not working for this configuration.
I think I know the reason now:
AVB is active by default. So maybe that's why you cannot boot into system.
If you are still willing to test this you could try to

fastboot flash --disable-verification --disable-verity vbmeta vbmeta.img
fastboot flash --disable-verification --disable-verity vbmeta_system vbmeta_system.img
fastboot flash --disable-verification --disable-verity vbmeta_vendor vbmeta_vendor.img

If that helps your problem is definitly AVB related. AFAIK magisk should have an option to handle this but I'm not sure how well it has been tested with the latest big overhaul (v20 > v21). Maybe you can ask in the magisk support threads if there is a better solution than to disable AVB completly to get arround this.
 
Last edited:

covexx

Member
May 18, 2021
9
0
Whoa... Glad I didn't had to go through this for all the times I nearly bricked my device. I was always able to use spflash to get out of the bootloop by simply flashing a corrected partition img (boot or recovery) or in some totally ****ed up situations the whole stock rom.
After all, it was not necessary, I was hoping that after battery disconnection, I can enter the recovery via power and volume button, but it did not work. After I made a Windows MTK driver working, I was able to get from the boot loop just via SPflash tool. So yes I agree - before any manipulation with boot.img everybody should make sure that SPflash is working for them.
 

covexx

Member
May 18, 2021
9
0
After all, it was not necessary, I was hoping that after battery disconnection, I can enter the recovery via power and volume button, but it did not work. After I made a Windows MTK driver working, I was able to get from the boot loop just via SPflash tool. So yes I agree - before any manipulation with boot.img everybody should make sure that SPflash is working for them.

I think I know the reason now:
AVB is active by default. So maybe that's why you cannot boot into system.
If you are still willing to test this you could try to

fastboot flash --disable-verification --disable-verity vbmeta vbmeta.img
fastboot flash --disable-verification --disable-verity vbmeta_system vbmeta_system.img
fastboot flash --disable-verification --disable-verity vbmeta_vendor vbmeta_vendor.img

If that helps your problem is definitly AVB related. AFAIK magisk should have an option to handle this but I'm not sure how well it has been tested with the latest big overhaul (v20 > v21). Maybe you can ask in the magisk support threads if there is a better solution than to disable AVB completly to get arround this.
RIght, so after this tripplet, the boot with magisk modified boot.img works and root is working. Great.
 
Last edited:

covexx

Member
May 18, 2021
9
0
To sum it up:
0a. Reflash phone with the original Uniherzt image from their google disk https://drive.google.com/drive/folders/0By1nhWOmuw2KdDhTUlFOZHpXQjg
using their SPflash tool (works under Windows (on Linux you may try Wine), the MTK driver needs to be properly installed and phone detected in device manager - everyting is on Unihertz gdrive)
- 2020110320_g63v71c2k_dfl_eea.zip at that time for EU AtomL
The SPflash tool is not very intuitive, generally it is enought to pres Scan and wait until it detects the phone (phone reboot needed), then press "Start all".

This way you'll make sure you can get phone from any bricked state, also the phone software will be at known version and clean.

0b. On the phone switch on developer mode, switch on oem unlocking, adb reboot bootloader, fastboot flashing unlock - othewise it is not possible to flash anything. (now the message the phone is not trusted starts to appear).

1. Install LATEST Magisk 23.0 apk on the phone (https://github.com/topjohnwu/Magisk)
2. Extract "boot.img" from Unihertz image
3. Transfer "boot.img" onto your SD card (or whatever - adb push, mtp).
4. Use Magisk on your phone to install it into your "boot.img" (see magisk github doc)
5. Transfer the modified "boot.img" (different name! magisk_patched*.img) back onto your computer.
6. Boot your phone into bootloader - adb reboot bootloader
7. Disable vmbeta verification:
fastboot flash --disable-verification --disable-verity vbmeta vbmeta.img
fastboot flash --disable-verification --disable-verity vbmeta_system vbmeta_system.img
fastboot flash --disable-verification --disable-verity vbmeta_vendor vbmeta_vendor.img
8. "fastboot flash boot boot.img" to flash the magisk modified "boot.img".
fastboot reboot
9. Open Magisk, you should see it is installed (not only in ramdisk) and there is a menu for superuser capabilities.
10. adb shell; su -; allow
 
Last edited:

a-dead-trousers

Senior Member
Jul 28, 2016
356
1
166
Samsung Galaxy S5 Mini
0a. Reflash phone with the original Uniherzt image from their google disk https://drive.google.com/drive/folders/0By1nhWOmuw2KdDhTUlFOZHpXQjg
using their SPflash tool (works under Windows (on Linux you may try Wine), the MTK driver needs to be properly installed and phone detected in device manager - everyting is on Unihertz gdrive)
- 2020110320_g63v71c2k_dfl_eea.zip at that time for EU AtomL
The SPflash tool is not very intuitive, generally it is enought to pres Scan and wait until it detects the phone (phone reboot needed), then press "Start all".
I made an updated how-to for spflash (with latest version & drivers)
 

covexx

Member
May 18, 2021
9
0
Today Unihertz anounced a new OTA update for Atom L|XL. OTA (of course) fails on rooted device. There is no archive available yet on their google disk. It seems Atom (X)L does not have a A/B partitioning, so we can not get the OTA to work... am I right?
 

a-dead-trousers

Senior Member
Jul 28, 2016
356
1
166
Samsung Galaxy S5 Mini
Today Unihertz anounced a new OTA update for Atom L|XL. OTA (of course) fails on rooted device. There is no archive available yet on their google disk. It seems Atom (X)L does not have a A/B partitioning, so we can not get the OTA to work... am I right?
At least not rooted ;)
You'd need to do spflash of previous ROM release to revert the root. Setup the phone once more and then run the ota update. There should be a way to extract boot.img from an unrooted device. Just search the net for it. Otherwise you'd need to wait for the google drive release to get root back again.
 
Feb 10, 2021
11
1
@a-dead-trousers

I didn't mean to ghost you. I found myself in the position of having some major life changes and wasn't really in a spot where I could afford to experiment with my phone and possibly be without it for some days. Now that the dust has settled, I'm coming back around to this project. Primarily because...

The LineageOS ROM from the OP doesn't allow me to get LTE service from my new provider (the stock ROM *does*, so I know the phone is capable). So I wanted to try a newer version...

I tried following the build guides you posted/PMed to me, with no success. My Linux skills are good but I have no experience with resolving ninja errors and the like. I might try to set up a dedicated Ubuntu VM for a build env, so I can do more copy-pasting and less thinking, but I'll need to chase down a terabyte-sized hard drive for the process.

In the mean time I thought to myself a rooted stock rom is probably good enough for now. I'd have LTE service and I can use root to force all of the Google-ware off the phone. However...

@GameHunter1

If I follow your steps with the 2020-11 stock image from Unihertz, it works. However, I can't apply the OTA update when rooted (as others have stated), and if I apply the OTA update before trying to root, the phone never boots into recovery to do the sideload. So there's a disconnect somewhere in that process, but that's as far as I've gotten.
 

a-dead-trousers

Senior Member
Jul 28, 2016
356
1
166
Samsung Galaxy S5 Mini
@GameHunter1

If I follow your steps with the 2020-11 stock image from Unihertz, it works. However, I can't apply the OTA update when rooted (as others have stated), and if I apply the OTA update before trying to root, the phone never boots into recovery to do the sideload. So there's a disconnect somewhere in that process, but that's as far as I've gotten.
Do you use me recovery for the sideload?
If yes the problem is that I've set up decryption support and that's probably not gonna work with the 2021-05 update as I integrated the 2020-11 vendor binaries.
 
Feb 10, 2021
11
1
Do you use me recovery for the sideload?
If yes the problem is that I've set up decryption support and that's probably not gonna work with the 2021-05 update as I integrated the 2020-11 vendor binaries.
Yes.

I got a working Lineage installed with your instructions here:
Drunk-me wasn't bright enough to find that thread last night, but I was able to get it running this morning.

I did encounter a new problem though that is not only unique but fairly interesting. I'll post about it there, since I'm using that ROM.
 

covexx

Member
May 18, 2021
9
0
I am still using this "May" image on Atom L. just found out that if secondary user sets up the Alarm (Clock) then the alarm starts only if set a few minutes in the future. After that the alarm just does not start (the clock app is probably put asleep). As an Owner the alarm works as expected. I set the clock app for both users as not battery optimized, behaves the same. Is there any known workaround, know android "feature", or maybe a fix in newer builds (https://forum.xda-developers.com/t/...om-l-and-xl-alpha-2021-11-14.4171407/page-9)? Thanks
 

a-dead-trousers

Senior Member
Jul 28, 2016
356
1
166
Samsung Galaxy S5 Mini
I am still using this "May" image on Atom L. just found out that if secondary user sets up the Alarm (Clock) then the alarm starts only if set a few minutes in the future. After that the alarm just does not start (the clock app is probably put asleep). As an Owner the alarm works as expected. I set the clock app for both users as not battery optimized, behaves the same. Is there any known workaround, know android "feature", or maybe a fix in newer builds (https://forum.xda-developers.com/t/...om-l-and-xl-alpha-2021-11-14.4171407/page-9)? Thanks
With "May" image you mean stock ROM or (my) LOS ROM?
(The LOS ROM by PeterCxy never had a May release)
 

Top Liked Posts

  • There are no posts matching your filters.
  • 3
    Introduction

    This thread contains the LineageOS 17.1 custom firmware images for the Unihertz Atom L, a rugged Android phone released by Unihertz in July 2020, and the accompanying LineageOS Recovery used for flashing the firmware.

    Please note that this ROM is one of my side projects, for which I could provide zero warranty. By installing this ROM, you acknowledge that you take all the risks that come with installing custom firmwares on your devices, including but not limited to bricking your device, losing your data, etc. You are always suggested to keep backups and make sure you know how to flash back to official ROM before trying any custom ROMs.

    Please find the download links in the Download section. The following sections are guides to installing the ROM.

    WARNING: DO NOT try to install this on Atom XL. This is ONLY for the Atom L.

    Working Features

    - All basic features (Telephony, VoLTE, Audio, Camera, NFC, WiFi, Bluetooth, ....)
    - Programmable PTT (red) button (Functionality can be set in Settings - System - Buttons, under the "Search Button" section)
    - 48MP camera seems to be working (unlike on many other super resolution devices)

    Known Issues

    - VoLTE is working (at least for me) but sometimes quirky. If you find it somehow stopped working, usually turning it off and back on again (in Settings - Network - Mobile Network) will fix it. Putting the device to SELinux Permissive mode also fixes most of the VoLTE quirks but this is not recommended (a few quirks in Enforcing mode is better than having the whole device Permissive)

    Unlocking

    1. Boot your Atom L to the official OS
    2. Go into Settings - About phone, tap "build number" several times to enable developer settings
    3. Go to Settings - System - Developer Settings, enable OEM unlocking and ADB debugging
    4. Run `adb reboot bootloader` on your PC (there is no way to enter bootloader directly, only possible through adb)
    5. Run `adb flashing unlock` and comfirm unlock on device (THIS WILL WIPE ALL DATA)
    6. Reboot and now you should see an unlocked warning during boot screen.

    Installing LineageOS Recovery

    For now the only working recovery is the LineageOS Recovery, because the device's kernel does not load the touch driver in recovery mode for whatever reason, rendering TWRP useless.

    1. Download `lineage_recovery_XXX.img` and `vbmeta.zip`, unpack `vbmeta.zip` to get three .img files starting with `vbmeta`
    2. Run `adb reboot bootloader` to put your device in bootloader mode
    3. Run `fastboot flash --disable-verification --disable-verity vbmeta vbmeta.img`
    4. Run `fastboot flash --disable-verification --disable-verity vbmeta_system vbmeta_system.img`
    5. Run `fastboot flash --disable-verification --disable-verity vbmeta_vendor vbmeta_vendor.img`
    6. Run `fastboot flash recovery lineage_recovery_XXX.img`
    7. Run `fastboot reboot recovery` to reboot into the newly-installed LineageOS Recovery

    The LineageOS Recovery is operated by volume keys as selection and power as confirmation (or entering sub-menus). To return to upper levels of menus from sub-menus, press volume up until the selection goes to the first item and then disappears, then press power (i.e. there's a hidden "Go Back" item at the very top of each sub-menu).

    The recovery will show a verification failed prompt for most packages that are not signed with the AOSP keys. This is safe to ignore.

    Installing LineageOS 17.1

    The LineageOS image must be installed via LineageOS recovery.

    1. Download `lineage-17.1-Atom_L-XXX.zip`
    2. Reboot your device into recovery (`adb reboot recovery` or simply hold volume up while turning power on)
    3. Wipe all data (factory reset) (THIS DELETES EVEN INTERNAL STORAGE)
    4. Choose Apply Update, then Apply Update from ADB
    5. Run `adb sideload lineage-17.1-Atom_L-XXX.zip` from your PC
    6. Wait for the process to finish. (The recovery might prompt something about verification failure, just ignore it and continue anyway)
    7. At this point, you can then sideload the LATEST Magisk and OpenGAPPS Nano at your will (note that the size of the system partition might only be enough for the `nano` variant of OpenGAPPS) (If installing Magisk / OpenGAPPS fails, you can try rebooting into recovery again in advanced menus, then try installing them again)
    8. Reboot into system and enjoy (Note that Magisk might cause your device to boot loop once or two but it will eventually boot)

    When updating to a newer build, you have to flash the new zip, and then re-flash whatever mod you have installed previously (Magisk / GAPPS).

    Download Links

    LineageOS:
    lineage-17.1-Atom_L-20200828-peter-signed.zip: https://mega.nz/file/bAgh1BZA#jzMs_0e9NUR9NcALXWp51ZeWttM5rl_3K5T8Or9hAW0
    - Synchronized updates from LineageOS upstream.

    lineage-17.1-Atom_L-20200728-peter-signed.zip: https://mega.nz/file/vBwlmL5D#wpw8RovBHyVFCLFlhQ2H5QAIb0ECXkT4of0FRijiP6A

    LineageOS Recovery:
    lineage_recovery_20200728.img: https://mega.nz/file/yc4Dnbyb#yx0Ci9p3q9_lfAiXkGfgWDFnRJI-JSGrv3kyawkU3fw

    vbmeta:
    vbmeta.zip: https://mega.nz/file/nF51mBoY#ZNY4j92wc_6a1dXch3l5r-w4VFl9QjN7YJaRMKRoEGk

    XDA:DevDB Information
    LineageOS 17.1 for Unihertz Atom L, ROM for the Android General

    Contributors
    PeterCxy
    Source Code: https://cgit.typeblog.net/android/device/unihertz/Atom_L/

    ROM OS Version: Android 10

    Version Information
    Status: Alpha

    Created 2020-07-28
    Last Updated 2020-07-28
    2
    Hello everyone.

    What was long is finally good!
    With the recent release of TWRP 3.5.0 I was finally able to get it to work with my Atom XL.
    But that made me wonder: Was it really just that easy?
    So I decided to go for it and build one too for your Atom Ls.

    Enjoy.
    1
    I'm already on to that.
    But I seem to have trouble extracting the prebuilt kernel. None of the tools I found gave me the exact files you have got (dtb.img, dtbo.img, Image.gz). What did you use?
    The best I could get were "dtb", "kernel" and "dtborecovery" (without extensions) which roughly had the same size as yours.
    Also, as far as I understand it, with your initial commit (without the modifications for Lineage itself) I should be able to at least compile a recovery image but I got an error regarding a missing dtb.img file in the "out" directory.
    Something seems to be missing because, my dtb file is in the "device" directory and not being transfered into "out" during building.
    I'm not sure that is because I have got a different naming scheme (renamig it didn't help) or I did something wrong with the extraction.

    ---------- Post added at 07:30 ---------- Previous post was at 07:14 ----------

    Another question I have:
    Are the vbmeta-files you used to flash the recovery the ones from the original firmeware zip from unihertz or did you get them from the lineage built?

    And reguarding the rather smallish system partition:
    I have an idea to bypass that by using the SPFlash Tool from Mediatek. As far as I understand the settings in the scatter-file this tool does a repartitioning of the internal storage. So we only need to "decrease" the userdata, "move" some partitions inbetween and "increase" the system. Only problem is, I couldn't find a partition designated as "system" in the scatter-file, only one big "super" and a "vbmeta-system" (which for my understaning is for verified boot) partition.
    What do you think?

    > None of the tools I found gave me the exact files you have got (dtb.img, dtbo.img, Image.gz). What did you use?

    There is a tool called `unpack_bootimg` in the Android source code. Just run `make unpack_bootimg` in the root directory of the Android source tree and you will get one in the output directory. (btw I have renamed those extracted files so the names won't exactly match, but you need this tool to extract the correct images. All other tools won't work properly).

    > my dtb file is in the "device" directory and not being transfered into "out" during building.

    Because most tools other than `unpack_bootimg` extracts dtb incorrectly.

    > Are the vbmeta-files you used to flash the recovery the ones from the original firmeware zip from unihertz or did you get them from the lineage built?

    Those don't matter. Either will work as long as you flash it with the correct parameters as given in my post.

    > And reguarding the rather smallish system partition

    No don't do that. Android 10 does not use a separate system partition anymore, instead both system, vendor and product are sub-partitions in a huge super partition. When flashing a new ROM, the partitions are automatically resized to match the new image exactly, instead of leaving free space unused like before Android 10. That's why I need to reserve space in BoardConfig.mk for gapps to be installed correctly.
    1
    Still giving me errors.
    So I tried a very unconventional approach: I just copied the file myself into the mentioned "out/target/product/Atom_XL" folder. :p
    For now it's still compiling. Fingers crossed.

    I just reached your biggest commit yet.
    Can you tell me how you got the list of needed files? I hope it's not through trial-and-error.
    Except for the values in "setup-makefiles.sh" only the "proprietary-files.txt" seems to be device specific. Is there anything else I need to be aware of in this commit?

    P.S.: I know it is tedious to go through your commits one by one but I want to learn something of it not just simply copying what you did. To get a feeling where the biggest pitfalls are and what you did to circumvent them.

    > Still giving me errors.

    Looks like that dtb.img error was totally my fault -- it was due to my jerry-rigged solution of using prebuilt dtb image that conflicted with one of Lineage's update in August and I haven't built the ROM for a month. Now I have fixed it in the latest commit.

    > Can you tell me how you got the list of needed files?

    All of those files are for VoLTE support and I started with the list from a commit in Redmi Note 7 Pro's device tree that imported those VoLTE blobs, and then added what was missing one by one (when something is missing the Phone process will crash and you can see what got missing in the logs). I don't think the list will be any different on Atom XL so you can just use the one in my device tree.
    1
    Last time few people asked me to describe rooting of my Atom L step by step. Here it is. The method is very similar to what is described in the top, but here a recovery for "Atom XL" is used instead of recovery for "Atom L" that didn't work when I've tried it. Now is it possible that last version of TWRP works, but I didn't try it.
    Or you could do WITHOUT flashing my recovery (Atom XL) at all.

    1. Install LATEST Magisk 22.0 apk.
    2. Download the Official ROM from Unihertz and extract "boot.img".
    3. Transfer "boot.img" onto your SD card (or whatever).
    4. Use Magisk on your phone to install it into your "boot.img".
    5. Transfer the modified "boot.img" (different name!) back onto your computer.
    5. Boot your phone into bootloader and use "fastboot flash boot boot.img" to flash the magisk mdified "boot.img".
    6. Profit!

    EDIT2: EDIT: No need for vbmeta & co. Obviously the steps for vbmeta to disable AVB are needed nonetheless.
    (see my post further down)