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

[ROM][S9+/S9][UNOFFICIAL][LineageOS 18.1][Weekly]

Search This thread

gusnz

Member
May 12, 2013
30
8
Hi @Neurotical, thanks for porting some recent kernel patches! I tried to build your 4.9.275 kernel with Wireguard added but got an error:

Code:
net/wireguard/socket.c:139:40: error: called object type '<dependent type>' is not a function or function pointer

dst = ipv6_stub->ipv6_dst_lookup_flow(sock_net(sock), sock, &fl,

Vanilla synt4x93's kernel built with Wireguard was OK last month. Without the Wireguard patches your kernel's building normally, although I did have to export TEMPORARY_DISABLE_PATH_RESTRICTIONS=true prior to the WG build as it didn't like some of the common 9810 file setup process.

Thanks if you can see if you can build Wireguard? According to their build status page it's 4.9.275 compatible.
 
Last edited:

Neurotical

Senior Member
Feb 7, 2011
129
151
Hi @Neurotical, thanks for porting some recent kernel patches! I tried to build your 4.9.275 kernel with Wireguard added but got an error:

Code:
net/wireguard/socket.c:139:40: error: called object type '<dependent type>' is not a function or function pointer

dst = ipv6_stub->ipv6_dst_lookup_flow(sock_net(sock), sock, &fl,

Vanilla synt4x93's kernel built with Wireguard was OK last month. Without the Wireguard patches your kernel's building normally, although I did have to export TEMPORARY_DISABLE_PATH_RESTRICTIONS=true prior to the WG build as it didn't like some of the common 9810 file setup process.

Thanks if you can see if you can build Wireguard? According to their build status page it's 4.9.275 compatible.
Thanks for the feedback. I checked the kernel configuration and it appeared to be missing: IP: Foo (IP protocols) over UDP (NET_FOU) as per https://www.wireguard.com/compilation/

So I updated the kernel to enable this required feature: IP: Foo (IP protocols) over UDP (NET_FOU) [ ]->[*] and compiled a new ROM for you to try; it's uploaded to my support repo. To do this I made two small commits (one for starlte and one for star2lte) on the 4.9y_beta branch of the kernel in my repo.

I was able to install Wireguard from F-Droid and browse the app. However, I don't have a subscription to a VPN that supports Wireguard so I couldn't try configuring a server. Please let me know your experience :)
 

ElPakoTech

Member
Apr 18, 2020
19
28
Hi,

It’s really nice to see people continuing to work on maintaining kernel for Samsung S9/S9+, thanks a lot.

Is it OTA working for you now ? I started doing my own build few weeks ago and I had no issues with it (https://github.com/pakaoraki/OTA).

I’m curious about the fact that the original developer stop working on the "Lineage-18" branch on January and start to work on "4.9.118" instead: do you have any idea why ? Or if they had some issues with the 4.9.218 at that time ?

I did also some research of all forks and I found some patches :

-“Updated exynos fbdev driver “:
https://github.com/Ralayax/android_kernel_samsung_universal9810/commits/lineage-18.1
-Here some patch for "wireguard-linux-compat":
https://github.com/lolorc/android_kernel_samsung_universal9810-1/commits/lineage-18.1
https://github.com/lolorc/android_kernel_samsung_universal9810-1/commits/lineage-18.1-test

I didn’t test any, but I just wanted to share this with you, if it can help improving kernel.
 

waynea

Member
Mar 3, 2020
18
3
Update on boot loop.
I managed to flash twrp 3.4.0.0 and then an earlier version of the ROM.
I had earlier cleared cache and dalvik, and repaired the system file system.
This time it flashed OK! At least TWRP did not throw any errors
But still the boot loop persists. Any other suggestions? If going to let the battery run down overnight
 

teamacc

Member
Dec 10, 2011
47
17
Update on boot loop.
I managed to flash twrp 3.4.0.0 and then an earlier version of the ROM.
I had earlier cleared cache and dalvik, and repaired the system file system.
This time it flashed OK! At least TWRP did not throw any errors
But still the boot loop persists. Any other suggestions? If going to let the battery run down overnight
Hold volume up (might be down, memory kinda fuzzy) (might need to add bixby too to this) + lock for 10+ seconds, until the system reboots, keep holding it until the splash screen shows up. Hold it still, until the splash screen disapppears. At that point the device is shut down without needing to drain the battery.
 

gusnz

Member
May 12, 2013
30
8
So I updated the kernel to enable this required feature: IP: Foo (IP protocols) over UDP (NET_FOU) [ ]->[*]
Thanks for looking into it! Should have read more of the WG docs myself :). Looks like the config option is still commented out with a leading # in the 4.9y_beta source though.
To check it worked, you don't need a server, in the Wireguard app check its Settings. If it says "Go userspace backend" the kernel module failed, if it says "Kernel module backend" it worked.
 

Neurotical

Senior Member
Feb 7, 2011
129
151
Thanks for looking into it! Should have read more of the WG docs myself :). Looks like the config option is still commented out with a leading # in the 4.9y_beta source though.
To check it worked, you don't need a server, in the Wireguard app check its Settings. If it says "Go userspace backend" the kernel module failed, if it says "Kernel module backend" it worked.
Okay, I tried compiling the kernel too and got the same error. I think to pinpoint the issue we will have the patch every iteration of the kernel, starting at 4.9.219 and observe which batch of patches causes the failure. I did save every iteration as a separate branch in my repo, so if you have the time you can try that process. I'll try as well when I have time and see if I can fix the problem.

Note:
I did have an error installing the Wireguard recommended apps using:
$ sudo apt-get install libelf-dev linux-headers-$(uname -r) build-essential pkg-config
In particular linux-headers-$(uname -r) returned an error mentioning WSL2.
Could the compile problem be related to improper kernel header configuration as a result of using WSL2? Maybe the Wireguard team can help us?
 
Last edited:

Neurotical

Senior Member
Feb 7, 2011
129
151
Update on Wireguard:

Kernel 4.9.223 compiles well with the wireguard patch. But when I build the ROM with the patched kernel it still shows 'userspace' in the Wireguard app. Apparently root is required for Wireguard to check and see if kernal functionality is available. I haven't tried rooting with the patched 4.9.223 kernel yet.

I tried the next kernels, but had to skip patches for 224, 225, 226, and 227 so far... I am not sure how many more patches I have to skip to get to the next one that works well with the Wireguard patch, but I'll keep trying.
 
Last edited:

Neurotical

Senior Member
Feb 7, 2011
129
151

aureljared

Senior Member
May 2, 2013
949
659
jared.gq
Are broadcast messages working properly in this build? Normally I'd get alerts for severe rain here in my country, however today I received one such alert but in gibberish. My other devices all received the message properly encoded in the English alphabet. Perhaps there is an encoding issue in Lineage?

See below for the alert I received.
 

Attachments

  • Screenshot_20210723-200341_Wireless_emergency_alerts.png
    Screenshot_20210723-200341_Wireless_emergency_alerts.png
    196.9 KB · Views: 259
Last edited:

Neurotical

Senior Member
Feb 7, 2011
129
151
Are broadcast messages working properly in this build? Normally I'd get alerts for severe rain here in my country, however today I received one such alert but in gibberish. My other devices all received the message properly encoded in the English alphabet. Perhaps there is an encoding issue in Lineage?

See below for the alert I received.
View attachment 5368945
I have the same issue. I think it has to do with Lineage OS and may be a bug.
 
  • Like
Reactions: aureljared

garett_09

Senior Member
May 27, 2018
244
140
Update:
The kernel is now fully patched and up to date. I will be maintaining additional kernel updates as they are released by the Linux Long-Term Support kernel team for the 4.9y branch until 2023, which is EOL for that branch. These updates will be merged into the weekly builds as well. Enjoy!
thanks for the effort mate, this will be huge for the AOSP community. continue providing us with love and support!
 
  • Like
Reactions: Neurotical

aureljared

Senior Member
May 2, 2013
949
659
jared.gq
Hello

Do you have a solution to have the CTS profile ok? With root unable to have ok status.

Thank you,
If you're using Magisk, install these modules (1) MagiskHide Props Config and (2) Universal SafetyNet Fix. Enable Magisk Hide in Magisk Settings.

Using MagiskHide Props Config, change your device fingerprint to match the official Android 10 release for the S9/S9+. This involves the props command which you can access through ADB or a terminal app - refer to MagiskHide Props Config's wiki page for full instructions.

Reboot your device after editing fingerprint and SafetyNet should pass, with CTS profile match OK.
 

Attachments

  • Screenshot_20210727-021742_Core_Settings.png
    Screenshot_20210727-021742_Core_Settings.png
    58.8 KB · Views: 17
  • Like
Reactions: pyromannx

murtzsch

Member
May 10, 2014
36
20
Update on Wireguard:

Kernel 4.9.223 compiles well with the wireguard patch. But when I build the ROM with the patched kernel it still shows 'userspace' in the Wireguard app. Apparently root is required for Wireguard to check and see if kernal functionality is available. I haven't tried rooting with the patched 4.9.223 kernel yet.

I tried the next kernels, but had to skip patches for 224, 225, 226, and 227 so far... I am not sure how many more patches I have to skip to get to the next one that works well with the Wireguard patch, but I'll keep trying.

this is what I changed to make it compile :

Diff:
diff --git a/net/wireguard/compat/compat.h b/net/wireguard/compat/compat.h
index 91d4388824ea..9710908880d3 100644
--- a/net/wireguard/compat/compat.h
+++ b/net/wireguard/compat/compat.h
@@ -91,7 +91,7 @@
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) && LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 83)
 #define ipv6_dst_lookup_flow(a, b, c, d) ipv6_dst_lookup_flow(b, c, d)
-#elif (LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 5) && LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(5, 3, 18) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) && !defined(ISUBUNTU1904)) || (!defined(ISRHEL8) && !defined(ISDEBIAN) && !defined(ISUBUNTU1804) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 119) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 181) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 224) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 224) && !defined(ISUBUNTU1604) && !defined(ISRHEL7))
+#elif (LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 5) && LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(5, 3, 18) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) && !defined(ISUBUNTU1904)) || (!defined(ISRHEL8) && !defined(ISDEBIAN) && !defined(ISUBUNTU1804) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 119) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 181) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 999) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 224) && !defined(ISUBUNTU1604) && !defined(ISRHEL7))
 #define ipv6_dst_lookup_flow(a, b, c, d) ipv6_dst_lookup(a, b, &dst, c) + (void *)0 ?: dst
 #endif
 
@@ -932,7 +932,7 @@ static inline int skb_ensure_writable(struct sk_buff *skb, int write_len)
 }
 #endif
 
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 6, 0) && LINUX_VERSION_CODE >= KERNEL_VERSION(5, 5, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 102) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 178) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 223) && LINUX_VERSION_CODE > KERNEL_VERSION(4, 10, 0)) || LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 259) || defined(ISRHEL8) || defined(ISUBUNTU1804)
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 6, 0) && LINUX_VERSION_CODE >= KERNEL_VERSION(5, 5, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 102) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 178) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 223) && LINUX_VERSION_CODE > KERNEL_VERSION(4, 10, 0)) || LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 999) || defined(ISRHEL8) || defined(ISUBUNTU1804)
 #include <linux/icmpv6.h>
 #include <net/icmp.h>
 #if IS_ENABLED(CONFIG_NF_NAT)
 
  • Like
Reactions: Neurotical

The A.I. Project

New member
Jul 20, 2021
2
0
I just installed the latest version (2021-07-23, S9) and have issues with my microphone. Whether it's regular calls, app calling or recording. The input is very "faint", and there is some white noise. Does anybody have any experience with this...?

Thank you for any advice
 

Neurotical

Senior Member
Feb 7, 2011
129
151
this is what I changed to make it compile :

Diff:
diff --git a/net/wireguard/compat/compat.h b/net/wireguard/compat/compat.h
index 91d4388824ea..9710908880d3 100644
--- a/net/wireguard/compat/compat.h
+++ b/net/wireguard/compat/compat.h
@@ -91,7 +91,7 @@

#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) && LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 83)
#define ipv6_dst_lookup_flow(a, b, c, d) ipv6_dst_lookup_flow(b, c, d)
-#elif (LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 5) && LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(5, 3, 18) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) && !defined(ISUBUNTU1904)) || (!defined(ISRHEL8) && !defined(ISDEBIAN) && !defined(ISUBUNTU1804) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 119) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 181) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 224) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 224) && !defined(ISUBUNTU1604) && !defined(ISRHEL7))
+#elif (LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 5) && LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(5, 3, 18) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) && !defined(ISUBUNTU1904)) || (!defined(ISRHEL8) && !defined(ISDEBIAN) && !defined(ISUBUNTU1804) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 119) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 181) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 999) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 224) && !defined(ISUBUNTU1604) && !defined(ISRHEL7))
#define ipv6_dst_lookup_flow(a, b, c, d) ipv6_dst_lookup(a, b, &dst, c) + (void *)0 ?: dst
#endif

@@ -932,7 +932,7 @@ static inline int skb_ensure_writable(struct sk_buff *skb, int write_len)
}
#endif

-#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 6, 0) && LINUX_VERSION_CODE >= KERNEL_VERSION(5, 5, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 102) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 178) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 223) && LINUX_VERSION_CODE > KERNEL_VERSION(4, 10, 0)) || LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 259) || defined(ISRHEL8) || defined(ISUBUNTU1804)
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 6, 0) && LINUX_VERSION_CODE >= KERNEL_VERSION(5, 5, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 102) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 178) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 223) && LINUX_VERSION_CODE > KERNEL_VERSION(4, 10, 0)) || LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 999) || defined(ISRHEL8) || defined(ISUBUNTU1804)
#include <linux/icmpv6.h>
#include <net/icmp.h>
#if IS_ENABLED(CONFIG_NF_NAT)

Absolutely incredible! Thank you for this!!!

I have been able to successfully compile kernel 4.9.276 with the WireGurard patch!

I can confirm that Wigreguard is functioning through kernel (see attached image). Of course root is required, so I used magisk v23.

Please update via your OTA (or dl directly from repo) to receive the new ROM. Also, please check out my kernel branch to see the commits.

Screenshot_20210728-082736_WireGuard.png
 
Last edited:
  • Like
Reactions: francoism90

Top Liked Posts

  • There are no posts matching your filters.
  • 12
    Good day,

    I just want to take a moment to say thank you to everyone who has tried this ROM, given feedback, and even helped out along the way! It is with all of your help that I can keep the builds coming and I look forward to doing this for as long as I can for the S9 and the S9+ :) Our community deserves the best and that only happens when we all work together :)

    Have a great day, and thank you again to everyone in this community :)
    6
    A couple of questions as I am somewhat new:
    1. Why is this build unofficial resp. what is preventing this build to become official again (as starlte official was discontinued after LOS 17.1)?
    2. How trustworthy is an unofficial build compared to an official build?
    With regards to safety and trustworthiness:
    • Everything is open source so anyone can see what is going into the all the builds. This includes the kernel, Lineage OS, and Samsung device trees. These links are in the OP.
    • I don't make any changes of my own because I am not knowledgeable enough to do that, but I do copy kernel patches from the Linux Long-term Maintenance team run by Linus and Greg for the 4.9y branch; I can at least bug-test and roll them into the weekly ROM builds. Linus & Greg pretty much head up Linux entirely, so the patches they approve are as trustworthy as you can get :D
    • I also got the Wireguard kernel patch into this build, which is pretty awesome, but without the help of the contributors in the OP, I really wouldn't have been able to do it on my own.
    With regards to making it official:
    • I was using the official Lineage OS, but when the support for official status was dropped, I started learning how to build Lineage for unsupported devices. Then I came across Synt4x's repos, which gave me all the resources needed to build Lineage 18.1 for the S9 and S9+. I simply maintain kernel patches that come out weekly by the Linux Long-term Maintenance team (Linus & Greg et al.), work with the community here to maintain the device trees, and then compile the builds as often as needed.
    • After I got the hang of all this, I figured everyone who has an S9 or S9+ should be able to benefit form Lineage OS 18.1 support. These phones have great hardware and I think it a shame not to allow users the option to de-google it or take full control of it so soon after it has been released. Besides, the 4.9y kernel is going to be maintained until 2023. So I upgraded from a 3600 to a 5900x and 16gb RAM to 32gb RAM to speed up the builds (each build is only about 8 minutes now) and support the community!
    • I would like to see an official build, but I can't maintain it all by myself. I am not a programmer, and most of the code I look at is jibberish to me; I just trust the Linux team and Lineage OS team. So we need the community here to help me with build errors when the Lineage team makes changes to their OS; I'm not knowledgeable enough yet to tackle those problems on my own. But I am learning, and have successfully tackled two compile errors so far with the help of the community, and I've learned from them :D
    What you will get with this build, even though it is unofficial is:
    • Kernel updates straight from the Linux Long-term Maintenance team; this is very official and safe;
    • AOSP security patches straight from the Lineage group; this is very official and safe;
    • Lineage OS updates as they roll out; this is very official and safe;
    I literally can't do anything else because of my limited skillset.
    5
    A big thanks to you keeping this ROM up-to-date and my phone running :).

    Question are you planning or working towards making this ROM an official LineageOS ROM? See https://wiki.lineageos.org/submitting_device.html
    Thanks for the feedback! I would really enjoy seeing an official release for the S9 and the S9+ especially since these devices really are still relatively new and powerful. Also the 4.9y kernel will be maintained by Linus and Greg until January 2023, so security and performance can only get better!

    While I can run these ROM builds weekly or even daily, roll the Linux long-term maintenance patches into the build, do the same for the wireguard patches, I am still learning. When build errors occur I rely on the community here to help find solutions that fix it. There already have been a couple of issues with the build that I was unable to resolve on my own, but was able to fix quickly with the help of the community. They had to do with maintaining the "device tree", which I am becoming more familiar with. I think I need to come across more errors to build my skillset to a level that would warrant "official" status. I'm just guessing about that, so if I am way off base and there's even better support for these kind of things when the build goes "official" maybe I'll go ahead and do that!

    I would also highlight that Synt4x is the original creator of this ROM and I wouldn't want to take any credit away from that individual's hard work. I started by cloning his repos, not from scratch, then updating them accordingly. The kernel was a big one to update... something like 3,500 patches to get it all up to date with the 4.9y Linux long-term support team. Anyways, I think I would have to get blessing from Synt4x before I consider making it official, just out of respect.

    On a compromise note, I can be part of an official team, where I can keep updating the kernel, run the builds, and update the OTA, while another member who is more experienced could help with the troubleshooting or something.
    3
    Haven't tried NFC myself but @Neurotical I note ArrowOS has some patches for NFC and a few others things that could be useful in their universal9810 repo. Hope this helps!

    THANKS! I followed your advice and browsed the changes that Arrow had committed in their repo. I picked some CPU power enhancements and a change to the NFC feature, maybe it'll fix the issue.

    The new ROM is available to update via OTA or the OP.

    P.S. You're now on the OP as a contributor :D Thanks for helping us all learn more :)
    3
    FYI:

    New kernel 4.9.284 now available!
    Please update via OTA or download ROM via OP.

    Have a nice day!
  • 14
    2okPze5.png


    ROM DOWNLOADS:

    ROM INSTALL INSTRUCTIONS:
    • From OEM:
      • Lineage Recovery
      • Format /system + /data + /cache
      • Flash
      • Reboot
      • Root is not included. To root, install Magisk yourself.
    • From existing Unofficial weekly:
      • Use OTA, or
      • Sideload via ADB in recovery

    BASEBAND UPDATING:
    1. Install Samsung USB drivers
    2. Install Odin 3.14 (or later)
    3. Download updated baseband firmware from the XDA thread for your model phone.
    4. Unzip and re-pack "modem.bin" into a .tar file such as "modem.tar"
    5. Reboot phone into download mode
    6. Open Odin
    7. Load your modem.tar file into CP in Odin
    8. Start flash
    9. Reboot

    CONTRIBUTORS:

    SOURCE CODE:

    REFERENCES:

    REQUIREMENTS:
    • Stock Samsung Oneui 2 - 2.5 (Android 10) Firmware. (Bootloader + Vendor)

    WORKING:
    • GPS
    • NFC
    • Wi-Fi
    • Audio
    • HDMI
    • Camera
    • Ethernet
    • Bluetooth
    • MTP/ADB
    • Encryption
    • Glove Mode
    • Android Auto
    • OTA Updates
    • Call Recording
    • Mobile Network
    • SELinux Enforcing
    • Fingerprint Sensor
    • Wireguard (via kernel)

    BROKEN:
    • Iris Scanner
    • VoLTE

    XDA DevDB Information
    • LineageOS 18.1, ROM for the Samsung Galaxy S9

    Version Information
    • Status: Stable
    • ROM Firmware Required: Oneui 2 - 2.5

    My work will always be free for everyone to use and I will never hide anything behind a paywall.

    * We are not responsible for anything that may happen to your phone by installing custom ROMs/kernels.
    * You do it at your own risk. You take responsibility upon yourself and are not to blame us or XDA.
    * Your warranty will likely be voided by installing custom ROMs.
    12
    Good day,

    I just want to take a moment to say thank you to everyone who has tried this ROM, given feedback, and even helped out along the way! It is with all of your help that I can keep the builds coming and I look forward to doing this for as long as I can for the S9 and the S9+ :) Our community deserves the best and that only happens when we all work together :)

    Have a great day, and thank you again to everyone in this community :)
    7
    FYI:
    • Updated kernel 4.9.277
    • Wireguard kernel access persists through ROM update :)
    • Root with Magisk v23 persists through ROM update :)
    Enjoy!
    6
    A couple of questions as I am somewhat new:
    1. Why is this build unofficial resp. what is preventing this build to become official again (as starlte official was discontinued after LOS 17.1)?
    2. How trustworthy is an unofficial build compared to an official build?
    With regards to safety and trustworthiness:
    • Everything is open source so anyone can see what is going into the all the builds. This includes the kernel, Lineage OS, and Samsung device trees. These links are in the OP.
    • I don't make any changes of my own because I am not knowledgeable enough to do that, but I do copy kernel patches from the Linux Long-term Maintenance team run by Linus and Greg for the 4.9y branch; I can at least bug-test and roll them into the weekly ROM builds. Linus & Greg pretty much head up Linux entirely, so the patches they approve are as trustworthy as you can get :D
    • I also got the Wireguard kernel patch into this build, which is pretty awesome, but without the help of the contributors in the OP, I really wouldn't have been able to do it on my own.
    With regards to making it official:
    • I was using the official Lineage OS, but when the support for official status was dropped, I started learning how to build Lineage for unsupported devices. Then I came across Synt4x's repos, which gave me all the resources needed to build Lineage 18.1 for the S9 and S9+. I simply maintain kernel patches that come out weekly by the Linux Long-term Maintenance team (Linus & Greg et al.), work with the community here to maintain the device trees, and then compile the builds as often as needed.
    • After I got the hang of all this, I figured everyone who has an S9 or S9+ should be able to benefit form Lineage OS 18.1 support. These phones have great hardware and I think it a shame not to allow users the option to de-google it or take full control of it so soon after it has been released. Besides, the 4.9y kernel is going to be maintained until 2023. So I upgraded from a 3600 to a 5900x and 16gb RAM to 32gb RAM to speed up the builds (each build is only about 8 minutes now) and support the community!
    • I would like to see an official build, but I can't maintain it all by myself. I am not a programmer, and most of the code I look at is jibberish to me; I just trust the Linux team and Lineage OS team. So we need the community here to help me with build errors when the Lineage team makes changes to their OS; I'm not knowledgeable enough yet to tackle those problems on my own. But I am learning, and have successfully tackled two compile errors so far with the help of the community, and I've learned from them :D
    What you will get with this build, even though it is unofficial is:
    • Kernel updates straight from the Linux Long-term Maintenance team; this is very official and safe;
    • AOSP security patches straight from the Lineage group; this is very official and safe;
    • Lineage OS updates as they roll out; this is very official and safe;
    I literally can't do anything else because of my limited skillset.
    5
    FYI:

    Development has been halted due to a bug that Lineage team does not have the resources to fix:


    I would like to help, but I do not know how to maintain a device tree :(

    I am truly sorry that I cannot help the community any further, but if someone can teach me how to maintain this device tree, I would definitely commit myself to continuing to maintain this build.
    pick this and it will fix this problem