HiKey 960 works very sluggish on ToT master branch (Android)


Is that expected? Should I use more stable branch? I tried to use 8.0.12r , but it doesn’t have hikey960-userdebug flavor (only hikey-userdebug)


Do you have a heatsink/fan on the Soc? Many times the soc heats up and scales down the performance significantly, I haven’t tried the very latest master branch mine is about 3-4 days old and it works ok for me.
With that said there are optimizations to be worked on for the hikey 960 and It will remain in the master branch at least till the next android release, but don’t quote me on that.
with that said if you want to learn about the process and challenges of up-streaming hikey/hikey960 to aosp, John Stultz gave a talk on the same at Linaro Connect 2017 yesterday, I’ll link it in once it gets uploaded.


Thanks, Ric. I do have a standard heatsink, but no fan. I don’t think that’s because of the heat, because it performs poorly just after boot completion. When I launch standard apps I can see junky frames, transition animation is far cry to be smooth. I haven’t run benchmark tests though, but it gave me an impression that something wrong maybe with video drivers or something…

I thought we have some stable O branch for HiKey 960, because master is targeting feature development for P and maybe unstable.

Thanks for sharing the video, I will take a look.


Hi @Opilki_Inside,

Could you try some configuration for DDR and GPU frequency setting as below?

echo userspace > /sys/class/devfreq/e82c0000.mali/governor
echo 960000000 > /sys/class/devfreq/e82c0000.mali/userspace/set_freq
ecoh 99999999 > /sys/class/thermal/thermal_zone0/sustainable_power
echo userspace > /sys/class/devfreq/ddr_devfreq/governor
echo 685000000 > /sys/class/devfreq/ddr_devfreq/min_freq
echo 685000000 > /sys/class/devfreq/ddr_devfreq/max_freq


Hi @leo-yan,

Hm… I don’t have /sys/class/devfreq/e82c0000.mali/, I was only able to set frequency to DDR

hikey960:/ # ls /sys/class/devfreq/

Does it mean something wrong with mali drivers?

  • Pavel


Are you using the Android system.img which is built by self? If so could you confirm below steps for Android code base:

Download and extract binaries into the Android source tree:
wget https://dl.google.com/dl/android/aosp/arm-hikey960-NOU-7ad3cccc.tgz
tar xzf arm-hikey960-NOU-7ad3cccc.tgz

And could you confirm below commit ID in you kernel code base (kernel 4.4):

commit c623f997674828a63b56b5df4002970cecaadb40
Author: Tao Wang kevin.wangtao@hisilicon.com
Date: Mon Jun 5 20:58:20 2017 +0800

hikey960_defconfig: Enable gpu devfreq and thermal

Enable mali gpu devfreq and thermal cooling On HiKey960

Change-Id: Ib8b720b2003ce3d775590b3c1956d36b0dcbc95d
Signed-off-by: Tao Wang <kevin.wangtao@hisilicon.com>


Previously I used the kernel image that was installed by default (I guess in that .tgz archive). Now I tried to build kernel on my own, and in fact it works much better. In terms of performance the only issue I’m observing is that it looks like VSYNC was not implemented and when I try to drag large windows horizontally it just very junky.
I guess that’s because HWC wasn’t implemented and the default one is being used (maybe?)

As for the patch you mentioned, I’m using 4.9 kernel and I do not have that patch, I think it make sense only if I want to tune GPU frequency, right?

Another issue is that I’m not able to change resolution using kernel command line as mentioned here. However I can do this through adb shell wm size.