[solved] Trying to recover hikey960

I followed almost all the tutorials/readmes and tried various combinations but still the board doesn’t boot the OS properly.
Last trial was as follows:

  1. Using ubuntu host, connect to Hikey960 with usb-c cable. Pin settings are [100] for recovery mode.

  2. Checkout https://github.com/96boards-hikey/tools-images-hikey960.git

  3. Connect to serial console “sudo picocom -b 115200 /dev/ttyUSB0”

  4. Power on hikey and run ./recovery-flash.sh
    Config name: config
    Port name: /dev/ttyUSB1
    0: Image: ./hisi-sec_usb_xloader.img Downalod Address: 0x20000
    1: Image: ./hisi-sec_uce_boot.img Downalod Address: 0x6a908000
    2: Image: ./hisi-sec_fastboot.img Downalod Address: 0x1ac00000
    Serial port open successfully!
    Start downloading ./hisi-sec_usb_xloader.img@0x20000…
    file total size 99584
    downlaod address 0x20000
    Finish downloading
    Start downloading ./hisi-sec_uce_boot.img@0x6a908000…
    file total size 23680
    downlaod address 0x6a908000
    Finish downloading
    Start downloading ./hisi-sec_fastboot.img@0x1ac00000…
    file total size 3430400
    downlaod address 0x1ac00000
    Finish downloading
    < waiting for any device >
    target reported max download size of 471859200 bytes
    Sending ‘ptable’ (196 KB)…
    OKAY [ 0.027s]
    Writing ‘ptable’…
    OKAY [ 0.033s]
    Finished. Total time: 0.090s
    target reported max download size of 471859200 bytes
    Sending ‘xloader’ (151 KB)…
    OKAY [ 0.018s]
    Writing ‘xloader’…
    FAILED (remote: flash write back vrl failure)
    Finished. Total time: 0.399s

  5. Power off hikey and set pins to fastboot mode [101]

  6. make android-9.0.0_r46 with lunch parameter hikey960-userdebug

  7. cd out/target/product/hikey960
    fastboot flash boot boot.img
    fastboot flash dts dt.img
    fastboot flash system system.img
    fastboot flash cache cache.img
    fastboot flash userdata userdata.img

  8. set hikey to normal boot: pins [100]
    serial console doesn’t output more than these lines:
    display: [display]hisi_get_disp_info: hisifb_data is NULL pointer, return!
    bfm: : >>>>>enter set_boot_stage
    bfm: : bootStageCode is 0x02010003, mntnStageCode is 32
    bfm: : <<<<<exit set_boot_stage.
    misc: [get_misc_message] mmc_read failed
    preboot: [fastboot]: check_unlock_misc_info, line:1273 :get misc message failed.
    preboot: [fastboot]: check_powerkey_misc_info, line:1242 :!!!CAUTION!!!:get keypad_operator FAIL!
    preboot: [fastboot]: check_volumekey_state, line:943 :!!!CAUTION!!!:get keypad_operator FAIL!
    misc: [get_misc_message] mmc_read failed
    preboot: [fastboot]: comm_read_misc_cmd, line:501 :get misc message failed.
    watchdog: Disable watchdog start
    bfm: : [disable_boot_fail_system] boot_fail_system state is 0
    rescue: ^^^^^^^^^[rescue_init] ok !
    usbloader: bootmode is 4
    usb: [USBFINFO]USB CONNDONE, highspeed
    usb: [USBFINFO]USB CONNDONE, highspeed
    usbloader: usb: online (highspeed)
    usb: [USBFINFO]usb enum done

Is there any step I am missing? I probably have messed up the board completely.

I also downloaded factory image from
and run flash_all.sh within hikey960-linaro-2019.08.27 (while pin set to 101)
reboot and serial console shows it passed the stage
load_kernel: boot_from_bl31: boot to trusted firmware. addr=0x00000000
actually it booted Android now. It is amazing that most problems are solved after asking it on a forum:)