Huawei Honor 6X (huawei-berlin)

From postmarketOS
Huawei Honor 6X
Honor 6X with XFCE4
Honor 6X with XFCE4
Manufacturer Huawei
Name Honor 6X
Codename huawei-berlin
Released 2016
Category testing
Pre-built images no
Original software Android
Original version 6.0 Marshmallow (EMUI 5.x)
Extended version 8.0 Oreo (EMUI 8.x)
postmarketOS kernel 4.4.174
Hardware
Chipset HiSilicon Kirin 655
CPU Octa-core (4x2.1 GHz Cortex-A53 & 4x1.7 GHz Cortex-A53)
GPU Mali-T830MP2
Display 1080x1920 IPS LCD
Storage 32 GB, microSD
Memory 3 GB
Architecture AArch64
Features
USB Networking
Works
Flashing
Partial
Touchscreen
Works
Display
Works
WiFi
Works
FDE
Mainline
Battery
3D Acceleration
Audio
Bluetooth
Camera
GPS
Mobile data
Internal storage
SMS
Calls
USB OTG
NFC
Sensors
Accelerometer
Magnetometer
Ambient Light
Proximity
Hall Effect
Barometer
Power Sensor
Misc
Built-in DVB
Camera Flash
Keyboard
Touchpad
USB-A
HDMI/DP
Ir TX
Ir RX
Stylus
Memory Card
Haptics
Ethernet
FOSS bootloader


Users owning this device


How to enter flash mode

Recovery - hold Power + Volume Up

Fastboot - hold Power + Volume Down, with the USB cable plugged in

How to flash

If you're coming from a phone running Android 8 (EMUI 8), there is no boot partition, so you'll have to flash image files individually.

  1. Make sure pmbootstrap build and pmbootstrap install pass without errors.
  2. Get mkbootimg and unpackbootimg (link)
    $ git clone https://github.com/anestisb/android-unpackbootimg
    $ make -C android-unpackbootimg
    
  3. Extract the images from the pmbootstrap-created boot.img with unpackbootimg.
    $ # copy created boot image to current directory
    $ cp ~/.local/var/pmbootstrap/chroot_rootfs_huawei-berlin/boot/boot.img .
    $ # extract the created boot.img
    $ mkdir pmos-boot-huawei-berlin
    $ ./android-unpackbootimg/unpackbootimg -i boot.img -o pmos-boot-huawei-berlin/
    
    Use the extracted files in the following steps.
  4. Create ramdisk image:
    $ # create new ramdisk image with empty kernel (/dev/null) 
    $ ./android-unpackbootimg/mkbootimg.py --kernel /dev/null --ramdisk pmos-boot-huawei-berlin/boot.img-ramdisk.gz --cmdline 'buildvariant=user' --os_version 8.0.0 --os_patch_level 2018-06-05 -o ramdisk.img
    
  5. Create kernel image:
    $ # kernel (with empty ramdisk via /dev/null):
    $ # make sure boot.img-huawei-berlin-zImage is gzipped or do it manually before mkbootimg.py
    $ gzip -c pmos-boot-huawei-berlin/boot.img-zImage > pmos-boot-huawei-berlin/boot.img-zImage.gz
    $ ./tools/android-unpackbootimg/mkbootimg.py --kernel pmos-boot-huawei-berlin/boot.img-zImage.gz --ramdisk /dev/null --cmdline 'loglevel=4 coherent_pool=512K page_tracker=on slub_min_objects=12 unmovable_isolate1=2:192M,3:224M,4:256M printktimer=0xfff0a000,0x534,0x538 androidboot.selinux=enforcing buildvariant=user' --base 0x00478000 --kernel_offset 0x00008000 --ramdisk_offset 0x07b88000 --second_offset 0x00e88000 --tags_offset 0x07988000 --os_version 8.0.0 --os_patch_level 2018-12 --pagesize 2048 -o kernel.img
    
  6. Flash with fastboot:
    $ fastboot flash kernel kernel.img
    $ fastboot flash ramdisk ramdisk.img
    $ pmbootstrap flasher flash_rootfs # or flash to sd-card
    
  7. Reboot
    $ fastboot reboot
    

Additional Info

On first boot, the display will get stuck on postmarketOS boot screen. Connect to the phone via SSH, open /etc/lightdm/lightdm.conf and replace #logind-check-graphical=true with logind-check-graphical=false. Reboot the phone. More info: Display manager#CanGraphical_issue.

Now, after boot screen, the screen will turn off. You'll have to SSH again and set the brightness level (range is 0 - 255):

$ sudo -i
# echo 255 > /sys/class/leds/lcd_backlight0/brightness

See also