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 
    => print boot_targets
    => 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:
    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
    earlycon=meson,0xc81004c0    # can be useful for debugging purposes
  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/mmcblk0 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