Google Nexus 6P

From postmarketOS
Jump to: navigation, search
Google (Huawei) Nexus 6P
Huawei Nexus 6P
Huawei Nexus 6P
Manufacturer Google (Huawei)
Name Nexus 6P
Codename angler
Released 2015
Original software Android 6.0.0 on Linux 3.10 (upgradeable to Android 8.0.0 on Linux 3.10)
Hardware
Chipset Qualcomm MSM8994 Snapdragon 810
CPU Octa-core (4x1.55 GHz Cortex-A53 & 4x2.0 GHz Cortex-A57)
GPU Adreno 430
Display 1440x2560 AMOLED
Storage 32/64/128 GB
Memory 3 GB RAM

Contributors

  • zhuowei

What works

  • Building kernel
  • Booting kernel via fastboot
  • Telnet to initramfs, ssh to running system
  • Mounting rootfs via NFS over USB (needs the nfs-root PR)
  • Graphics (using msm_fb_refresher)
  • Touchscreen
  • Wi-Fi: Follow Wifi#Connecting_to_APs to enable; currently using firmware extracted from AOSP.

What does not work

  • Flashing and mounting rootfs on internal storage (untested)
  • Everything else (no Bluetooth, audio, modem, accelerometer, you tell me)

Kernel configs applied

Configs changed from stock Lineage kernel:

  • CONFIG_DEVTMPFS=y
  • CONFIG_VT=y
  • CONFIG_FRAMEBUFFER_CONSOLE=y
  • Various NFS client configs: CONFIG_NFS_V4_1=y
  • CONFIG_BCMDHD_FW_PATH, CONFIG_BCMDHD_NVRAM_PATH

How to enter flash mode

The Nexus 6P, like all Google Nexus devices, uses Fastboot as the flashing protocol.

To enter Fastboot mode, hold Volume Down while powering on the device. Let go of Volume Down when a picture of a green Android mascot shows up on the screen.

Research

Mainline

There is a project to port the mainline kernel to Nexus 6P: as a result there's now some support for Nexus 6P in mainline. However, currently there's only support for serial output and input, no screen or USB. Thus, this port doesn't use a mainline kernel. (The mainlining team's members can be found at ##linux-msm on Freenode.)

Modem

Android boots the modem by mounting the modem partition to /firmware, then opening /dev/subsys_modem. Doing the same on postmarketOS (after linking all the firmware in /firmware/images to /lib/firmware/postmarketos) causes any `dmesg` call to freeze (?!), and the device would kernel panic with a "modem crashed" error in a few seconds.

Audio

The audio requires the blobs from Android's /vendor/adsp.* to be present in /lib/firmware/postmarketos. Then, opening /dev/subsys_adsp will boot the sound card. Currently ALSA recognizes the sound card but fails with an error when playing audio: the Android audio configuration files would need to be converted to Linux format by xml2ucm. See https://arunraghavan.net/2016/01/audio-devices-and-configuration/ for an explanation of the difference between Android and Linux audio, and see https://github.com/kholk/sony-alsa-ucm/tree/master/kitakami for a different SD810 device's ALSA config.

Bluetooth

It seems Bluetooth is connected via H4 UART at /dev/ttyHS0. Tizen uses the hciattach_bcm43xx tool from BlueZ to load firmware to the Bluetooth dongle, but I can't find this utility in Alpine's bluez or bluez-deprecated package. btattach -B /dev/ttyHS0 doesn't seem to work.

Links

Device Package

pmbootstrap Pull Request #512: initial PR

pmbootstrap Pull Request #555: Wi-Fi and graphics

The LineageOS 14.1 kernel used