SHIFT SHIFTphone 8 (shift-otter)

From postmarketOS Wiki
🚧 This page is a work-in-progress. Some information contained within may be inaccurate or incomplete.
SHIFT SHIFTphone 8
Manufacturer SHIFT
Name SHIFTphone 8
Codename shift-otter
Released 2024
Type handset
Hardware
Chipset Qualcomm QCM6490
CPU Octa-core Kryo 670
GPU Adreno 643
Storage 256GB / 512GB (UFS 3.1)
Memory 12GB
Architecture aarch64
Software
Original software Android
Original version 14
postmarketOS
Category testing
Pre-built images no
Mainline yes
Features
Flashing
Broken
USB Networking
Broken
Internal storage
Broken
SD card
Broken
Battery
Broken
Screen
Broken
Touchscreen
Broken
Multimedia
3D Acceleration
Broken
Audio
Broken
Camera
Broken
Camera Flash
Broken
Connectivity
WiFi
Broken
Bluetooth
Broken
GPS
Broken
NFC
Broken
Modem
Calls
Broken
SMS
Broken
Mobile data
Broken
Miscellaneous
FDE
Broken
USB OTG
Broken
HDMI/DP
Broken
Sensors
Accelerometer
Broken
Magnetometer
Broken
Ambient Light
Broken
Proximity
Broken
Haptics
Broken
Barometer
Broken


Users owning this device

  • Amartinz (Notes: Still bringing it up)
  • Caleb (Notes: Board farm)
  • Caleb (Notes: Bringup)
  • Caleb (Notes: mainline bringup!)
  • Caleb (Notes: U-Boot without EDK2, EDL jumper)


Boot modes

By holding various button combinations while booting the device can be made to boot into different modes.

Unplug from USB, power off the device and press and hold the below buttons to enter the specific boot mode.

Boot mode Power Volume Up Volume Down
Fastboot Y Y N
Recovery Y N Y
EDL Y Y Y
Note There is a function key on the left side of the device, which is ignored for boot modes.

Bootloader

The bootloader (ABL) is supported by Fwupd and can be upgraded.

Unlock bootloader

To unlock the bootloader, you need to allow unlocking it via enabling OEM unlocking within Android.

  1. Go to Settings within Android and select About
  2. Tap on Build number seven times to enable developer options
  3. Go back and select System, Advanced and scroll down to Developer options
  4. Enable Advanced restart and OEM unlocking
  5. Reboot into bootloader by long pressing the power button, selecting Restart and Bootloader

After it has successfully rebooted into Fastboot mode, initiate unlocking the bootloader using fastboot:

$ fastboot flashing unlock

Please follow the prompts on the screen to finish unlocking the bootloader.

Icon WARNING: This will erase your data, please back up important data before unlocking the bootloader.

Customization

Custom AVB key

Note This is not fully relevant for postmarketOS, as AVB is currently unsupported, but documented for the future.

The bootloader has support for setting an user provided AVB key to allow relocking the bootloader if an OS with proper support is flashed.

This is realized with exposing a virtual partition avb_custom_key where the custom user key can be flashed to:

$ fastboot flash avb_custom_key avb_key.bin

For more information please refer to the commit FastbootCmds: oem device-info: check if user public key is set.

Developer mode

Note Toggling developer mode requires the bootloader to be unlocked.

Enabling it has the following effects:

  • Ignore slot retry counter
    • Disables marking slots as unbootable
  • Switch active slots within the bootloader GUI

To enable developer mode:

$ fastboot oem enable-developer-mode

To disable developer mode:

$ fastboot oem disable-developer-mode

To check the current status of developer mode:

$ fastboot oem device-info
(bootloader) Developer mode enabled: true/false

Mainline optimization

The bootloader supports additional fastboot oem commands to enable certain Quality of Life improvements when running mainline.

To enable mainline optimization:

$ fastboot oem enable-mainline-optimization

To disable mainline optimization:

$ fastboot oem disable-mainline-optimization

To check the current status of mainline support:

$ fastboot oem device-info
(bootloader) Mainline optimization enabled: true/false

Fastbootd

Fastbootd is a userspace implementation of Fastboot. For otter it is located within the recovery.

To access it, you can boot the recovery and select a menu option to enter fastbootd mode. Optionally you can also enter it via ADB and Fastboot:

$ # Enter fastbootd via adb
$ adb reboot fastboot
$ # Enter fastbootd via fastboot
$ fastboot reboot fastboot

You can only access dynamic partitions within fastbootd.

Note As fastbootd lives within the recovery, you need a valid recovery image installed in the currently active slot to access it.

Installation

Follow the pmbootstrap instructions to build your own image, using shift as the vendor and otter as the codename but stop before following flashing instructions, as these are different for otter.

There are currently different ways to install postmarketOS (only select one).

UBports Installer

Not yet supported, as it requires prebuilt images.

Manual installation on userdata partition

Installation on userdata is the most generic and universally supported way, however it does not allow for dual boot or utilizing the full flash storage of the device.

Reboot into Fastboot mode and install postmarketOS:

$ # Flash rootfs to userdata partition
$ pmbootstrap flasher flash_rootfs --partition userdata
$ # Flash kernel to boot
$ pmbootstrap flasher flash_kernel
$ # Flash vbmeta and disable AVB
$ pmbootstrap flasher flash_vbmeta --partition vbmeta
$ # Erase various boot related partition, as they conflict with our mainline kernel
$ # Note: this operation takes some time to complete
$ fastboot erase init_boot
$ fastboot erase dtbo
$ fastboot erase vendor_boot
$ # Reboot into postmarketOS
$ fastboot reboot
Note fastboot can sometimes misbehave, if any of the fastboot commands fail you should run fastboot reboot bootloader (or reboot manually using the interface on the device) and then repeat the failed command.

UART

To access UART, no soldering is required. Instead you can toggle a switch to turn UART via USB-C on or off.

When turned on via the switch, you can access UART logs via accessory devices while also using USB functionality itself.

This functionality was validated using USB-Cereal.

In case you do not want to purchase an already made product, you can also build it yourself following the instructions on GitHub.

The UART switch in toggled on state
USB-Cereal connected to retrieve UART logs via USB
Icon TODO: Upload related schematics and/or explain the wiring

Partition map

ls -la /dev/block/by-name/
 otter:/ # ls -la /dev/block/by-name/
 total 0
 drwxr-xr-x 2 root root 2140 1970-01-01 21:26 .
 drwxr-xr-x 6 root root 4020 2024-05-03 11:38 ..
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 ALIGN_TO_128K_1 -> /dev/block/sdd1
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 ALIGN_TO_128K_2 -> /dev/block/sdf1
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 abl_a -> /dev/block/sde8
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 abl_b -> /dev/block/sde32
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 aop_a -> /dev/block/sde1
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 aop_b -> /dev/block/sde25
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 apdp -> /dev/block/sde50
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 bluetooth_a -> /dev/block/sde5
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 bluetooth_b -> /dev/block/sde29
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 boot_a -> /dev/block/sde11
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 boot_b -> /dev/block/sde35
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 catecontentfv -> /dev/block/sde63
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 catefv -> /dev/block/sde62
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 cdt -> /dev/block/sdd2
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 connsec -> /dev/block/sde66
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 cpucp_a -> /dev/block/sde20
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 cpucp_b -> /dev/block/sde44
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 ddr -> /dev/block/sdd3
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 devcfg_a -> /dev/block/sde12
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 devcfg_b -> /dev/block/sde36
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 devinfo -> /dev/block/sde48
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 dip -> /dev/block/sde49
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 dsp_a -> /dev/block/sde9
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 dsp_b -> /dev/block/sde33
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 dtbo_a -> /dev/block/sde15
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 dtbo_b -> /dev/block/sde39
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 efi -> /dev/block/sda16
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 featenabler_a -> /dev/block/sde21
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 featenabler_b -> /dev/block/sde45
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 frp -> /dev/block/sda8
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 fsc -> /dev/block/sdf5
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 fsg -> /dev/block/sdf4
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 hyp_a -> /dev/block/sde3
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 hyp_b -> /dev/block/sde27
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 imagefv_a -> /dev/block/sde17
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 imagefv_b -> /dev/block/sde41
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 init_boot_a -> /dev/block/sda1
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 init_boot_b -> /dev/block/sda2
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 keymaster_a -> /dev/block/sde10
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 keymaster_b -> /dev/block/sde34
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 keystore -> /dev/block/sda6
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 limits -> /dev/block/sde52
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 limits-cdsp -> /dev/block/sde53
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 logdump -> /dev/block/sde57
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 logfs -> /dev/block/sde55
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 mdcompress -> /dev/block/sde65
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 mdtp_a -> /dev/block/sde7
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 mdtp_b -> /dev/block/sde31
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 mdtpsecapp_a -> /dev/block/sde6
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 mdtpsecapp_b -> /dev/block/sde30
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 metadata -> /dev/block/sda14
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 misc -> /dev/block/sda5
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 modem_a -> /dev/block/sde4
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 modem_b -> /dev/block/sde28
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 modemst1 -> /dev/block/sdf2
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 modemst2 -> /dev/block/sdf3
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 multiimgoem_a -> /dev/block/sde19
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 multiimgoem_b -> /dev/block/sde43
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 oem -> /dev/block/sda7
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 persist -> /dev/block/sda4
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 pstore -> /dev/block/sde58
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 qmcs -> /dev/block/sde23
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 quantumsdk -> /dev/block/sde56
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 qupfw_a -> /dev/block/sde13
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 qupfw_b -> /dev/block/sde37
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 qweslicstore_a -> /dev/block/sde24
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 qweslicstore_b -> /dev/block/sde47
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 rawdump -> /dev/block/sda15
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 recovery_a -> /dev/block/sda10
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 recovery_b -> /dev/block/sda11
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 rtice -> /dev/block/sde68
 lrwxrwxrwx 1 root root   14 1970-01-01 21:26 sda -> /dev/block/sda
 lrwxrwxrwx 1 root root   14 1970-01-01 21:26 sdb -> /dev/block/sdb
 lrwxrwxrwx 1 root root   14 1970-01-01 21:26 sdc -> /dev/block/sdc
 lrwxrwxrwx 1 root root   14 1970-01-01 21:26 sdd -> /dev/block/sdd
 lrwxrwxrwx 1 root root   14 1970-01-01 21:26 sde -> /dev/block/sde
 lrwxrwxrwx 1 root root   14 1970-01-01 21:26 sdf -> /dev/block/sdf
 lrwxrwxrwx 1 root root   14 1970-01-01 21:26 sdg -> /dev/block/sdg
 lrwxrwxrwx 1 root root   14 1970-01-01 21:26 sdh -> /dev/block/sdh
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 secdata -> /dev/block/sde61
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 shrm_a -> /dev/block/sde18
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 shrm_b -> /dev/block/sde42
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 splash -> /dev/block/sde51
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 ssd -> /dev/block/sda3
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 storsec -> /dev/block/sde59
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 super -> /dev/block/sda9
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 toolsfv -> /dev/block/sde54
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 tz_a -> /dev/block/sde2
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 tz_b -> /dev/block/sde26
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 tzsc -> /dev/block/sde67
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 uefisecapp_a -> /dev/block/sde16
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 uefisecapp_b -> /dev/block/sde40
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 uefivarstore -> /dev/block/sde60
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 userdata -> /dev/block/sda17
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 vbmeta_a -> /dev/block/sde14
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 vbmeta_b -> /dev/block/sde38
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 vbmeta_system_a -> /dev/block/sda12
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 vbmeta_system_b -> /dev/block/sda13
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 vendor_boot_a -> /dev/block/sde22
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 vendor_boot_b -> /dev/block/sde46
 lrwxrwxrwx 1 root root   16 1970-01-01 21:26 vm-data -> /dev/block/sde64
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 xbl_a -> /dev/block/sdb1
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 xbl_b -> /dev/block/sdc1
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 xbl_config_a -> /dev/block/sdb2
 lrwxrwxrwx 1 root root   15 1970-01-01 21:26 xbl_config_b -> /dev/block/sdc2
blkid
 otter:/ # blkid
 /dev/block/loop0: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop1: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop2: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop3: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop4: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop5: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop6: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop7: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop8: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop9: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop10: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop11: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop12: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop13: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop14: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop15: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/zram0: UUID="bae75ea3-febb-4fa3-8842-a95d09b93358" TYPE="swap"
 /dev/block/sda4: UUID="e1b05d4f-c2d5-4a4a-a74a-fe055854de83" TYPE="ext4"
 /dev/block/sda14: UUID="94b05294-e58f-419e-8fc6-05451b4d92a6" TYPE="ext4"
 /dev/block/sde4: SEC_TYPE="msdos" UUID="00BC-614E" TYPE="vfat"
 /dev/block/sde5: SEC_TYPE="msdos" UUID="00BC-614E" TYPE="vfat"
 /dev/block/sde9: LABEL="dsp" UUID="af32c008-2a39-7e5b-a5dc-201456d93103" TYPE="ext4"
 /dev/block/sde23: SEC_TYPE="msdos" UUID="402E-07B2" TYPE="vfat"
 /dev/block/sde28: SEC_TYPE="msdos" UUID="00BC-614E" TYPE="vfat"
 /dev/block/sde29: SEC_TYPE="msdos" UUID="00BC-614E" TYPE="vfat"
 /dev/block/sde33: LABEL="dsp" UUID="af32c008-2a39-7e5b-a5dc-201456d93103" TYPE="ext4"
 /dev/block/sde55: SEC_TYPE="msdos" LABEL="LOGFS" UUID="D273-55EA" TYPE="vfat"
 /dev/block/loop16: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop17: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop18: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop19: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop20: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop21: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop22: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop23: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop24: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop25: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop26: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop27: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop28: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop29: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop30: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop31: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop32: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop33: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop34: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop35: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop36: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop37: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop38: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop39: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
 /dev/block/loop40: UUID="7d1522e1-9dfa-5edb-a43e-98e3a4d20250" TYPE="ext4"
df -h
 otter:/ # df -h
 Filesystem        Size Used Avail Use% Mounted on
 /dev/block/dm-2   933M 930M  2.8M 100% /
 tmpfs             5.5G 1.9M  5.5G   1% /dev
 tmpfs             5.5G    0  5.5G   0% /mnt
 /dev/block/dm-5   5.9G 170M  5.8G   3% /mnt/scratch
 /dev/block/sda14   11M 192K   11M   2% /metadata
 overlay           5.9G 170M  5.8G   3% /system_ext
 overlay           5.9G 170M  5.8G   3% /product
 overlay           5.9G 170M  5.8G   3% /vendor
 overlay           5.9G 170M  5.8G   3% /odm
 overlay           5.9G 170M  5.8G   3% /system
 tmpfs             5.5G  36K  5.5G   1% /apex
 tmpfs             5.5G 760K  5.5G   1% /linkerconfig
 /dev/block/sda4    27M 4.6M   22M  18% /mnt/vendor/persist
 /dev/block/sde4   220M 180M   40M  82% /vendor/firmware_mnt
 /dev/block/sde9    59M  31M   28M  52% /vendor/dsp
 /dev/block/sde5    64M 464K   64M   1% /vendor/bt_firmware
 /dev/block/sde23   30M    0   30M   0% /mnt/vendor/qmcs
 /dev/block/dm-42  200G  14G  186G   7% /data
 tmpfs             5.5G    0  5.5G   0% /data_mirror
 /dev/block/loop5   42M  42M   32K 100% /apex/com.android.vndk.v34@1
 /dev/block/loop8  1.6M 1.5M   28K  99% /apex/com.google.mainline.primary.libs@341631000
 /dev/block/loop7  760K 732K   28K  97% /apex/com.android.tzdata@341510070
 /dev/block/loop10 1.0M 1.0M   28K  98% /apex/com.android.rkpd@1
 /dev/block/loop11  45M  45M   28K 100% /apex/com.android.vndk.v33@1
 /dev/block/loop6  312K 280K   32K  90% /apex/com.android.virt@2
 /dev/block/loop9  232K  96K  136K  42% /apex/com.android.apex.cts.shim@1
 /dev/block/loop12  38M  38M   32K 100% /apex/com.android.i18n@1
 /dev/block/loop16 108M 108M   28K 100% /apex/com.android.vndk.v30@1
 /dev/block/loop14 5.6M 5.6M   28K 100% /apex/com.android.devicelock@1
 /dev/block/loop17  10M  10M   40K 100% /apex/com.android.runtime@1
 /dev/block/loop15  40M  39M   28K 100% /apex/com.android.vndk.v32@1
 /dev/block/loop13  39M  39M   28K 100% /apex/com.android.vndk.v31@1
 /dev/block/dm-23  7.3M 7.3M   32K 100% /apex/com.android.neuralnetworks@341510000
 /dev/block/dm-40   26M  26M   28K 100% /apex/com.android.media.swcodec@341619000
 /dev/block/dm-41  8.0M 8.0M   28K 100% /apex/com.android.adbd@341520010
 /dev/block/dm-29  720K 692K   28K  97% /apex/com.android.sdkext@341510000
 /dev/block/dm-28  3.9M 3.8M   28K 100% /apex/com.android.resolv@341510000
 /dev/block/dm-39   11M  11M   32K 100% /apex/com.android.healthfitness@341613000
 /dev/block/dm-32  5.7M 5.7M   28K 100% /apex/com.android.conscrypt@341614000
 /dev/block/dm-37  3.6M 3.5M   28K 100% /apex/com.android.appsearch@341510000
 /dev/block/dm-34   50M  50M   44K 100% /apex/com.android.art@341615020
 /dev/block/dm-22   16M  16M   28K 100% /apex/com.android.cellbroadcast@341610000
 /dev/block/dm-20  6.1M 6.0M   32K 100% /apex/com.android.media@341619000
 /dev/block/dm-36  232K 104K  128K  45% /apex/com.android.scheduling@341510000
 /dev/block/dm-31   18M  18M   32K 100% /apex/com.android.permission@341614000
 /dev/block/dm-21  3.6M 3.6M   28K 100% /apex/com.android.os.statsd@341615000
 /dev/block/dm-26  7.4M 7.4M   28K 100% /apex/com.android.extservices@341620043
 /dev/block/dm-15   20M  20M   48K 100% /apex/com.android.adservices@341615050
 /dev/block/dm-16  8.0M 8.0M   32K 100% /apex/com.android.wifi@341610000
 /dev/block/dm-9    21M  21M   28K 100% /apex/com.android.tethering@341610020
 /dev/block/dm-12   12M  12M   32K 100% /apex/com.android.ondevicepersonalization@341610000
 /dev/block/dm-7   232K 196K   36K  85% /apex/com.android.configinfrastructure@341510000
 /dev/block/dm-25   11M  11M   28K 100% /apex/com.android.mediaprovider@341614010
 /dev/block/dm-27  3.6M 3.6M   28K 100% /apex/com.android.uwb@340090000
 /dev/block/dm-8   776K 748K   28K  97% /apex/com.android.ipsec@341611000
 /dev/fuse         200G  14G  186G   7% /mnt/installer/0/emulated

See also