Ubuntu Bionic is here!

download tar file

PR is very welcome.


Do you know armbian.com ?? maybe you can add support for Hikey970 :slight_smile:

armbian use SD card to load image.
But I think fastboot is good enough for current usage.

armbian can generate any image
so same stuff as you did

How to I boot this from an SD card in my 970?

Can you explain how to change pre-installed android images in UFS to ubuntu? I am new to Hikey board and there is not enough document for the hikey 970 board yet.

I’m not familiar with this distr. Maybe you can show us a tutorial?

Thanks Meng. I flashed and successfully booted the ubuntu. However, there are some minor things not working.

  1. screen is still blank to me. (No time to debug)
  2. sdd12 is 4GB. (I guess what you guys call, ptable, should be updated)
  3. board is too hot. (not sure what is the right temperature, but still having several thermal kernel warnings)


My pleasure and dmesg or pull request on Github are very welcome.

  1. Have you try to install destop-enviorment like lxde or gnome?
  2. yes, that’s a bug, I need help on mkfs.ext4 online resize parameter. Neither -E resize= nor -j -J works.
  3. It’s normal and you need a DC fan or AC to cool it.

Hi, how are you seeing that board is successfully booted into ubuntu? As i am unable to see any output on HDMI monitor?

Hi Mengzhuo, I tried to rebuild the kernel using the hikey970_4.9 branch but when I apply it to your image it doesn’t really works as expected (it constantly panics or doesn’t give me access to the sockets)
Have you made any modification to the kernel menuconfig when you created this image or you just used the defconfig?

I tried this Image again and again…

But it shows nothing on monitor screen…

If you try this image, you could be failed…

Yes you are correct.
The image will boot and work as server.
But for the display to work first you have to install a desktop like LXDE.
Even then the display still will not work.
The DRM Driver in the kernel source isn’t quite right.

I’m not an expert but i have been trying to get the DRM Driver and the kernel fixed.
When I get a chance i will post a new thread on the modified kernel and maybe one of the experts around here can help finish fixing it.

Is there a github repository for the modifications that you are doing?
I’ll be able to hook up 1.8V serial USB soon so then I can do a lot more testing with other kernels.

Yes I have forked the 96 Boards Linux into my github and added a branch with the changes i have. Janrinze I read one of your other post and you mentioned that adding the EDID Helper to the Grub Boot Command line got your display working.

Is adding in the EDID to the command line not working anymore?

Some of the changes i made came from commits in your github repo.
Some others came from ANDYVIP https://github.com/Bigcountry907/shared/blob/master/hikey970.patch#L786.

I think the main problem in the HI-Hope Kernel and the ANDYVIP kernel have to do with the adding of the CMA Buffer. I have been adding patches - Commits one at a time and then testing them.

My current kernel outputs data each step of the way for debugging the DRM.
Without adding the CMA when i run dmesg and look at all the output It looks like the driver is very close to working.

I’m sure that if one of the experts around here took a look they could probably spot the issue quickly.

What is the state of the Kernel in your github?
Did you have it working at one time?

I will post a new thread with a link to my kernel tree and go over some of the logs.

As far as Uart I have the Uart Cable but not much output goes to the console.
If you use dmesg then look at the output you get a lot more.
For example:

dmesg >> Boot-Log.txt

You will find the Boot-Log.txt in the same directory you execute the command from.
Open the file and scan through the output.
Otherwise you can just do.
and the output will be in the console.

I just thought I would mention to you that the UART Output from the low speed headed is identical to the output from the uart on usb c.
The Usb-c on the side of the board that is by it self.

The USB-C can only be used to view the console output. it does not accept input.
To have input (like typing somthing to get grub to select a different kernel) it is needed to connect to the 1.8V serial pins on the extension header.

The kernel I run is quite capable. To force the hdmi output i use:
BOOT_IMAGE=/boot/Image earlycon=pl011,0xfff32000,115200 clk_ignore_unused=true console=tty1 console=ttyAMA6,115200n8 root=/dev/sdd15 rootwait rw quiet efi=noruntime drm.debug=0xf drm_kms_helper.edid_firmware=edid/1920x1080.bin video=HDMI-A-1:1920x1080@60e consoleblank=0

specifically the part “drm_kms_helper.edid_firmware=edid/1920x1080.bin video=HDMI-A-1:1920x1080@60e consoleblank=0” is where we tell the kernel to use 1920x1080 on the HDMI output.

So with your kernel source from here.

If i add
drm_kms_helper.edid_firmware=edid/1920x1080.bin video=HDMI-A-1:1920x1080@60e consoleblank=0

The video will work?
2 reasons i ask this is because then we know for sure that the EDID is the problem and can focus on that. But i think if you merged pull request into your kernel that it might not work anymore.

Is the current kernel tree in your repo (Branch hikey970-v4.9) working with the command line modification?

Where did you get the 1920x1080.bin and where are you placing it on the hikey 970?

In your debain .config file.
I thought that that setting is required for the kernel to load edid info from the .bin file.

We can try CONFIG_FIRMWARE_EDID: as well.

In my current logs I do see the modes being tested.

[ 5.127757] GPU/DRM_DRV.c 7[drm:drm_helper_probe_single_connector_modes] hxy [CONNECTOR:28:HDMI-A-1]
[ 5.128050] [CONNECTOR:28:HDMI-A-1] status updated (null)
[ 5.128058] GPU/DRM_DRV.c 7[drm:drm_mode_object_unreference.part.0] OBJ ID: 36 (1)
[ 5.128100] GPU/DRM_DRV.c 7[drm:drm_add_edid_modes] HDMI: DVI dual 0, max TMDS clock 165000 kHz
[ 5.128102] GPU/DRM_DRV.c 7[drm:drm_add_edid_modes] HDMI-A-1: No deep color support on this HDMI sink.
[ 5.129066] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 1920x1080@60 clock: 148500…
[ 5.129071] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] OK
[ 5.129073] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 1920x1080@60 clock: 148352…
[ 5.129076] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] OK
[ 5.129077] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 1680x1050@60 clock: 146250…
[ 5.129078] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] OK
[ 5.129080] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 1280x720@60 clock: 74250…
[ 5.129081] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] OK
[ 5.129082] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 800x600@60 clock: 40000…
[ 5.129084] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] OK
[ 5.129085] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 1152x864@75 clock: 108000…
[ 5.129086] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] BAD
[ 5.129088] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 1280x1024@60 clock: 108000…
[ 5.129089] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] BAD
[ 5.129091] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 640x480@75 clock: 31500…
[ 5.129092] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] BAD
[ 5.129093] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 640x480@60 clock: 25175…
[ 5.129094] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] BAD
[ 5.129095] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 720x400@70 clock: 28320…
[ 5.129096] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] BAD
[ 5.129098] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 1280x1024@75 clock: 135000…
[ 5.129099] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] BAD
[ 5.129102] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 1024x768@75 clock: 78750…
[ 5.129103] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] BAD
[ 5.129104] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 1024x768@60 clock: 65000…
[ 5.129108] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] BAD
[ 5.129109] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 800x600@75 clock: 49500…
[ 5.129110] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] BAD
[ 5.129111] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 1280x720@60 clock: 74176…
[ 5.129113] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] BAD
[ 5.129114] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] Checking mode 640x480@60 clock: 25200…
[ 5.129115] GPU/DRM_DRV.c 7[drm:adv7511_connector_mode_valid] BAD

So if you have a working kernel tree that the display will work by adding.
drm_kms_helper.edid_firmware=edid/1920x1080.bin video=HDMI-A-1:1920x1080@60e consoleblank=0

I would really like to start with that. If you have it on your local machine can you please create a new github branch and push it. Or just zip the linux directory and upload it.

On my hikey 970 I am able to view the console and type commands using the USB-C. With the low speed header I cannot type commands. I use screen in linux and i use putty in windows. I am not using the USB-C by the HDMI connector. I am using the other USB-c.