Table of Contents

VIM1S Erase eMMC bootloader

We have several different ways to erase bootloader.

U-Boot console

  1. Connect your PC to the SBC using a Serial Debug Tool.
  2. As the SBC is booting-up, press SPACEon the keyboard to enter the U-Boot mode.
  3. Type store boot_erase bootloader into the U-Boot console, and wait for the erasure process to complete.
  4. After erasure is completed, type reboot or press the RESET button on your SBC.

Use the following serial Terminal print-out as a reference:

kvim1s# store boot_erase bootloader
GUID Partition Table Header signature is wrong: 0x0 != 0x5452415020494645
GUID Partition Table Header signature is wrong: 0x0 != 0x5452415020494645
gpt is invalid
 
 
Caution! Your devices Erase group is 0x400
The erase range would be change to 0x0~0x23ff
 
8191 blocks erased: OK
 
 
Caution! Your devices Erase group is 0x400
The erase range would be change to 0x0~0x23ff
 
8191 blocks erased: OK
 
 
Caution! Your devices Erase group is 0x400
The erase range would be change to 0x0~0x23ff
 
8191 blocks erased: OK
kvim1s# reboot

If the eMMC has been erased, the serial Terminal should show this print-out when your SBC powers-on:

S4:BL:25dcde;ID:00D9C31D04901F08;FEAT:30F:1FFF0000:B002F:1;POC:DD;RCY:0;OVD:0;DFU:0;USB:ADFU�S4:BL:25dcde;ID:00D9C31D04901F08;FEAT:30F:1FFF0000:B002F:1;POC:DD;RCY:0;OVD:0;DFU:1;USB:0;RD-00:0;

Interrupt Mode

This erasure method is suitable for all products that use the Amlogic SoC:

  1. Carry out eMMC flashing via a USB-C cable.
  2. Manually interrupt the upgrading process (forcefully disconnect after 15% is recommended). For example, unplug the USB-C cable or eject the TF card.
  3. Power on your SBC again, and you'll find that all the data on the eMMC has been erased.

Linux command-line

eMMC boot-loader can be stored on /dev/mmcblk0 and special areas /dev/mmcblk0boot0 or /dev/mmcblk0boot0.

Cleanup eMMC boot loaders

Cleanup special eMMC boot areas.

dd if=/dev/zero count=8192 | sudo tee /dev/mmcblk?boot? >/dev/null

Also need cleanup eMMC common boot area.

sudo dd if=/dev/zero count=2000 seek=1 of=/dev/mmcblk0

/dev/mmcblk0 maybe different, please check how-to get-block-device-names-for-boot-loaders

Universal method for cleanup all eMMC boot-areas

sudo dd if=/dev/zero count=8192 | sudo tee /dev/mmcblk?boot? >/dev/null
sudo dd if=/dev/zero count=2000 seek=1 of=$(ls /dev/mmcblk?boot?|grep -m1 -o /dev/mmcblk.)

Get block-device names for boot loaders

Get block-device names for special boot areas.

~$ ls -1 /dev/mmcblk?boot? /dev/bootloader?
/dev/bootloader0
/dev/bootloader1
/dev/mmcblk0boot0
/dev/mmcblk0boot1

/dev/bootloader? same areas as /dev/mmcblk?boot?, but shifted by 512 bytes

Get eMMC block-device name.

~$ ls -1 $(ls /dev/mmcblk?boot?|grep -m1 -o /dev/mmcblk.)
/dev/mmcblk0

How-to check boot loaders content

This example display empty content for special boot-loaders areas.

~$ for m in /dev/bootloader?;do echo $m; dd if=$m count=1 2>/dev/null | hexdump -C ;done 
 
/dev/bootloader0
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200
/dev/bootloader1
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200

Display same but for other boot areas names.

~$ for m in /dev/mmcblk?boot?;do echo $m; dd if=$m skip=1 count=1 2>/dev/null | hexdump -C ;done 
 
/dev/mmcblk2boot0
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200
/dev/mmcblk2boot1
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200

Next example display valid boot loader header @ML.

~$ dd if=/dev/mmcblk0 count=1 skip=1 2>/dev/null | hexdump -C | head -n1
00000000  40 4d 4c 20 8d 66 31 ed  00 00 00 00 80 05 00 00  |@ML .f1.........|