Samsung Galaxy S24 Ultra (samsung-e3q)

From postmarketOS
Samsung Galaxy S24 Ultra
File:Samsung-e3q.jpg
Manufacturer Samsung
Name Galaxy S24 Ultra
Codename samsung-e3q
Model SM-S928B
Released 2024
Category testing
Pre-built images no
Original software Android (One UI)
Original version 14 (One UI 6.1)
Hardware
Chipset Qualcomm Snapdragon 8 Gen 3 (SM8650)
CPU 8-core (1x3.40GHz Cortex-X4 & 3x3.15GHz Cortex-A720 & 2x2.96GHz Cortex-A720 & 2x2.26GHz Cortex-A520)
GPU Adreno 750
Display 1440 x 3120 (120Hz 6.8" LTPO AMOLED)
Storage 256 GB / 512 GB / 1 TB
Memory 12 GB
Architecture AArch64
Type handset
This device is marked as not booting.
Features
USB Networking
Works
Flashing
Works
Touchscreen
Broken
Display
Broken
WiFi
Broken
FDE
Works
Mainline
Partial
Battery
Broken
3D Acceleration
Broken
Audio
Broken
Bluetooth
Broken
Camera
Broken
GPS
Broken
Mobile data
Broken
Internal storage
Works
SMS
Broken
Calls
Broken
USB OTG
Broken
NFC
Broken
Sensors
Accelerometer
Broken
Magnetometer
Broken
Ambient Light
Broken
Proximity
Broken
Hall Effect
Broken
Barometer
Broken
Power Sensor
Broken
Misc
Camera Flash
Broken
HDMI/DP
Broken
Stylus
Broken
Haptics
Broken


Users owning this device

  • Ungeskriptet (Notes: Exclusive blue color; Mainline incoming!)


How to enter flash mode

  • Download mode: Hold Volume Up and Volume Down while connecting the device to a computer with a USB cable.
  • Recovery mode: Hold Volume Up and Power while connecting the device to a computer with a USB cable.

How to unlock bootloader

Icon WARNING: This process will wipe all user data and will irreversibly trip Knox.
  1. Enable OEM unlocking in the developer options
  2. Reboot into download mode
  3. At the blue warning screen, hold Volume Up
  4. On the second screen, press Volume Up to unlock the bootloader

Mainline

A work-in-progress mainline kernel is being developed here. (Will be upstreamed as soon as possible)

Mainline status and hardware

Component Model Status Mainline driver available? Notes
Display Samsung E3_S6E3HAF_AMB679FN01 N N Command mode, DSC, Single DSI
Touchscreen Synaptics S3916T N N
Pen input Wacom WEZ02 N N
USB-C USB 2.0 (TI eUSB2 repeater) Y P Driver from sm8450-mainline
USB 3.1 Gen 2 N Y Booting with fw_devlink=permissive breaks USB
DisplayPort N Y
Camera Samsung ISOCELL S5KHP2 N N Main camera
Samsung ISOCELL S5K3LU N N Front camera
Sony IMX564 N N Ultrawide
Sony IMX754 N N Telephoto
Sony IMX854 N N Periscope Telephoto
Accelerometer & Gyroscope STMicroelectronics LSM6DSV / LSM6DSO N Y Datasheet
Ambient light sensor Sensortek STK33F11 N N Front
Sensortek STK6D2X N N Rear, maybe for laser autofocus?
Proximity sensor Samsung Palm Proximity Sensor V2 N N Virtual sensor :/
Magnetometer AKM AK09918 N N Datasheet
Barometer STMicroelectronics LPS22DF N Y Datasheet
Hall effect Hall IC N N
Charger NXP PCA9481 N N Datasheet; Direct charger
NuVolta NU1668 N N Wireless charger
PMIC Maxim MAX77775 N N Fuel gauge & main charger
Samsung S2DOS07 N N Display PMIC
Samsung S2MPB03 N N Camera PMIC
Samsung S2MPB02 N N Camera PMIC
eSIM Samsung S3K250AF N N
NFC NXP PN547 N Y
Audio Cirrus Logic CS35L43 N N 2x, One for each speaker
Haptics Cirrus Logic CS40L26 N P Driver available on LKML
Fingerprint sensor Qualcomm QFS4008 N N

Miscellaneous info

Creating empty dtbo image

Simply erasing the dtbo partition is not enough to make mainline boot on this phone. In order to make it boot we need to sign an empty dtbo image with avbtool:

$ dd if=/dev/zero of=empty_dtbo.img count=1
$ avbtool add_hash_footer --partition_name dtbo --partition_size 16777216 --image empty_dtbo.img
$ heimdall flash --DTBO empty_dtbo.img

If the phone still boots to the blue download screen, make sure stock vbmeta is flashed.

simplefb

Since at least the "SM Gen 4"/Waipio era, abl checks if a node named exactly /reserved-memory/splash_region exists in the device tree. If not, it will disable the display hardware:

ret = FdtPathOffset (fdt, "/reserved-memory/splash_region");
if (ret < 0) {
  DEBUG ((EFI_D_WARN, "Splash region not found in device tree, " \
                      "powering down the display and controller\n"));

Command to create boot.img

$ make O=output-e3q ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc) defconfig sm8650.config
$ make O=output-e3q ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc) &&
rm -f output-e3q/arch/arm64/boot/Image-dtb output-e3q/arch/arm64/boot/boot.img &&
cat output-e3q/arch/arm64/boot/Image.gz output-e3q/arch/arm64/boot/dts/qcom/sm8650-samsung-e3q.dtb > output-e3q/arch/arm64/boot/Image-dtb &&
mkbootimg --kernel output-e3q/arch/arm64/boot/Image-dtb \
        --ramdisk /tmp/postmarketOS-export/initramfs \
        --pagesize 4096 \
        --kernel_offset 0x8000 \
        --ramdisk_offset 0x2000000 \
        --second_offset 0x0 \
        --tags_offset 0x0 \
        --header_version 0 \
        -o output-e3q/arch/arm64/boot/boot.img &&
(adb reboot download; heimdall flash --BOOT output-e3q/arch/arm64/boot/boot.img)

See also