Jump to content

Huawei Honor 6X (huawei-berlin)

From postmarketOS Wiki
Huawei Honor 6X
Honor 6X with XFCE4
Honor 6X with XFCE4
Manufacturer Huawei
Name Honor 6X
Codename huawei-berlin
Released 2016
Type handset
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
Software
Original software
The software and version the device was shipped with.
Android 6.0 Marshmallow (EMUI 5.x)
Extended version
The most recent supported version from the manufacturer.
Android 8.0 Oreo (EMUI 8.x)
postmarketOS
Category downstream
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.
4.4.174
Device package device-huawei-berlin
Kernel package linux-huawei-berlin
Features
Flashing
It is possible to flash the device with pmbootstrap flasher.
Partial
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
Untested
Screen
Display works. Ideally with sleep mode and brightness control.
Works
Touchscreen
Works
Multimedia
3D Acceleration
Untested
Audio
Audio playback, microphone, headset and buttons.
Untested
Camera
Untested
Connectivity
WiFi
Works
Bluetooth
Untested
GPS
Untested
Modem
Calls
Untested
SMS
Untested
Mobile data
Untested
Miscellaneous
FDE
Full disk encryption and unlocking with unl0kr.
Untested
Sensors
Accelerometer
Auto screen rotation works in desktops e.g. Phosh or Plasma Mobile
Untested

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