[KERNEL][3.18.140+][EOL for now] SwanKernel for the LG V20

Search This thread

wayase8080

Senior Member
Feb 27, 2021
60
10
CH341 is available on the kernel from what i've seen, i think it's just disabled to save on overhead and size so only changing the ramdisk won't help. Well, it should be relatively easy to compile a version of the kernel with it enabled, but you'll have to download the entirety of lineage's source to compile the kernel (even i find it a bit overkill, but it's what makes bluetooth work).

To download it and set things up, you'll need to follow this guide: https://wiki.lineageos.org/devices/h910/build#extract-proprietary-blobs
(pretty similar to other v20 models, i use h910 as a base since it's what i have).

Then follow the steps i provided on the kernel's github page to compile the kernel version you want depending on the branch you cloned once you have the lineage's tools and your device's proprietary blobs. To enable the driver it might be as simple as adding "CONFIG_USB_SERIAL_CH341=y" to kernelroot/arch/arm64/configs/msm-perf_defconfig, but i never used that driver, so i can't guarantee it'll work as easy as that.

I would try compiling a kernel with that driver enabled and send it here, but i'm currently busy porting a 4.4 kernel to the device on my free time and it will be a while until i have the time and disk space to setup lineage's tools here. If you have any problems, do share and i'll try to help.
Do I really need to build the whole LOS? Shouldn't the kernel itself be enough? I already have the zImage with the driver enabled.
 

AShiningRay

Senior Member
Sep 1, 2021
118
47
Xiaomi Redmi Note 4
LG V20
Do I really need to build the whole LOS? Shouldn't the kernel itself be enough? I already have the zImage with the driver enabled.
Not really, by following the instructions on lineage's website until "brunch h910", then jumping to the github instructions you should end up compiling only the kernel, but you'll still need to use lineage's source for maximum compatibility.

But just for clarification, you have a Swan ZImage of the latest version (anything 1.08 upwards should be fine, but the latest 1.09+ is ideal) with the driver already enabled? If so, it should be working right out of the gate. Flashing a ZImage from an older kernel like gamma or even lineage's stock kernel will end up breaking things since Swan has a massively updated kernel version.
 

wayase8080

Senior Member
Feb 27, 2021
60
10
Not really, by following the instructions on lineage's website until "brunch h910", then jumping to the github instructions you should end up compiling only the kernel, but you'll still need to use lineage's source for maximum compatibility.

But just for clarification, you have a Swan ZImage of the latest version (anything 1.08 upwards should be fine, but the latest 1.09+ is ideal) with the driver already enabled? If so, it should be working right out of the gate. Flashing a ZImage from an older kernel like gamma or even lineage's stock kernel will end up breaking things since Swan has a massively updated kernel version.
Ah got it, I'll do that. After that do I just unpack the boot.img and replace the boot-image with the newly built zImage? Or do I need to generate the ramdisk, make a whole flashable zip or something else?
 

AShiningRay

Senior Member
Sep 1, 2021
118
47
Xiaomi Redmi Note 4
LG V20
Ah got it, I'll do that. After that do I just unpack the boot.img and replace the boot-image with the newly built zImage? Or do I need to generate the ramdisk, make a whole flashable zip or something else?
Actually, if you run "mka kernel" instead of making a whole bootimage, you'll get a kernel ZImage-dtb in out/product/...(don't remember where exactly, it's a lot of subfolders and depends on the model)
So you'll only need to get it and override the zimage-dtb already in the flashable zip.
 

wayase8080

Senior Member
Feb 27, 2021
60
10
Actually, if you run "mka kernel" instead of making a whole bootimage, you'll get a kernel ZImage-dtb in out/product/...(don't remember where exactly, it's a lot of subfolders and depends on the model)
So you'll only need to get it and override the zimage-dtb already in the flashable zip.
I've finally gotten some spare time on my hands and started building the image. I setup the environment as described, followed the github instructions, but I'm getting an error, pic related, it doesn't say much which is quite frustrating. I set up a VM of Uma Mint because I didn't have enough space on my main drive... Got any idea of what might be going on?
android_fail.png
 

AShiningRay

Senior Member
Sep 1, 2021
118
47
Xiaomi Redmi Note 4
LG V20
I've finally gotten some spare time on my hands and started building the image. I setup the environment as described, followed the github instructions, but I'm getting an error, pic related, it doesn't say much which is quite frustrating. I set up a VM of Uma Mint because I didn't have enough space on my main drive... Got any idea of what might be going on?View attachment 5521575
Considering how many things are in lineage's repo, it could be a lot of things. First, it could be running out of memory. The soong build step can easily get 16GB of memory (main RAM + swap) by itself near the 4 minutes mark, and sometimes even a bit more than that on my linux machine without any VM, so check if you have things setup to account for that. If you have enough resources to build it, and also assuming you have a few extra gigs of disk space to finish building the kernel, there's another thing to look at:
I would try doing a repo sync --force-sync to check if all files are ok (placing the custom kernel in the kernel folder again afterwards).

If both fail, i dunno what might be happening over there as i never faced that problem in a way that wasn't solved by either of the solutions above. Since the build is failing before reaching the kernel compilation, maybe they have some info about such errors on lineage's docs.
 

wayase8080

Senior Member
Feb 27, 2021
60
10
Considering how many things are in lineage's repo, it could be a lot of things. First, it could be running out of memory. The soong build step can easily get 16GB of memory (main RAM + swap) by itself near the 4 minutes mark, and sometimes even a bit more than that on my linux machine without any VM, so check if you have things setup to account for that. If you have enough resources to build it, and also assuming you have a few extra gigs of disk space to finish building the kernel, there's another thing to look at:
I would try doing a repo sync --force-sync to check if all files are ok (placing the custom kernel in the kernel folder again afterwards).

If both fail, i dunno what might be happening over there as i never faced that problem in a way that wasn't solved by either of the solutions above. Since the build is failing before reaching the kernel compilation, maybe they have some info about such errors on lineage's docs.
>RAM
Ah, that would make sense, I have dedicated "only" 8GB of RAM to that VM. I'll set up swap.
 

wayase8080

Senior Member
Feb 27, 2021
60
10
It finally finished compiling last evening, now I've got the following file:
out/target/product/vs995/kernel: gzip compressed data, max compression, from Unix, original size modulo 2^32 7301488
Is it the right one and I just put it into the split boot.img and then repack it and replace it in the unzipped lineage folder, then zip again and flash?
 

AShiningRay

Senior Member
Sep 1, 2021
118
47
Xiaomi Redmi Note 4
LG V20
Is there a "kernel_obj" folder? You should look for a "Image.gz-dtb" file inside that folder, and it's usually on kernel_obj/arch/arm64/boot or something along those lines when compiled with lineage's tools.
After you find that image.gz-dtb file, you only need to copy it to a folder with an anykernel script, or a zip containing it for that matter, zip it up (or just replace the image.gz from another v20 kernel) and flash it.
 
Last edited:

wayase8080

Senior Member
Feb 27, 2021
60
10
Is there a "kernel_obj" folder? You should look for a "Image.gz-dtb" file inside that folder, and it's usually on kernel_obj/arch/arm64/boot or something along those lines when compiled with lineage's tools.
After you find that image.gz-dtb file, you only need to copy it to a folder with an anykernel script, or a zip containing it for that matter, zip it up (or just replace the image.gz from another v20 kernel) and flash it.
Unfortunately 'cd ~/android/lineage/ && find . -name ^kernel_obj*' finds nothing, so I'm afraid it's not there. I ran 'mka kernel' from the kernel root directory (~/android/lineage/kernel/lge/msm8996), and it compiled successfully, should I re-run it from the lineage root directory?
 

wayase8080

Senior Member
Feb 27, 2021
60
10
Yep, usually you need to run that command from lineage's root dir.
Alright, got the dtb file, it was located at lineageroot/out/target/product/vs995/obj/KERNEL_OBJ. Now I unzipped/zipped the swan kernel with the new dtb file, but when I try to flash it via TWRP I get the error "Invalid zip file format!\n Error installing zip file /external_sd/Swan-CH341_vs995_test.zip". I zipped it with 'zip -r --compression-method=deflate Swan-CH341_vs995_test.zip swan', but it shows up differently:
Swan-CH341_vs995_test.zip: Zip archive data, at least v1.0 to extract, compression method=store Swan-VS995-Stable.zip: Zip archive data, at least v2.0 to extract, compression method=deflate
Is there a specific protocol to follow when zipping the kernel? One more question; is there any operationally significant difference between the US996 and the VS995 kernel (besides the locked/unlocked sim status)?
 

AShiningRay

Senior Member
Sep 1, 2021
118
47
Xiaomi Redmi Note 4
LG V20
Alright, got the dtb file, it was located at lineageroot/out/target/product/vs995/obj/KERNEL_OBJ. Now I unzipped/zipped the swan kernel with the new dtb file, but when I try to flash it via TWRP I get the error "Invalid zip file format!\n Error installing zip file /external_sd/Swan-CH341_vs995_test.zip". I zipped it with 'zip -r --compression-method=deflate Swan-CH341_vs995_test.zip swan', but it shows up differently:
Swan-CH341_vs995_test.zip: Zip archive data, at least v1.0 to extract, compression method=store Swan-VS995-Stable.zip: Zip archive data, at least v2.0 to extract, compression method=deflate
Is there a specific protocol to follow when zipping the kernel? One more question; is there any operationally significant difference between the US996 and the VS995 kernel (besides the locked/unlocked sim status)?
First i would look at how the files are organized in that new zip file. If they're identical to the original kernel zip, it's the compression algorithm causing problems. I have an automatized zipping script for all those variants, and that's how i zip them all:
zip -r9 ../zipname.zip * -x *placeholder (the script goes into the folder that has the anykernel files and the dtb, then runs that code to zip everything in there, and excluding anything that has a "placeholdder" appended to it). I had some problems using the store method to zip kernels before, so that might be it.

And for the second question: No, they are nearly identical as far as the kernel is concerned (same for H910 and i guess H918 and LS997 as well since i've been shuffling some vs995 and us996 roms/kernels on my h910 for testing just fine). The only difference between them is that the US996 model could be unlocked officially a while ago, so it doesn't require a kernel patch to remove some visual glitches during boot. Besides that, the majority of the V20 variants are extremely similar.
 

wayase8080

Senior Member
Feb 27, 2021
60
10
First i would look at how the files are organized in that new zip file. If they're identical to the original kernel zip, it's the compression algorithm causing problems. I have an automatized zipping script for all those variants, and that's how i zip them all:
zip -r9 ../zipname.zip * -x *placeholder (the script goes into the folder that has the anykernel files and the dtb, then runs that code to zip everything in there, and excluding anything that has a "placeholdder" appended to it). I had some problems using the store method to zip kernels before, so that might be it.

And for the second question: No, they are nearly identical as far as the kernel is concerned (same for H910 and i guess H918 and LS997 as well since i've been shuffling some vs995 and us996 roms/kernels on my h910 for testing just fine). The only difference between them is that the US996 model could be unlocked officially a while ago, so it doesn't require a kernel patch to remove some visual glitches during boot. Besides that, the majority of the V20 variants are extremely similar.
Using the 9th level compression solved that particular problem. Now I get a different error: "Unsupported device. Aborting...\n Updater process ended with ERROR 1". I'm running LOS 18.1 for the VS995 (on the F800), I am positive I compiled the kernel for the same version of LOS, when I try to flash the unmodified kernel, it works. Any idea what might I be doing wrong?
 

AShiningRay

Senior Member
Sep 1, 2021
118
47
Xiaomi Redmi Note 4
LG V20
Using the 9th level compression solved that particular problem. Now I get a different error: "Unsupported device. Aborting...\n Updater process ended with ERROR 1". I'm running LOS 18.1 for the VS995 (on the F800), I am positive I compiled the kernel for the same version of LOS, when I try to flash the unmodified kernel, it works. Any idea what might I be doing wrong?
Oh so you have an F800? I see, so it's the anykernel.sh that's not allowing the kernel to be installed because it was tailored for the VS995. Your phone is probably being passed on as a F800 in recovery so that's why it fails even if the rom is from vs995.

It should be as simple as adding those lines (replacing if there's any conflicts or repeated entries for the VS995) on the anykernel.sh and then zipping it again:

device.name3=f800
device.name4=F800
device.name5=elsa
device.name6=ELSA

I just didn't compile a swan build specific to the F800 cause i didn't find anyone to test it on, sorry if it's making things a bit too complicated.
 

wayase8080

Senior Member
Feb 27, 2021
60
10
Oh so you have an F800? I see, so it's the anykernel.sh that's not allowing the kernel to be installed because it was tailored for the VS995. Your phone is probably being passed on as a F800 in recovery so that's why it fails even if the rom is from vs995.

It should be as simple as adding those lines (replacing if there's any conflicts or repeated entries for the VS995) on the anykernel.sh and then zipping it again:

device.name3=f800
device.name4=F800
device.name5=elsa
device.name6=ELSA

I just didn't compile a swan build specific to the F800 cause i didn't find anyone to test it on, sorry if it's making things a bit too complicated.
>anykernel.sh
I'm not using any script (at least knowingly), just zip(1L). Is it necessary?

>a bit too complicated
Not at all, I should be grateful for your time.

One more question, why would the other kernel (the original Swan for vs995) work then even if I'm flashing it on the F800.

Edit: Nevermind, I'm a retard, there is an anykernel.sh script in the unzipped folder.
 

AShiningRay

Senior Member
Sep 1, 2021
118
47
Xiaomi Redmi Note 4
LG V20
>anykernel.sh
I'm not using any script (at least knowingly), just zip(1L). Is it necessary?
>a bit too complicated
Not at all, I should be grateful for your time.
To flash a kernel, you need osmosis' anykernel template. It makes things much easier and skips a bunch of steps to flash a kernel into android phones.

In that case, are you just zipping the image.gz? If that's it, it would be best if you got a zip from a swan build, extracted it into a folder, replaced the image.gz-dtb with the one you compiled, added those lines above into the anykernel script, then zipped it all up to flash. Usually, the file structure in the flashable zip should be similar to the layout on the attached image right below.
 

Attachments

  • zip.png
    zip.png
    19.4 KB · Views: 5

wayase8080

Senior Member
Feb 27, 2021
60
10
To flash a kernel, you need osmosis' anykernel template. It makes things much easier and skips a bunch of steps to flash a kernel into android phones.

In that case, are you just zipping the image.gz? If that's it, it would be best if you got a zip from a swan build, extracted it into a folder, replaced the image.gz-dtb with the one you compiled, added those lines above into the anykernel script, then zipped it all up to flash. Usually, the file structure in the flashable zip should be similar to the layout on the attached image right below.
What I'm doing:
Downloaded the original Swan for vs995
Unzipped it
Replaced the Image.gz-dtb
Edited the anykernel.sh, pic related
1643648367063.png


Zipped it again (zip -r9 swan.zip swan/*)
Flashed it via TWRP

The zip's content:
1643648565697.png


Would that be the correct procedure?
 

AShiningRay

Senior Member
Sep 1, 2021
118
47
Xiaomi Redmi Note 4
LG V20

Top Liked Posts

  • There are no posts matching your filters.
  • 1
    Using swan kernel makes the device snappier but i get random reboots on h918.
    Not sure it ifs sdcard access related. I may test a bit more.
    I will need some logs to get a good indication about what might be causing those random reboots. Does it always happen when you're using it? If so, it might be related to the CPU clocks causing spikes in power consumption during app switches and etc, seeing as mk2000 also faces that same problem on some devices like the H990DS. This seems to be a device issue and not a kernel one (undervolting a lot might mitigate that, but it's not ideal since it may introduce other stability problems in the case of this kernel's Extreme version).

    If you have some time, and is running a rooted device, try getting Smartpack Kernel Manager or any other app that allows you to change CPU frequency, and drop the performance cores to 1824MHz or a bit lower and the low-power ones to around 1300MHz. After that those random problems should disappear, assuming the reboots are caused by power spikes.
    1
    IS THIS KERNEL COMPATIBLE WITH LG G5 H830 & WHAT ANDROID VERSION IS SUPPORTED ?
    In theory it might be compatible with pretty much any G5 variant supported by lineage, i just didn't compile a kernel for them since i don't have a G5 to test it so i'm hesitant on releasing something that might not even work in the end.
  • 9
    SwanKernelLogo.png


    A custom kernel for (most) V20 variants

    SwanKernel is an android kernel based on the latest Lineage OS 18.1 sources for the LG MSM8996 phones, aiming to bring those features and updates and improve them with some extra tuning, fixing and external features tailored specifically for the LG V20's performance characteristics and feature set, while trying to maximize the battery life and responsiveness of the device at the same time.​

    This kernel is based on Linux 3.18.140, and has become EOL with the last commit, as i don't think there's anything else that can be optimized for the V20 on this source anymore.

    Which phone variants/models does this kernel support?


    The kernel currently supports the following variants:
    • H910/H915
    • H918
    • H990
    • LS997
    • US996
    • VS995
    Support for other special variants like the US996Santa might come at a later date if needed.


    What does this kernel intend to achieve?

    The main goal here is to have a kernel that not only has extra features and improvements, but is also clean and concise, having only features that are truly needed from a kernel that will run alongside a Android 11-based ROM. One example of that is Kcal display control, a feature that is unnecessary here since most, if not all Android 11 ROMs have LiveDisplay for that exact same purpose and without the need to root. This helps the kernel have a smaller file size and lower processing overhead, as well as promote better maintainability.

    This kernel does have a battery life bias, but will still scale up to maximum performance when needed. No Overclocking is done for now.


    Does it have any features over stock?

    Yes, a lot. The kernel is divided into two variants, here are the features both variants have over stock:

    1. AdrenoBoost for improved GPU performance.
    2. GPU and CPU/Cache Undervolt for better power efficiency on load.
    3. CPU governors tuned for better battery life and thermal stability without impacting performance all that much.
    4. Almost no unnecessary debug flags on the kernel for better kernel performance.
    5. Westwood TCP Congestion Algorithm set as default in order to have better network performance and consistency.
    6. AutoSMP CPU Hotplug to shutdown the big cores when their stronger performance isn't needed, slightly improving battery life on light loads and idle.
    7. Disabled CPU Boost when a finger is detected on screen, preventing unnecessary frequency boosts when no meaningful action is done other than tapping on screen and slightly scrolling around. We have Schedutil to keep it smooth anyways.
    8. USB Fast Charge.
    9. Multiple cherry-picks from different msm8996 sources with fixes and improvements to the kernel.
    10. Configurable wakelock blocker (boeffla) for roms that have some "unneeded" wakelocks enabled by default and/or users that know which wakelocks can be blocked for better battery life.
    11. Anxiety IO Scheduler enabled by default, offering a read bias and lower latency in IO operations.
    12. Kernel updated to Linux 3.18.140 with some extra patches from Googlesource.
    13. Wireguard support, improving VPN performance.
    14. Cryptographic functions optimizations, slightly improving the phone's performance when calculating hashes and so on.

    The Extreme variant has some extra features over the Stable one, those being:
    1. Stronger Undervolts (i'm talking about borderline unstable undervolts here, so i really recommend that you flash the Stable one first).
    2. CPU Voltage Control if you need to setup a custom undervolt to keep it more stable and have no need to compile the kernel from source just to change the values... and that's assuming your phone even boots with this variant of the kernel.
    3. Disabled Battery BCL which eliminates the power throttling caused by the battery, just be careful when running demanding tasks while having almost no battery left.


    Are there any bugs?

    Right now, there's the dreaded Infrared Blaster, and it... kinda works? The IR is able to send the very first command i give to my LG TV without any problems after every reboot, but refuses to send anything else after that first command. The IR Blaster's light still works all the time though despite having some big delays between on/off states.


    Download & Installation

    The folders containing each kernel variant can be found here:
    To install the kernel, it's the standard procedure:
    1. Download the kernel you want for your device
    2. Place it into the phone
    3. Boot into recovery, select it and then flash
    4. Wipe Dalvik Cache (optional, you only need to wipe it if you face random Force Closes, but it is a good practice anyway)
    5. Reboot.
    6. Open any app that can check the device info and look for "kernel", where it will show "... 3.18.xxx-Swan" if it installed correctly. I personally use SmartPack for that, but it requires root.
    7. Enjoy the experience!


    Performance and Battery metrics
    And now to the kernel's real world performance. But before delving in, keep in mind that my refurbished H910 is apparently a Snapdragon 821 prototype, that's why you will see higher than normal performance and clock values on cpu matters even with the LITTLE cores underclocked to 1785MHz instead of 2188MHz, the snapdragon 820 ones should not have any underclock applied and will reach the max of 1593MHz on them. I also took the liberty of testing those on the Extreme variant as BCL often interferes with the performance results and the extra undervolt doesn't increase performance in any substantial way, 5-7% at most on Geekbench.

    Battery life:
    Screen SOT test (Youtube looping through a massive playlist of songs with some scrolling to change between them):
    Screenshot_20211025-185046214.jpgScreenshot_20211025-193015235.jpg

    Not very impressive, until you consider the battery currently powering it:
    Screenshot_20211025-185057599.jpg

    CPU/GPU Performance:

    CPU performance according to Geekbench 5.4.1 (there is some minor variance of about 15-21 points in multithread):
    Screenshot_20211025-195919247.jpg

    CPU sustained performance on CPU Throttling Test(running it for 15+ minutes barely changes the curve, as it stabilizes at around 80-82 Celsius, i suppose a Snap 820 will fare better here due to the lower clocks):
    Screenshot_20211025-194844892.jpg

    GPU general performance on GFXBench 5:
    Screenshot_20211025-205142387.jpg

    No copper shim replacement or thermal pad change was made, the phone's internal structure is still the same from when i bought it.

    Storage Performance:

    General IO performance in Androbench 5(Not very accurate, but welp, if anyone has a more in-depth one feel free to share):
    Screenshot_20211025-205621339.jpg

    And there we go, everything i could benchmark so far. This will not be the best kernel on every front so the stock kernel on Lineage 18.1, Lighthouse's kernel or mk2000 might suit you better depending on your needs.

    Changelog

    *********** Swankernel V1.09+ [Maintenance release] ***********
    1. CPU/Cache/GPU Voltages have basically reached the optimum point on both stable and extreme.
    2. Some performance commits were cherry-picked from newer kernels for other devices
    3. Dynamic FSync was disabled since it could cause data loss on some edge cases involving reboots.
    4. Improved some string routines and memory access functions, about 4% or so improvement on geekbench.
    *********** Swankernel V1.09 [Last 3.18 version, i think] ***********
    1. Minor performance and power-saving optimizations throughout the kernel
    2. CPU M4M cache undervolting (not really a big difference, but nice to have anyway).
    3. A few cherry-picked fixes for the 3.18 msm8996 kernel tree.
    4. Crypto function optimizations and HW acceleration for CRC32 Enabled.
    5. Not actually a kernel change but: Can now be flashed on android versions lower than 11.

    *********** Swankernel V1.08 ***********
    1. Small performance optimizations related to the voltage curves, especially in the GPU.
    2. PC USB Charging has been fixed and the phone can now be charged over it again.

    *********** Swankernel V1.06 ***********
    1. Upstreamed kernel to 3.18.140 + some extra patches, with more coming later.​
    2. Added Wireguard support for better VPN performance compared to IPSec.​
    3. Smaller fixes to the kernel zip files, improving compatibility with some models.​
    4. Minor performance optimizations, shouldn't be noticeable to the end user.​
    5. Now stable enough (at least the Stable version is) to be used as a daily driver.​

    *********** Swankernel V1.00 ***********
    Initial release. Has the features from 1 to 12 on both versions, and from 1 to 3 on the Extreme version.​

    Closing notes

    With V1.09, the kernel can now be flashed on basically any android version and should work out-of-the-box, although i didn't test it on stock roms at all and there are no reports of it working there, so it might not work on them.

    From what i could gather during the multiple Pre-Beta tests, the battery life improved considerably over the kernel shipped by default with Lighthouse V20 and even more when compared to Lineage's stock kernel.

    If you have any suggestion or idea that can possibly improve the kernel, do not hesitate to share, i will try to implement it when my time allows it. If there are any problems that only happen on this kernel, submit a log and i'll try to look at it.

    The kernel's source code can be found here.

    And last but not least, a special thanks for those that helped me even if indirectly:

    3
    Alright, with the recently released V1.09 i now deem this kernel EOL, or at least, its 3.18 version since i will now be focusing on porting 4.4 to the LG MSM8996 family of devices alongside @askermk2000, since that tree is still being actively developed by linux-stable and also contains a slew of general improvements to both security and performance over the current 3.18 source that i don't think can be further optimized or fixed. The IR is still in need of fixing, but at this point i think starting fresh from a clean source might prove more beneficial to solve it than looking around the entire kernel source again. But if any issues with that new release crop up, do tell me and i will try to provide support.
    2
    The ir is most likely consumer ir related so, we'll have to tweak it until it starts working
    2
    Hello when I try to flash Swan-H918-Stable.zip on an h918 I get "Unsupported device. Aborting..."
    Huh... that's strange. I must have messed something up during the anykernel zipping procedure on that model. I'm almost pushing an update to the kernel, so i'll be back in a while with a fix for that.

    Edit: Yeah, it was something in the script file, i forgot to change the H910 to H918 on that specific variant flashable. Sorry for that.
    I just pushed the file with the fixed script for all the models i checked. If you could test that, i would appreciate it.
    2
    Wow this Kernel is amazing! Thermals improved massively and the V20 runs much faster and smoother now. I'm able to do things that were impossible before like browse the web while watching Youtube. Duck Duck Go used to stutter when clearing my data, now it does it smoothly.

    Everything is faster while somehow the phone runs much colder. I still need to test my GCam and if I can take a few photos without crashing.

    I'm using the H990DS with Lineage 18.1. During the throttle 1 core stayed at 70C while others were around 60-65C (I'm using a thermal pad).

    wMdy5DJ5brSFPd05n_mBKCwOhYVDJR6Vjzx0jZqG2CjSu49-ox1wbRIeKsg2K6bgNJtjgt6Wr5Vyz8wSr7gAFIMd4jDQeu067ZUeTe5swd1rRFwx0s6es5YfIWKimlNZLKGTHYdigwLbnzYgtBaOhIPXXQz1wrG0BCuzCI4mjY7A-4WaV3ek5ypESqSq_2JuSOVVNcul0m0d9VnlLB2tnlsBxuyhm5ZDiMi6L2BtMxJHtlFiCnCYLESRdCtuC-0zm5IZ6TgljsIbKyRNWpn7H8y_aGrq7AZ2z_G65lsKzAUuMVAFdCcmcOvBJ4QUL8Zzj_c_Vk7Ts1WPptem2Htmmyrp8AZ33cnis4tchiloGvkmbw5BLNY6GOzWuegjkM-hUFtGVwBs2O0lDD9JVQZSrP7xjedS8sAdYiVETEdVzKouF0d8lutIp7epGRFjWGD1jaTtd9-l3P9vVxYo_FJ5KRtJ-tlx-2FNGt1nj8OFQddH6vUBFxza_tZDV5SrJvcUDtcRe52ZWgUF2BQ8u5fZIh7ErO1da0f1kXv0s4-LlAyaZ6YXx0rIJZrEMEwTS7WwCOsnErw2ec_Hz6mxPK4jO4OPPee_m1LS1EQKN5A1-OLaf1JwqUrNMSU98IgAcF-AVSF7kY-Am7z8U_BJWAYxtc8yyFA42GQFRTMhIncu8KaShmOzBX_lazgHyjwJU477CYu_ES9uX6DCEQwT4jcklOcneQ=w497-h937-no

    I bought a V60 as a replacement but now I don't even need it anymore, it's a shame I can't refund it now. Amazing job and thanks for all the devs keeping this phone alive. Might try Lighthouse later but I'm lazy to back up all my data for migration.
    Thanks! Happy to know the kernel is being useful to others as well. And a bit of a spoiler (xxseva already hinted at it in a few places, lol), but there's definitely a lot more coming for the V20, G5 and G6, although i can't share many details about it nor a ETA of when it will arrive. But if/when it arrives, you can expect Android 12 with a kernel that's essentially the best parts of Swan and mk2000 mashed together.