Google Pixel 2 XL (google-taimen)
This device has been tested with postmarketOS, but its device package has not yet been added to the postmarketOS repositories. This means that it cannot be selected in pmbootstrap. Status: Boots but no display output |
Manufacturer | |
---|---|
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 |
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
- 8osm3rka
- Crashniels (Notes: Custom ROM)
- Crashniels (Notes: Custom ROM and in use)
- Jason123santa (Notes: Locked bootloader)
- Kcxt (Notes: WIP mainline)
- Russanandres (Notes: DEAD Bootloader)
- Thejsa (Notes: Spare phone)
- Win.exe