Table of Contents

KBI - Khadas Bootloader Instructions

This page introduces KBI. You will learn how to manage the status of a Khadas SBC through KBI.

Khadas Bootloader Instructions (KBI) can be used to:

  • Manage the programmable MCU.
  • Perform low-level hardware management.
  • Enable developers to utilize all the features of Khadas SBCs. </WRAP>

This page uses VIM2 as an example.

Uboot usage

To get started, ensure you have booted into U-Boot:

normal power off
boot wol: enable
Hit Enter or space or Ctrl+C key to stop autoboot -- :  0 
kvim2# _

Help information

You can get help information by typing kbi:

kvim2# kbi
kbi - Khadas Bootloader Instructions sub-system
 
Usage:
kbi [function] [mode] [write|read] <value>
 
kbi version - read version information
kbi usid - read usid information
kbi adc - read adc value
kbi powerstate - read power on state
kbi poweroff - power off device
kbi ethmac - read ethernet mac address
 
kbi led [systemoff|systemon] w <off|on|breathe|heartbeat> - set blue led mode
kbi led [systemoff|systemon] r - read blue led mode
 
kbi bootmode w <emmc|spi> - set bootmode to emmc or spi
kbi bootmode r - read current bootmode
 
kbi trigger [wol|rtc|ir|dcin|key|gpio] w <0|1> - disable/enable boot trigger
kbi trigger [wol|rtc|ir|dcin|key|gpio] r - read mode of a boot trigger

MCU Verison

Get the MCU firmware version:

kvim2# kbi version
version: 03

Initialize

Initialize the KBI:

kvim2# kbi init

Serial number

Get the device serial number:

kvim2# kbi usid
usid: 000000

ADC

Get ADC value:

kvim2# kbi adc
adc: 0x236

The ADC value can be used to distinguish between different hardware modules.

Power Off

Power off the device:

kvim2# kbi poweroff

MAC Address

Get the Ethernet MAC address:

kvim2# kbi ethmac
mac address: 98:aa:fc:60:44:c0

LED Control

The blue LED has four operating modes: Always Off, Always On, Breathe, and Heartbeat. It indicates the VIM's operating status.

The MCU, which handles system power management, controls the blue LED. The CPU controls the white LED. Therefore, the blue LED continues to function even when the VIM2 is powered off.

KBI can be used to program the blue LED for two operating modes:

  • system off / idle: Power-off status, the CPU is in a power-down mode.
  • system on / working: Power-on status, the CPU is in working mode.

Example:

To check the blue LED’s setting for system off / idle status:

kvim2# kbi led systemoff r
led mode: breathe  [systemoff]

Check the blue LED setting for system on / working status:

kvim2# kbi led systemon r
led mode: off  [systemon]

When the VIM2 is powered on, the blue LED is set to Always Off by default.

You can reset it to breathe mode:

kvim2# kbi led systemon w breathe

You can also change the setting for system on / working status:

kvim2# kbi led systemon w Heartbeat

Boot Mode

You can flash images to either SPI flash or eMMC storage on the VIM2, and use KBI to set one of them as the default boot media.

Set the default boot media to SPI flash:

kvim2# kbi bootmode w spi

Set default boot media to eMMC storage:

kvim2# kbi bootmode w emmc

You can check the current default boot media setting:

kvim2# kbi bootmode r
bootmode: emmc

Boot Trigger Events

The VIM2 supports several events to trigger boot-up:

  • WOL: Wake-on-Lan
  • RTC: RTC timer
  • IR: IR remote controller
  • DCIN: Plug in the DC adapter
  • Key: Power Key/Button
  • GPIO: External GPIO events

This means any of the above events can trigger the VIM2 to power on, provided that the specific trigger event has been enabled.

For example:

  • Get the status of the WOL trigger event:
kvim2# kbi trigger wol r
boot wol: disable
  • WOL is disabled by default in the pre-installed ROM. You can enable it:
kvim2# kbi trigger wol w 1
set_wol: 1
  • For security reasons, you may want to disable WOL: reasons. :
kvim2# kbi trigger wol w 0
set_wol: 0

Read for reference