Jump to content

Google Pixel 2 XL (google-taimen)

From postmarketOS Wiki
Google Pixel 2
XL
Manufacturer Google
Name Pixel 2
XL
Codename google-taimen
Released 2017
Type handset
Hardware
Chipset Qualcomm Snapdragon 835 (MSM8998)
CPU Octa-core (4x 2.45 GHz Kryo 280
4x 1.9 GHz Kryo 280)
GPU Adreno 540
Display 1080 x 1920 / 1440 x 2880 AMOLED
Storage 64/128/256 GB
Memory 4 GB
Architecture aarch64
Software
Original software
The software and version the device was shipped with.
Android 8.0
Extended version
The most recent supported version from the manufacturer.
Android 11 (Linux 4.4)
postmarketOS
Mainline
Instead of a Linux kernel fork, it is possible to run (Close to) Mainline.
no
pmOS kernel
The kernel version that runs on the device's port.
5.10-rc2
Features
Flashing
It is possible to flash the device with pmbootstrap flasher.
Works
USB Networking
After connecting the device with USB to your PC, you can connect to it via telnet (initramfs) or SSH (booted system).
Works
Battery
Charging and battery level reporting works
Broken
Screen
Display works. Ideally with sleep mode and brightness control.
Broken
Touchscreen
Untested
Multimedia
3D Acceleration
Untested
Audio
Audio playback, microphone, headset and buttons.
Untested
Camera
Untested
Connectivity
WiFi
Untested
Bluetooth
Untested
GPS
Untested
Modem
Calls
Untested
SMS
Untested
Mobile data
Untested
Miscellaneous
FDE
Full disk encryption and unlocking with unl0kr.
Untested
USB OTG
USB On-The-Go or USB-C Role switching
Untested
Sensors
Accelerometer
Auto screen rotation works in desktops e.g. Phosh or Plasma Mobile
Untested

This page documents the status of mainline Linux on the Pixel 2 XL!


Status

The device boots Mainline with basic DTS support, USB networking is enough to get to a shell. "clk_ignore_unused" is needed to prevent unused clocks causing the device to crash early in boot.

pstore

Due to having to cold reboot the device, pstore becomes extremely corrupt as memory loses power for a short amount of time. I was able to partially counter this and get /almost/ readable pstore (https://s.connolly.tech/pstore.jpeg) by putting the device in a freezer and then keeping it on ice.

I would not recommend this as it could damage the battery, instead you can build a serial cable by following the instructions here.

Partition Map

Map of partitions on Casey's Pixel 2 XL

taimen:~# ls -lah /dev/block/bootdevice/by-name/

 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 abl_a -> /dev/block/sde6
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 abl_b -> /dev/block/sde20
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 aes_a -> /dev/block/sda10
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 aes_b -> /dev/block/sda11
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 align_parti -> /dev/block/sda12
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 apdp -> /dev/block/sde29
 lrwxrwxrwx 1 root root   36 1970-01-02 05:02 boot -> /dev/block/bootdevice/by-name/boot_b
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 boot_a -> /dev/block/sde8
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 boot_b -> /dev/block/sde22
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 cdt -> /dev/block/sdd1
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 cmnlib64_a -> /dev/block/sde10
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 cmnlib64_b -> /dev/block/sde24
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 cmnlib_a -> /dev/block/sde9
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 cmnlib_b -> /dev/block/sde23
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 ddr -> /dev/block/sdd2
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 devcfg_a -> /dev/block/sde11
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 devcfg_b -> /dev/block/sde25
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 devinfo -> /dev/block/sde34
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 dip -> /dev/block/sde35
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 dpo -> /dev/block/sde36
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 dtbo_a -> /dev/block/sde13
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 dtbo_b -> /dev/block/sde27
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 frp -> /dev/block/sdg1
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 fsc -> /dev/block/sdf3
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 fsg -> /dev/block/sde32
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 ftm -> /dev/block/sda6
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 hyp_a -> /dev/block/sde3
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 hyp_b -> /dev/block/sde17
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 keymaster_a -> /dev/block/sde7
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 keymaster_b -> /dev/block/sde21
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 laf_a -> /dev/block/sda1
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 laf_b -> /dev/block/sda2
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 limits -> /dev/block/sde37
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 logfs -> /dev/block/sde39
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 metadata -> /dev/block/sde41
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 misc -> /dev/block/sda5
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 modem_a -> /dev/block/sde5
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 modem_b -> /dev/block/sde19
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 modemst1 -> /dev/block/sdf1
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 modemst2 -> /dev/block/sdf2
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 msadp -> /dev/block/sde30
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 persist -> /dev/block/sda4
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 pmic_a -> /dev/block/sde4
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 pmic_b -> /dev/block/sde18
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 pstore -> /dev/block/sda9
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 rpm_a -> /dev/block/sde1
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 rpm_b -> /dev/block/sde15
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 sec -> /dev/block/sde33
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 ssd -> /dev/block/sda3
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 sti -> /dev/block/sde40
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 storsec -> /dev/block/sde31
 lrwxrwxrwx 1 root root   38 1970-01-02 05:02 system -> /dev/block/bootdevice/by-name/system_b
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 system_a -> /dev/block/sda7
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 system_b -> /dev/block/sda8
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 toolsfv -> /dev/block/sde38
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 tz_a -> /dev/block/sde2
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 tz_b -> /dev/block/sde16
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 userdata -> /dev/block/sda13
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 vbmeta_a -> /dev/block/sde12
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 vbmeta_b -> /dev/block/sde26
 lrwxrwxrwx 1 root root   38 1970-01-02 05:02 vendor -> /dev/block/bootdevice/by-name/vendor_b
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 vendor_a -> /dev/block/sde14
 lrwxrwxrwx 1 root root   16 1970-01-02 05:02 vendor_b -> /dev/block/sde28
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 xbl_a -> /dev/block/sdb1
 lrwxrwxrwx 1 root root   15 1970-01-02 05:02 xbl_b -> /dev/block/sdc1

Installation

Unlock the bootloader

Before installing postmarketOS you have to unlock your bootloader (aka OEM unlock). This can be accessed by enabling Developer Mode.

If your device's original carrier was Verizon

You will not be able to unlock the bootloader on any Verizon taimen/walleye unless your device is on an ancient Android 8.0.0 release. Verizon devices have the OEM Unlock option greyed out permanently.

Community Info

postmarketOS users that own the device

Maintainers

See also