Some things I learned after struggling to bringing up a Hikey 970

First a shout out to Nik at Shunya. I gather they’re the folks that put together the Linux packages at Lemaker. Any how he was immensely helpful and I can’t say enough in appreciation.

Now some things I learned while trying to do things on this board that might help others, and also might help whoever puts together the documentation on this thing.

  • The board seems sensitive to the mouse. It seems a mouse that will work just fine on a regular computer can blow this board to smithereens. I have no idea how you figure out if your mouse is going to do that. But 3 dead boards later, I’ve decided, you’re probably better off not connecting a mouse to this thing at all.

  • The environment you use on the host computers can be massively important to how the board behaves when connected to the host. CentOS 7.x and later day Fedora loads have a real issue with the serial port on this board. When trying to do image loads (using the type-C connector between the type-A and HDMI connectors) the USB will often disconnect under Centos and Fedora, but won’t do the same on Ubuntu16.04 LTS (We used the same host machine, a Dell Inspiron laptop, with different OS’s and saw different results).

  • minicom seems to have a problem attaching to this board (no input available). picocom doesn’t (Thanks Nik).

  • The gcc-6 compiler included with the Lebian load produces very poor performing code for floating point operations. Using the same compiler flags the gcc-8.2 compiler produces code that runs about 8x faster on the A73 cores.

  • The system resorts to the minimum CPU and DDR frequencies every time you reboot. You really need to stick some sort of init script in if you want full performance out of the board. (Don’t know where the reversion happens). Changing stuff in the relevant /sys files is only temporary. It’ll be gone on the next reboot.

  • If you intend to run this board hard you do need a 3A power supply. The documentation says 2A in certain locations and 3A in others. Running on a lab power supply with a current monitor we’ve seen the board draw up to 2.6A at 12V.

  • A request to OS package developers, please include support for cycle counters or other performance monitoring methods with a high resolution. Trying to benchmark taxing applications is difficult without them.

  • Loading Linux images onto this board does not take 3-4 minutes as the documentation says. You can do a complete recovery flash including boot loaders and OS in about a minute. So if you do run into an issue the fact that it isn’t taking 2-4 minutes is not the problem.

  • The board doesn’t seem to support hot-plug on the wired Ethernet. So make sure your wired Ethernet is cabled up before booting. Even then it may take 2 boots before the wired Ethernet is first recognized.

Hi Ash ,

Thanks for the kind words . All your inputs are noted we will find some time next week to fix some of those . I am happy you didnt quit on the board and decided to trust us and try . So much came out of it . The next Lebian/Lebuntu version we release will be much better and the community will be thankful for your inputs.

Hi @alaw

Thanks for the feedback. It has been quite useful!

I am still having trouble connecting to the debug UART. I have tried both minicom and picocom (as per your advice), but I only manage to read out of the port. TX does not work for me though. People in the forum seem to imply that TX should be working on the debug UART (that is the USB-C port next to the power and reset switches). Have you managed to use it?

Thanks again for the info.

Some follow-up regarding this problem.

I 'm not sure what is exactly the problem with the Type C USB which is connected to the Debug UART.
However, I was able to get a serial console (TX does work) by using a UART-to-USB converter connected to the GPIO pins.

I’m just posting this here for others that might encounter similar problems.

In saying this do you mean that the kernel should be recompiled with the gcc-8.2 toolchain?
I am running the LeUbuntu and notice a lot of lag when dragging the firefox browser on the screen.

What toolchain specifically do you reccomend?
I also am a bit confused as to which kernel sources to use for the ubuntu build.

Thanks for any help.

Unlikely simply because the kernel should not contain any floating point operations.

So what is meant here is that the Linux build itself is Cross compiled with the GCC 8.2 toolchain?
When i see gcc i think of the toolchain.

Sorry. I don’t understand what you are asking.

Debian itself is native compiled but Lebian adds extra bits and pieces (most likely including the kernel) and I’m afraid I have no clue how they are compiled. However any problem with floating point performance won’t affect the kernel; it does not really use floating point.

If you are interested the compiler used to build the kernel probably appears near the top of the dmesg log.

I am asking what needs to be done to make this change.

Maybe i totally misunderstood what alaw is saying.
Maybe he is talking about compiling binary’s in Lebain that have nothing to do with the kernel or Lebain.

I am simply reading all the post regarding the HK 970 and trying to piece together the current state.

My objective is to optimize the Le-Ubuntu build to efficiently utilize as much of the processing power as possible. I plan to add PCIE expansion cards in the Mini Pci Express and the M.2 M key pci slots.

I am not very familiar with the compiling of Linux for embedded devices. My hope was to use the Le-Ubuntu release and re-compile the kernel to support the pcie if necessary. Right now i am researching everything out there to get a better grasp of the state of things.

I think, what @alaw means is that compiling applications (that perform floating-point operations) with gcc-6 produces binaries that perform badly.

@alaw’s said that gcc-6 did not produce high performance floating point code and I told you that the kernel source does not contain floating point code so recompiling the kernel will not result in improved floating point performance.

Having said that if you have a choice of compiler and no other reason to pick on then the latest version is typically the one you should use (it will also have non-floating pointer improvements).

So… what version of Ubuntu is Lebuntu based on? What compiler is that version of ubuntu built with (you can probably find that out by running apt update && apt install build-essential followed by gcc --version)?

You might find Lebuntu is based on a newer compiler than Lebian anyway!

I stumbled on this github and it answers most of the things i needed to know.

Thank you for your patience and help.

I’ve connected few different mouses and had no problem at all, maybe it’s something else.

Probably you are forgetting to disable RTS/CTS from the terminal. I use minicom without any problems.

It’s right, although I never had to reboot it twice, one was always enough to me.