Manually Update Samsung Galaxy S10 To Android 10

After unlocking the bootloader on my S10e I was unable to flash an unofficial Lineage OS 17.1 (Android 10) ROM to my device. I was originally on the stock AT&T ROM which STILL (January 2021) hasn't been updated to Android 10. Most other carriers have released Android 10 for their S10 devices but AT&T not only is shipping devices with fully locked bootloaders but also aren't supporting their customers with updates. With the power of modern technology and a little ingenuity we can right these wrongs.

First you'll need an unlocked bootloader so you can flash your device with Odin. I was able to purchase an unlock for my S10e from SamPWND (read my article here) but if you already have an unlocked bootloader you're ready to flash.

Two tools are required for this update process. Frija for downloading the updated stock Android 10 ROM and Odin3 to flash your device in download mode.

Frija Download: https://forum.xda-developers.com/t/tool-frija-samsung-firmware-downloader-checker.3910594/

Odin3 Download: https://forum.xda-developers.com/t/patched-odin-3-13-1.3762572/

Downloading Stock Android 10

An Android 10 Custom Rom requires your device to already be on Android 10 to flash it successfully. Since AT&T hasn't released a version of Android 10 I used Frija to download a clean ROM. I needed to use the SPR (Sprint) code in CSC which specifies the carrier. Check for updates, then download. Frija will decrypt the update so you can use it with Odin.

Frija Download Tool

Once you've downloaded the update unzip it somewhere. You will have a few files that match the input fields in the Odin3 tool. Put your device into Download Mode and set each of the fields to their matching file from the update. Even the BL field. This will NOT relock your bootloader. You can flash TWRP or a custom recovery after you have verified you can boot into Stock Android 10.

Flash and Wait. Then your device should reboot into Android 10!

How To Hide Android 10 Q Navigation Bar

With Android 10 Q full gesture navigation is finally available. Google has unfortunately overlooked the option for users to simply hide the bottom navigation bar once they have become accustomed to the gestures. Thankfully there is already an app that will allow you to toggle the navbar’s visibility (well actually it just draws it below the screen). This can be done easily on rooted devices but it is also available to non-rooted phones as well. If your device DOES NOT have root access this requires a PC (Windows, Linux/BSD, or Mac) to enable the functionality.

This does NOT require your device to be rooted. The following ADB command does NOT void your devices warranty, you are just granting an additional permission to an app that is unavailable through the GUI.

If your device IS ALREADY rooted you can simply grant the app SuperUser and skip the command.

There are currently two apps that offer a toggle setting for the navigation bar once the required command has been run.

  1. Navigation Gestures - Swipe Gesture Controls! by XDA (recommended)
  2. Hide Navigation Bar by Manuel Wrage

If you are rooted: grant your selected app SuperUser, finish the on-boarding and enable the setting. Your navigation bar should now be off screen.

For those who aren’t rooted, lets now grant your selected app the secure settings permission. Depending on which app you decide to use the command will be slightly different as you are actually granting the specific app an additional system permission. 

Enable Developer Mode & USB Debugging

First you need to let your phone communicate with your PC via USB debugging.

Open your Android settings app, scroll to bottom and select “About Phone”, scroll to the bottom again and tap the build number seven(7) times, enable developer mode

Settings>About Phone>Tap Build Number 7 Times>Enable Developer Mode

Now that you’re a developer go back to the main settings page, select System, Advanced, Developer options, enable USB debugging 

Settings>System>Advanced>Developer options>USB debugging

Installing ADB

ADB or the Android Debug Bridge is available for all platforms. You can follow this in depth guide on XDA https://www.xda-developers.com/install-adb-windows-macos-linux/

If you’re on Linux you should be able to install ‘android-tools-adb’ on any Debian or Ubuntu based system. https://packages.debian.org/buster/android-tools-adb

On Arch/Manjaro systems ADB is provided through the ‘android-tools’ package. https://www.archlinux.org/packages/community/x86_64/android-tools/

Once you have some kind of ADB binary on your system you can now plug in and trust your device, then run the following command depending on which of the toggle apps you’ve chosen.

Navigation Gestures - Swipe Gesture Controls! by XDA

adb shell pm grant com.xda.nobar android.permission.WRITE_SECURE_SETTINGS

Hide Navigation Bar by Manuel Wrage

adb shell pm grant com.ivianuu.hidenavbar android.permission.WRITE_SECURE_SETTINGS

If you get an error about the device not being trusted, unlock your device and trust your PC for USB debugging.

After you have successfully granted the app the permission you’re done! Now enter the app and toggle the setting on or off whenever you want!