It looks like Samsung has silently removed the option to unlock the bootloader from One UI 8.0 onwards as it has been reported by some users in the forum (here, here). By reversing the Settings app code we can take a deeper look about how and when the OEM Unlock toggle is shown:
-
-
-
-
Let's get back to the
In this little snippet of code we can also see every kind of code related to the unlocking of the bootloader gets stripped off entirely in the bootloader binary once it is compiled. Unfortunately, it turns out that non-US devices running One UI 8.0 have now this
This not only means that the OEM Unlock toggle is not visible at all inside the Settings app, it also means that the whole code which controls the bootloader unlocking has probably been entirely stripped off in the bootloader itself, meaning that a workaround to this is not possible in the worst case.
I'm opening this thread so we can all have a place to discuss about this and inform everyone who is either planning to buy a new Samsung device shipping with Android 16 or update their device once One UI 8.0 drops to acknowledge this.
Java:
@Override
public boolean isAvailable() {
return !SystemProperties.get("ro.frp.pst").equals("") &&
!SystemProperties.get("ro.boot.other.locked").equals("1") &&
!KnoxGuardManager.getInstance().shouldBlockCustomRom() &&
mOemLockManager != null;
}
-
!SystemProperties.get("ro.frp.pst").equals("")
checks whether the ro.frp.pst
property is not empty. This property contains the path to the persistent data partition used by FRP/OEM Unlock to store its status, and is normally set to /dev/block/persistent
.-
!SystemProperties.get("ro.boot.other.locked").equals("1")
checks whether the ro.boot.other.locked
property is not set to 1
. We're gonna look at this one in a moment.-
!KnoxGuardManager.getInstance().shouldBlockCustomRom()
checks whether the device is not KnoxGuard locked. The KnoxGuard status can be seen in Download mode and is considered to be locked with these values: Prenormal
, Active
, Locked
.-
mOemLockManager != null
check whether the OEM Lock system service is available. This code is the same as the one in AOSP (here), where the ro.oem_unlock_supported
property is checked.Let's get back to the
ro.boot.other.locked
property: previously this one would only be present on Samsung devices without the ability to unlock the bootloader such as US devices. This prop is passed to the userspace by the bootloader itself using the Linux kernel cmdline (or Android bootconfig on more recent devices), we can have a better look at this inside the Exynos bootloader source code that leaked in 2022:In this little snippet of code we can also see every kind of code related to the unlocking of the bootloader gets stripped off entirely in the bootloader binary once it is compiled. Unfortunately, it turns out that non-US devices running One UI 8.0 have now this
androidboot.other.locked
property set in cmdline (F761BXXU1AYFK below):This not only means that the OEM Unlock toggle is not visible at all inside the Settings app, it also means that the whole code which controls the bootloader unlocking has probably been entirely stripped off in the bootloader itself, meaning that a workaround to this is not possible in the worst case.
I'm opening this thread so we can all have a place to discuss about this and inform everyone who is either planning to buy a new Samsung device shipping with Android 16 or update their device once One UI 8.0 drops to acknowledge this.