HCL:Khadas Vim

Jump to: navigation, search

The Khadas VIM by Shenzhen Wesion is a single-board computer.

Technical data

  • Amlogic S905X SoC
    • 4x ARM Cortex-A53 CPU
    • ARM Mali-450 GPU
  • 2 GB RAM
  • 8/16 GB eMMC
  • 40-pin GPIO connector (not Raspberry Pi compatible)

Manual installation

U-Boot installation

Khadas VIM board is supported in official U-Boot since version v2018.01-rc1. Current version version (v2018.07) support boot from eMMC and SD card. For USB boot a patch is needed, should be included in the next version.

At this time, no U-Boot package is available in Tumbleweed/Leap. So download of official U-Boot and build from the source is needed to be able to generate a working image.

To be able to create a bootable image in OBS, aml_encrypt_gxb tool (available on GitHub) should be modified to support S905X SoC.

Please follow the official README available here to generate a U-Boot image. A set of tools are also available on GitHub to simplify the U-Boot compilation/generation.

Please note that your SD card or eMMC must be using MBR partitions (not GPT).

GRUB2 works with the EFI boot stack available in U-Boot.

openSUSE Tumbleweed installation using standard DVD

With TW and with the EFI boot protocol implemented in U-Boot, it is possible to directly install from DVD image on Khadas VIM.

Note this guide assumes:

  • that you already have a Leap/Tumbleweed OS installed on your PC
  • that you are familiar with the openSUSE installation procedure

To boot the DVD there are multiple ways:

  • burning the ISO on a USB key
  • booting the ISO through the network boot (PXE)

For each cases, it is still needed to use a SD card or USB key to load U-Boot (SD card is the preferred way).

The USB key method will be used here (with U-Boot on the SD card).

Graphical/textmode installation through HDMI partially works, but some USB issues can happen, so it is recommended to use textmode ssh installation if possible. Also, U-Boot shell is only accessible through serial console at that time.

Note: To be able to execute U-Boot from eMMC you need to use MBR disk scheme instead of the default GPT scheme. To do this you "simply" need to do a custom disk configuration. Or you can use a small SD card and put U-Boot on it, S905x SoC will boot on it if no bootloader is found on SPI/eMMC. So with this you can keep the default GPT partition scheme.

  1. Download the Tumbleweed ISO and "burn" it on the USB key - WARNING all previous data on the device will be lost!
    # dd if=[image].iso of=/dev/<usb_key> bs=4M iflag=direct,fullblock oflag=direct
  2. Insert the SD card and USB key into your board
  3. Connect the board to your PC via serial port (recommended; USB-TTL serial cable needed)
  4. Connect the board to your monitor (via DVI/HDMI, optional if you use the serial port)
  5. Power on the board
  6. Stop the U-boot procedure by pressing a key
  7. Force boot on the USB key
    Hit any key to stop autoboot:  0
    => run usb_boot
  8. Some parameters need to be set for installation, so you have to edit the boot option on GRUB and add the following options:
    earlycon=meson,0xc81004c0 console=ttyAML0,115200 ssh=1 sshpassword=linux
  9. Some optional parameters are also useful:
    elevator=noop                # complex scheduling is not needed on flash drive
    systemd.gpt_auto=0           # only needed if you use GPT partitioning scheme, to avoid some warnings
    splash=verbose               # can be useful to have all systemd messages on the console
  10. Your board is now booting the installation DVD!
  11. Connect to the board throught SSH and execute the installer (DISPLAY= is here to force textmode for YaST):
    # DISPLAY= yast.ssh
  12. Adapt your disk configuration if needed (GPT vs. MBR), normal installation is then expected!
  13. If you want to install U-Boot on the eMMC please pause the installation at the end before rebooting (Stop option) and follow the U-Boot installation on eMMC procedure

U-Boot installation on eMMC

After OS installation if you want to have U-Boot installed on the eMMC as well you just have to burn the u-boot.bin file in the "MBR gap":

dd if=u-boot.bin of=/dev/mmcblk1 bs=512 seek=1

And the reboot you board without any SD card/USB key. U-Boot should be loaded directly from eMMC.

See also