Google Nexus 5X(lg-bullhead)

From postmarketOS
Jump to: navigation, search
LG Nexus 5X
Nexus 5x
Nexus 5x
Manufacturer LG
Name Nexus 5X
Codename lg-bullhead
Released 2015
Original software Android 6.0 on Linux 3.10
Hardware
Chipset Qualcomm MSM8992 Snapdragon 808
CPU 4x1.4 GHz Cortex-A53 & 2x1.8 GHz Cortex-A57
GPU Adreno 418
Display 1080x1920 IPS
Storage 16/32 GB
Memory 2 GB
Architecture aarch64
Features
USB Networking
Works
Flashing
Works
Touchscreen
Works
Display
Works
WiFi
Xwayland
Works
FDE
Mainline
Battery
3D Acceleration
Accelerometer
Audio
Bluetooth
Camera
GPS
Mobile data
SMS
Calls



Contributors

  • PureTryOut
  • MartijnBraam

Unlocking

In android go to SettingsSystemAbout Phone and tap the build number 7 times. Then go to SettingsSystemDeveloper Options and enable OEM unlocking

Reboot to the bootloader and run "fastboot oem unlock" Now select Yes on the phone screen with the volume button and use the power button to accept.

Special key combos

Boot to bootloader: hold volume down + power button until the screen turns on

Launch recovery: first boot to the bootloader, press the volume down button twice and press the power button to select

Mainlining

The linux mainline kernel has very basic support for this phone since November 2016 (one cpu and uart). In January 2017 support for the onboard SDHCI was added and since March 2018 pstore-ramoops. Both should be included in 4.19.

To boot it using pmbootstrap follow the mainlining guide but note that it has a 64 Bit kernel also compared to downstream "device-lg-bullhead" you need to change the debug tty to /dev/ttyMSM0 in the deviceinfo file.

Change deviceinfo (aports/device/device-lg-bullhead/deviceinfo)

 deviceinfo_kernel_cmdline="console=ttyMSM0,115200,n8 androidboot.hardware=bullhead boot_cpus=0-5 lpm_levels.sleep_disabled=1 msm_poweroff.download_mode=0 buildvariant=userdebug PMOS_NO_OUTPUT_REDIRECT"

ttyMSM0 tells the kernel to write debug output to the debugger cable, PMOS_NO_OUTPUT_REDIRECT tells the initram script from pmos to write there as well instead as to a (temporary) log file

increase the pkgrel in APKBUILD and rebuild the boot.img

$ pmbootstrap checksum device-lg-bullhead
$ pmbootstrap export

build your kernel as described in mainlining guide

update the boot.img to include your local kernel

$ cp "/tmp/postmarketOS-export/boot.img-lg-bullhead" "$TEMP/boot.img"
$ cd .output/arch/arm64/boot/
$ cat Image.gz dts/qcom/msm8992-bullhead-rev-101.dtb > "$TEMP/zImage-dtb"
$ pmbootstrap chroot -- abootimg -u /tmp/mainline/boot.img  -k /tmp/mainline/zImage-dtb
$ pmbootstrap flasher list_devices

You can communicate with the device using screen (or other software), so in a separate terminal start it

$ screen /dev/ttyUSB0 115200

Boot your mobile to bootloader (power + vol down), you should see some debug output already in screen

Boot mainline kernel using fastboot

$ pmbootstrap chroot -- fastboot boot /tmp/mainline/boot.img

Device teardown:

https://www.ifixit.com/Teardown/Nexus+5X+Teardown/51318

Downstream DTS: https://github.com/franciscofranco/bullhead/blob/oreo-mr1/arch/arm/boot/dts/qcom/msm8992.dtsi