Jump to content

SHIFT SHIFT6mq (shift-axolotl)

From postmarketOS Wiki
Revision as of 18:47, 14 August 2022 by Frozenintegral (talk | contribs) (Add note about potential need to re-flash in dual-boot scenario (I needed to do this))
SHIFT SHIFT6mq
SHIFT SHIFT6mq (axolotl)
SHIFT SHIFT6mq (axolotl)
Manufacturer SHIFT
Name SHIFT6mq
Codename shift-axolotl
Released 2020
Hardware
Chipset Qualcomm SDM845 Snapdragon 845
CPU Octa-core (4x 2.8 GHz Kryo 385 Gold & 4x 1.7 GHz Kryo 385 Silver)
GPU Adreno 630
Display 1080 x 2160 AMOLED
Storage 128 GB UFS 2.1
Memory 8 GB
Architecture aarch64
Software
Original software Android 10.0
postmarketOS
Category community
Pre-built images yes
postmarketOS kernel Mainline
Features
Flashing
Works
USB Networking
Works
Internal storage
No data
SD card
No data
Battery
Works
Screen
Works
Touchscreen
Works
Multimedia
3D Acceleration
Works
Audio
Broken
Camera
Broken
Camera Flash
No data
Connectivity
WiFi
Works
Bluetooth
Works
GPS
Broken
NFC
Broken
Modem
Calls
Broken
SMS
Works
Mobile data
Works
Miscellaneous
FDE
Works
USB OTG
Broken
HDMI/DP
No data
Sensors
Accelerometer
Broken
Magnetometer
No data
Ambient Light
No data
Proximity
No data
Hall Effect
No data
Haptics
No data
Barometer
No data


Contributors

Users owning this device


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 Up Down
Fastboot Y Y N
Recovery Y N Y
EDL Y Y Y

Bootloader

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.

Warning 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.

Mainline support

Bootloaders since version 202205227 support additional fastboot oem commands to enable certain Quality of Life improvements when running mainline.

For example this will ignore the slot retry count, until we have userspace support for marking bootup attempts as successful.

To enable mainline support:

$ fastboot oem enable-mainline-support

To disable mainline support:

$ fastboot oem disable-mainline-support

To check the current status of mainline support:

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

Fastbootd

Fastbootd is a userspace implementation of Fastboot. For axolotl 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 installation guide's "Initialization" section, using shift as the vendor and axolotl as the codename but stop before following flashing instructions, as these are different for axolotl.

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

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
$ # Erase dtbo partition, as it conflicts with our mainline kernel
$ # Note: this operation takes some time to complete
$ fastboot erase dtbo
$ # 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.

Installation on super partition

Warning WARNING: This is currently work in progress and actively worked on.

First select a slot (a or b) you want to install postmarketOS on.

Note This guide assumes you want to install onto the a slot. Replace a with b depending on the slot you want to install on.

To install on super partition, a valid recovery with proper fastbootd implementation needs to be installed into the slot, which you want to install postmarketOS on. You can download the stock recovery image, provided by the manufacturer and install it within Fastboot mode:

Note You can select the slot to install on via appending _SLOT to the partition name (for example boot_a, boot_b, ...).
$ # Install recovery in "a" slot
$ fastboot flash recovery_a recovery_stock.img

Enter Fastbootd and ensure it is working as expected:

$ # Set "a" as active slot and reboot to fastbootd
$ fastboot --set-active=a
$ fastboot reboot fastboot
$ # Verify current slot is "a"
$ fastboot getvar current-slot

After you verified fastbootd works in the slot you have selected, you can install postmarketOS:

$ # Flash rootfs to system_a partition
$ pmbootstrap flasher flash_rootfs --partition system_a
$ # Flash kernel to boot
$ pmbootstrap flasher flash_kernel --partition boot_a
$ # Reboot to bootloader, as erasing dtbo is not working in fastbootd
$ fastboot reboot bootloader
$ # Erase dtbo_a partition, as it conflicts with our mainline kernel
$ # Note: this operation takes some time to complete
$ fastboot erase dtbo_a
$ # Reboot into postmarketOS
$ fastboot reboot

The phone will now always boot into postmarketOS until you switch slots with fastboot again:

$ fastboot --set-active=b
Note If you are unable to boot into your former OS after installing postmarketOS and then switching back to the previous slot, you may have to re-flash the image (e.g. from here) by booting to recovery and sideloading via adb.

Partition map

 1|axolotl:/ # blkid
 /dev/block/zram0: UUID="663a3d49-89cc-4d71-8c4c-9ad121939171" TYPE="swap" 
 /dev/block/sda2: UUID="e31914f5-d01b-4e08-97bd-d8e0f406764d" TYPE="ext4" 
 /dev/block/sda8: UUID="91f68f2a-3821-47bf-8d9d-7d705b2d5ab0" TYPE="ext4" 
 /dev/block/sda9: UUID="d5b3f5fa-dbd4-4cc5-9b9d-8550ad9c74a7" TYPE="f2fs" 
 /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/sde26: SEC_TYPE="msdos" UUID="00BC-614E" TYPE="vfat" 
 /dev/block/sde27: SEC_TYPE="msdos" UUID="00BC-614E" TYPE="vfat" 
 /dev/block/sde31: LABEL="dsp" UUID="af32c008-2a39-7e5b-a5dc-201456d93103" TYPE="ext4" 
 /dev/block/sde54: SEC_TYPE="msdos" LABEL="LOGFS" UUID="D273-55EA" TYPE="vfat" 


 axolotl:/ # df -h                                                                                                    
 Filesystem      Size Used Avail Use% Mounted on
 tmpfs           3.7G 1.5M  3.7G   1% /dev
 tmpfs           3.7G    0  3.7G   0% /mnt
 /dev/block/sda8  11M 160K   11M   2% /metadata
 /dev/block/dm-1 1.2G 849M  476M  65% /
 /dev/block/dm-2 971M 489M  482M  51% /system_ext
 /dev/block/dm-0 1.8G 378M  1.4G  21% /product
 /dev/block/dm-3 732M 482M  250M  66% /vendor
 tmpfs           3.7G 8.0K  3.7G   1% /apex
 tmpfs           3.7G 524K  3.7G   1% /linkerconfig
 /dev/block/sda2  27M 0.9M   26M   4% /mnt/vendor/persist
 /dev/block/sde5  64M 704K   63M   2% /vendor/bt_firmware
 /dev/block/sde4 120M 115M  5.0M  96% /vendor/firmware_mnt
 /dev/block/sde9  27M  24M  3.1M  89% /vendor/dsp
 /dev/block/dm-8 101G 1.7G  100G   2% /data
 tmpfs           3.7G    0  3.7G   0% /data_mirror
 /data/media     101G 1.7G  100G   2% /mnt/runtime/default/emulated
 /dev/fuse       101G 1.7G  100G   2% /mnt/user/0/emulated


See also