Google Pixel (google-pixel)

Contributors

 * ojbr
 * steamport

Maintainers
-

Pixel / Pixel XL
The Pixel (sailfish) and Pixel XL (marlin) share identical kernel architectures. This port should work for both devices.

What works

 * Kernel compilation
 * Flashing
 * Booting kernel (partial boot with serial logging - panics / halts)

What does not work

 * SSH over USB
 * Touch
 * Screen
 * WiFi
 * Bluetooth
 * Camera
 * GPS
 * Modem

Partition Layout
Out of the box, the Google Pixel uses an A/B partition layout. Both slots are known working. Should you need to change slots, this can be done with:
 * 1) fastboot set_active a
 * 2) fastboot reboot bootloader

~#: fdisk -l /dev/block/sda

bootlocker_a   bootlocker_b keymaster_a    keymaster_b tz_a           tz_b rpm_a          rpm_b pmic_a         pmic_b hyp_a          hyp_b cmnlib32_a     cmnlib32_b cmnlib64_a     cmnlib64_b aboot_a        aboot_b hosd_a         hosd_b devcfg_a       devcfg_b modem_a        modem_b msadp_a        msadp_b apdp_a         apdp_b vendor_a       vendor_b system_a       system_b userdata reserve0

Bootloader Unlocking
The bootloader can be unlocked once the device has been unlocked by the cell carrier. An unlock code is usually obtained from your network provider directly, or from a third party. Be aware, a bootloader unlock will erase all userdata. Make sure to keep a backup of any important data.


 * Enter fastboot by shutting down the device, and hold volume down + power until you see the fastboot screen.
 * Depending on the phone's previous sleep state, you may be alerted that a RAM dump is in progress. Ignore these, keep holding the buttons until you end up in fastboot.

The standard OEM unlock command can then be be used:
 * 1) fastboot oem unlock

At this point, you should be ready to test pmOS deployments.

Backup with TWRP
Take precaution, and keep backups if this is your primary device.


 * Download the latest TWRP (both img and zip)
 * From the TWRP directory, run the fastboot command: #fastboot boot 
 * At this point, TWRP will load
 * Take your backup, note this does not include the user data directory. You need to copy that over with MTP as well.

Boot Only
The device is capable of sideloading a boot.img over USB with fastboot. The standard command in pmOS works:


 * 1) pmbootstrap flasher boot

Flashing

 * 1) fastboot set_active a
 * 2) fastboot reboot bootloader
 * 3) pmbootstrap flasher flash_rootfs
 * 4) pmbootstrap flasher flash_kernel
 * 5) fastboot reboot

Kernel Logging via Serial
It is possible to debug the Pixel/Pixel XL with a standard Nexus Serial debug cable. This must be enabled in fastboot first:
 * 1) fastboot oem uart enable

The baud rate is 115200.

Unable to mount rootfs
When running from a vendor kernel, Android is configured to skip loading with an initramfs. For postmarketOS to boot, the offending change would have to be removed with a patch.

Without the patch, the rootfs will fail to mount: [  14.025620] No filesystem could mount root, tried:  ext3 ext2 ext4 vfat msdos fuseblk [  14.033436] c2      1 Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(253,0)

Firmware image not available
Proprietary vendor drivers are missing, and will need to be built into the resulting boot image.

[TP]: [ERR]:fwu_start_reflash: Firmware image synaptics_bl71.img not available