Upgrading LineageOS 19 to 20 on a Samsung Galaxy S10

Guide, Mobile

May 04, 2023

Time for another major LineageOS upgrade: 19 to 20. Because it’s a major version change, this upgrade is a manual process. I was done in maybe 15-20 minutes; there’s no need to wipe your data. It was mostly the same as from 18 to 19, but I had to fix enterprise WiFi connections and root access.

I first upgraded firmware with heimdall as shown here (for installation of heimdall see here). Then I followed the upgrade instructions in the wiki, flashing both MindTheGapps and Magisk 23 before rebooting. The installation process is described in more detail in a previous post, here it was mostly the same, only using newer files.

Post-installation, I had two big things to fix. Also, the screen and font size was way off for some reason, but that’s just a change in the Settings app.

Enterprise WiFi. In Android 13, I no longer have the option to skip certificate validation when configuring a WPA2 Enterprise connection. This is a good thing, as long as the institutions whose connections I use update their instructions. One of them provided certificates I could download through a web page. For the other, I thankfully already had the connection set up on my macOS computer. To set up the phone, I opened Keychain Access on the laptop, searched the name of the institution, looked at the ‘issued by’ field of the certificate in the search results and noted its domain name, searched the name of that issuer, exported the found certificate, sent it to my phone with adb push, installed it through settings, and then I could add the WiFi connection with that certificate and the domain name found in Keychain Access. There’s probably a similar method for exporting certificates on Windows and Linux. Sidenote: whoever designed the WiFi connection screens on Android should be condemned to eternal configuration of enterprise WiFi, because the interface sucks and gives you no information whatsoever. Do you know what it tells you when a connection configuration failed? “Saved”.

Root access with Magisk. Magisk 23 no longer worked on LineageOS 20. Perhaps for the better - it was 3 major versions behind, and it’s probably better to keep a root access solution up to date. I’d stayed on version 23 because version 24 changed the approach a lot, and when I’d previously tried to upgrade, I couldn’t get SafetyNet to work. However, with this upgrade, I installed version 26: I downloaded the APK, changed the extension to .zip, put it on my phone’s SD card with adb push, restarted to LineageOS Recovery, clicked “apply update”, and chose the Magisk zip file – user data does not get wiped when using this method. Then, I configured a SafetyNet bypass following the first couple of posts on this thread. Everything works well, and the built-in MagiskHide takes care of convincing apps that my device isn’t rooted (you can check it with RootBeer). SafetyNet can be checked with YASNAC.

If I run into anything else, I’ll update this post.