Installing OS on VIM3

Hello Khadas community
I need some help understanding OS flashing on VIM3
I want to know how does exactly the flashing process happen (using the usb burning tool), what partitions are in the emmc, and if tha partition table of the emmc is erased (clean emmc) what shall I do ?

1 Like

Hello, Several methods can be used to flash the VIM3. Easiest is probably Krescue, though I generally use the USB Burning Tool method. With either method, whether the eMMC is populated or blank, there should be no problem in flashing.
I don’t deep dive on this stuff, but I imagine what partitions are on the eMMC will be dependent on what OS resides there.
Are you just wanting to flash the VIM3? I may be misunderstanding.


Thank you for your reply.
I want to understand the flashing procedures, as I might have a blank emmc (no partition table)

the eMMC is just like an SD card, based on the interface it uses (SDIO)
the only difference is that eMMC is more bonded to system than SD cards and acts as the primary storage bank,

whether or not the eMMC has a partition table or not doesn’t matter, as the amlogic SoC has bootrom code on-chip, to get and flash data with something like the USB-burning tool

so it doesn’t matter at all, and your VIM also has the added ability of being un-brickable :slight_smile:


If your eMMC is blank(erased/cleared), you will need to put the VIM3 in to MASKROM mode. This can be done by three presses of the Function button in under two seconds.
The procedural steps for flashing using the USB-C cable, the USB Burning Tool and a PC are here.

1 Like

Thank you all for your clarification


Hi," Erase All "is a very dangerous option. I do not recommend using it, because it can be overwritten with service data (sn. mac, hdmi hdcp) and without restoring them, the firmware will then not understand how to work (but it will work).

its only a clean factory format, its not dangerous, you will only loose your stored data :wink:

To do this, it is enough to format it in a standard way, exactly as the default settings in UBT are already set, only in this case.

what if my emmc is totally clean? (as I know the image afforded by Khadas doesn’t have the partition table)

its not right !!! amlogic have special amlogic partition table

1 Like

can you elaborate please ?

for example mainline uboot can recognize only

u-boot-mainline$ ls disk/part_*.c 
disk/part_amiga.c  disk/part_dos.c  disk/part_efi.c  disk/part_iso.c  disk/part_mac.c

amlogic vendor uboot have additional amlogic partition

fenix/u-boot$ ls disk/part_*.c 
disk/part_amiga.c  disk/part_aml.c  disk/part_dos.c  disk/part_efi.c  disk/part_iso.c  disk/part_mac.c

and linux kernel have special dts partition definitions for recognize it


Can you explain a bit more? I am using the vendor kernel image. Poking around fenix, I see this platform.conf file (in fenix/build/image_upgrade/Amlogic) that appears to be used to build the .img that the AML update tool knows how to interpret. That file has several images with main_type=“PARTITION”

 # Images need verify
file="logo.img" main_type="PARTITION" sub_type="logo"
#file="ramdisk.img" main_type="PARTITION" sub_type="ramdisk"
file="rootfs.img" main_type="PARTITION" sub_type="rootfs"
file="u-boot.bin" main_type="PARTITION" sub_type="bootloader"
file="kvim.dtb" main_type="PARTITION" sub_type="_aml_dtb"

Where are these placed in emmc? And what is their relation to the partitions described in the device tree? How are you supposed to interpret the device tree partition size cell properties?

Is there a place where all of this is documented?

this is just amlogic burn software config
amlogic uboot variant read dtb from emmc by special hardcodec offset
and use this dtb

linux same can use device tree for setup partitions
all paritions described in partitions node ( u can check linux kernel internal documentation for more detail )

HOWTO get kernel partition from dtb

 dtc -q -Idtb < _aml_dtb.PARTITION | grep partitions -m1 -A27
	partitions {
		parts = <0x03>;
		part-0 = <0x47>;
		part-1 = <0x48>;
		part-2 = <0x49>;
		phandle = <0xe4>;

		logo {
			pname = "logo";
			size = <0x00 0x800000>;
			mask = <0x01>;
			phandle = <0x47>;

		ramdisk {
			pname = "ramdisk";
			size = <0x00 0x2000000>;
			mask = <0x01>;
			phandle = <0x48>;

		rootfs {
			pname = "rootfs";
			size = <0xffffffff 0xffffffff>;
			mask = <0x04>;
			phandle = <0x49>;

YES :wink: its not trivial for understanding - have many nuances - this theme for special thread

for parsing example u can read this my script (sure its not easy - but is something)

1 Like