Hikey FAQ

Q: Where should I look for documentation?

  • HiKey Documentation. This is a great starting point for hunting down installing OS images, board manuals, schematics and all the other documentation we require 96Boards vendors to put together.

Q: What is the difference between the J15 and J601 boot mode pins?

There are two versions of the Hikey, one is produced by LeMaker and the other by CircuitCo.

The boot mode pins are marked J601 on the LeMaker HiKey and located on the edge of the boards close to LS connector.
On the CircuitCo Hikey these pins are marked J15 and are located at almost the same location. You might need magnifier to see them since they are printed on the board very small.

The J15 and J601 are identical in function, it is only the silk screen that differs between the two boards.

This jumper pins are used to select the boot-time behaviour of the HiKey and are usually used to FLASH the bootloader. The pinout is the same regardless of the board manufacturer.

For booting Debian or AOSP automatically:

Name          | Link     | State
------------- | -------- | ------
Auto Power up | Link 1-2 | closed
Boot Select   | Link 3-4 | open
GPIO3-1       | Link 5-6 | open

For flushing OS into emmc with recovery mode:

Name          | Link     | State
------------- | -------- | ------
Auto Power up | Link 1-2 | closed
Boot Select   | Link 3-4 | closed
GPIO3-1       | Link 5-6 | open

Q: Which UART to be able to see serial console screen, /dev/ttyAMA0 or AMA3?

This is the same topic of regarding between UART0 and UART3.

There are pins on the HiKey printed as J801 on LeMaker and J16 on CircuitCo. Both are the same UART port for the HiKey.

The J16-J801 is connected on UART0 on the SoC of the HiKey and we were assigning the UART0 for sending and receiving data of serial console. The UART0 is recognized by the HiKey as the /dev/ttyAMA0.

The initial images of bootloader and kernel were built to use UART0 for the serial console.

However, to be able of users of 96Boards to use the serial console feature across the different 96Boards, we have decided to use UART3 on LS connector for the serial console instead of the UART0 port. The UART3 is recognized by the HiKey as the /dev/ttyAMA3.

The images from 15.11 release, the UART3 (/dev/ttyAMA3) works as the serial console.

Please refer the link bellow to use the serial console on HiKey.

Q: What is the link for Android Open Source Project (AOSP) support on HiKey?

96Boards Hikey is officially supported in the upstream AOSP sources. Please visit android.com for details.

Q: Where is the git tree of the AOSP kernel source for Hikey?

The kernel source for AOSP on Hikey is hosted on the googlesource.com.

Q: I would like to be a contributor for the AOSP on HiKey, what is the procedure?

We would like to have people contribute to the AOSP on Hikey as much as possible.
Please refer the procedure.

Q: Is this it? There are no other frequently-asked-questions?

This is all we’ve come up with for the HiKey. However if you browse over to the General forum you’ll find a FAQ covering questions of a general nature. That includes questions about the 96Boards project, as well as technical questions whose answers apply to more than one board.

If you have any ideas of topics that we should cover in the FAQ then feel free to post below (or send me a PM).

Q: Does Hikey support system suspend/resume?

Yes. Hikey supports suspend-to-RAM flow. After system run into suspend state, usually we need rely on some specific waken source to wake up system so software can execute resume flow.

We can use two different waken up source, one is RTC and another is GPIO pin for “on_key” similar stuffs.

  1. For RTC, you should enable configuration CONFIG_RTC_DRV_PL031. This is supported by default on mainline kernel, after system boot up, you can input below command for system run into suspend state and after 10s it will be waken up by RTC:

echo +10 > /sys/class/rtc/rtc0/wakealarm; echo mem > /sys/power/state

  1. GPIO pins on HiKey Low-speed expansion port can be used as waken up source as well. You need to run scripts to enable that. See below the settings to give some voltage jitter to any of these GPIOs.

== to wakeup by GPIO:

/* 488: GPIO2_0, 490: GPIO2_2, /
/
492: GPIO2_4, 495: GPIO2_7 /
/
GPIO2_1, GPIO2_3 busy */

echo 488 > /sys/class/gpio/export
echo 490 > /sys/class/gpio/export
echo 492 > /sys/class/gpio/export
echo 495 > /sys/class/gpio/export

echo in > /sys/class/gpio/gpio488/direction
echo both > /sys/class/gpio/gpio488/edge
echo in > /sys/class/gpio/gpio490/direction
echo both > /sys/class/gpio/gpio490/edge
echo in > /sys/class/gpio/gpio492/direction
echo both > /sys/class/gpio/gpio492/edge
echo in > /sys/class/gpio/gpio495/direction
echo both > /sys/class/gpio/gpio495/edge

  1. UART and USB wakeup are not possible for HiKey. Their waken up logic was blocked by Hi6220 MCU in silicon way. MCU firmware cannot workaround it either. We didn’t see any way to change that.

Hello!

One common question I haven’t still found a solid answer to is about (CSI) camera support for HiKey.

I have been superficially looking at kernel sources for HiKey both from vendor BSP part of AOSP (kernel/hikey-linaro - Git at Google) and from the mainline-tracking github hosted kernel (https://github.com/96boards-hikey/linux) and none of them seems to have a CSI-2 receiver driver for HiSilicon 620 SoC.

I now wonder if CSI camera are supported at all on HiKey.

Thanks
j

@jmondi See http://www.96boards.org/forums/topic/camera-module-for-hickey/#post-18945. A company called AiStarVision made a MIPI camera for the 96boards but as noted, it has only been tested on the db410c so far.

Hello @vchong!
Thanks, that camera module is a breakout of 96board-comaptible high speed connector, with an Omnivision module pre-installed, if I’m not wrong.

My question was about the status of software support (and available documentation) for the SoC CSI-2 receiver, to which the breakout connects to :slight_smile:

@jmondi You’re welcome, and sorry for the misunderstanding! I wasn’t able to find anything related in the hikey kernel sources either. Hopefully below references from the db410c can help you make some progress:

http://git.linaro.org/landing-teams/working/qualcomm/kernel.git/log/?h=debian-qcom-dragonboard410c-16.06&showmsg=1&qt=grep&q=ov5645 ,
http://www.96boards.org/forums/topic/camera-driver-for-android ,
http://www.96boards.org/forums/topic/i2c-bus-for-camera-ov5640ov5645 ,
http://www.96boards.org/forums/topic/ov5640-camera-interface ,
http://www.96boards.org/forums/topic/warning-to-those-expecting-ov5645-camera-on-dragonboard410 ,

Where is the Factory Image installation documentation for the HiKey? The Linux links from the Installation page (http://www.96boards.org/documentation/ConsumerEdition/HiKey/Installation/README.md/) lead to two different document names, but both documents contain the instructions for the Fastboot installation method. Specifically, http://www.96boards.org/documentation/ConsumerEdition/HiKey/Installation/LinuxFactoryImage.md/ describes the Fastboot installation steps. Is the factory image installation document somewhere else on the site? Thanks

Maybe this is the “Factory Image” installation method - however at the top of the file is this line"

“This section shows how to install new operating system to your HiKey using the fastboot method on a Linux host computer.”

On the http://www.96boards.org/documentation/ConsumerEdition/HiKey/Installation/README.md/ page, it says “Factory Images Method (currently available for AOSP only)” and “Go to the Downloads page to get your Factory Image zip file.” The Downloads page is http://www.96boards.org/documentation/ConsumerEdition/HiKey/Downloads/README.md/. Now click AOSP (since it’s only available for AOSP) to bring you to http://www.96boards.org/documentation/ConsumerEdition/HiKey/Downloads/AOSP.md/. There’s a link there to download the factory image.

Can I build a special kernel for HiKey?

How can I add phonebook profile protocol to the Bluetooth stack of Hikey?

Thanks in advance

What kind of ‘special’ kernel ? you can fin infoirmation about building AOSP & kernel for Hikey here:
https://source.android.com/source/devices

PBAP is already included in the AOSP stack (bluedroid) if I’m not wrong. Do you want to enable client or server role ?

Thanks Loic for your response.
Actually pbap it is available in aosp but not for HiKey. HiKey kernel is some prebuilt.

(ifeq ($(TARGET_PREBUILT_KERNEL),)
LOCAL_KERNEL := $(ANDROID_PRODUCT_OUT)/kernel_obj/arch/arm64/boot/Image
LOCAL_DTB := $(ANDROID_PRODUCT_OUT)/kernel_obj/arch/arm64/boot/dts/hisilicon/hi6220-hikey.dtb)

What I wan’t is to call the BT profiles of aosp and build them into HiKey kernel, I think that I have to edit the Makefiles and Kconfig files!!!

I don’t understand, BT profiles are implemented in the user-space Bluedroid stack and accessible via android BT services/API, Kernel does not play any role here.

I thought that I should edit the BT stack to add pbap protocol !! I am still new to BT
How can I enable the pbap as a client role in HiKey?
Thanks Loic