Tips for boot logo on ODROID-C2
Boot Logo Image Format
The basic image format of ODROID-C2 boot logo image is as following.
Format
Image Format : 24-bit Windows BMP image or 24-bit Windows Gzipped BMP image (Without meta-data) Image Size : 1280 by 720 Color Depth : 24bpp File Name : 'boot-logo.bmp' or 'boot-logo.bmp.gz'
Here is the sample bmp file. boot-logo.bmp.gz
We recommend using GIMP or KolourPaint.
Here is an advanced option.
[ GIMP ]
- Export as Windows BMP - Compatibility Options : Do not write Color Space Information - Advanced Options : 24 bits Color - Name : "boot-logo.bmp"
[ KolourPaint ]
- Save Image as - Filter : Windows BMP image - Convert to : 24-bit Color
Size Limitation
And please keep the size of your bmp file must be under 2MB because the logo partition is limited to 2MB. Gzip BMP format is supported, so if the size is over 2MB, you can use bmp.gz file.
$ gzip boot-logo.bmp $ ls boot-logo.bmp.gz
Auto scaling option
On ODROID-C2 uboot, image scaling for boot logo is supported,
so displayed boot logo will be fixed automatically for output mode as described in boot.ini.
For example, in case of using the mode “1024x600p60hz”, boot logo will be displayed as 1024×600 even though actual size of bmp file is 1280×720.
How to replace boot logo with your custom image
ODROID-C2 scans the existence of the following three parts in numerical order.
- boot-logo.bmp in VFAT partition
- boot-logo.bmp.gz in VFAT partition
- logo data in Android LOGO partition
Android
On Android, you can replace boot logo with your custom image.
There are two ways to change boot logo image.
- Add a image into VFAT partition.
- Rewrite image data into Android LOGO partition using fastboot.
1. VFAT
Copy the new boot-logo.bmp (or boot-logo.bmp.gz) to VFAT partition.
2. Android Logo Partition
If you want to replace logo data in logo partition, please follow this guide.
First, you must get into your U-Boot command line while pressing ENTER key when your ODROID-C2 is powered up.
And execute fastboot command from U-Boot and connect with your desktop using micro USB cable.
[ ODROID-C2 Target ]
- target
odroidc2# fastboot
Next, run fastboot command from your desktop.
[ HOST PC ]
- host
$ fastboot flash logo boot-logo.bmp.gz or $ fastboot flash logo boot-logo.bmp
If you will use bmp data on logo partition, make sure there is NO boot-logo.bmp.gz file on your VFAT area,
because U-Boot checks at first if there are boot-logo.bmp/boot-logo.bmp.gz on VFAT area and then check logo partition.
Ubuntu
With Ubuntu, display logo option is NOT included by default.
So, you need to add a boot logo image into VFAT partition.
The way using LOGO partition is not available on Ubuntu.
How to add showlogo command in boot.ini
1080p60hz case
On U-Boot, default logo display logic works with 1080p60hz display resolution.
So you don't need to add/modify related commands,
but make sure boot logo file exists in the aforementioned locations.
Another resolution other than 1080p60hz
You should add the commands to your boot.ini before bootcmd is executed.
Please check if there is 'showlogo' command in your boot.ini first. If not so, refer to the following.
Android
showlogo ${hdmimode}
Ubuntu
# Boot Arguments if test "${display_autodetect}" = "true"; then usb pwren; hdmitx edid; fi if test "${m}" = "custombuilt"; then setenv cmode "modeline=${modeline}"; fi ### You should add the following lines after **hdmitx edid** command. showlogo ${m} setenv logoopt "osd1,loaded,0x3f800000,${m}" # Boot Arguments - Add logo args on the existing bootargs parameter setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro ${condev} no_console_suspend hdmimode=${m} ${cmode} m_bpp=${m_bpp} vout=${vout} fsck.repair=yes net.ifnames=0 elevator=noop disablehpd=${hpd} max_freq=${max_freq} maxcpus=${maxcpus} monitor_onoff=${monitor_onoff} disableuhs=${disableuhs} mmc_removable=${mmc_removable} usbmulticam=${usbmulticam} ${hid_quirks} logo=${logoopt}"
How to use the custom image with Native resolution like 1024x600 or 800x480 except 1280x720
If you want to use a native resolution of bmp image like 1920×1080, 1024×600 (for VU7+) or 800×480 (for VU7),
please set the arg[2]/arg[3] of showlogo command as following.
- target
odroidc2 # help showlogo showlogo - Displaying BMP logo file to HDMI screen with the specified resolution Usage: showlogo <resolution> [<bmp_width> <bmp_height>] resolution - screen resoltuion on HDMI screen '1080p60hz' will be used by default if missing bmp_width (optional) - width of logo bmp file '1280' will be used by default if missing bmp_height (optional) - height of logo bmp file '720' will be used by default if missing
Replace boot logo image with yours as described in previous sections
and then modify 'showlogo' command in boot.ini.
Here are examples.
1. Logo image size of width 1920 and height 1080
If your monitor's resolution is 1920×1080 and you want to set a bmp file in 1920×1080,
set command in boot.ini as following.
setenv hdmimode "1080p60hz" showlogo ${hdmimode} 1920 1080
2. Logo image size of width 1024 and height 600
setenv hdmimode "1024x600p60hz" showlogo ${hdmimode} 1024 600
3. Logo image size of width 800 and height 480
setenv hdmimode "800x480p60hz" showlogo ${hdmimode} 800 480
[Optional] Workaround for Logo Splash Issue with VU7+
For some specific cases that VU7+ uses an extra power source, strange colors and flashing screen issue during display initialization on u-boot stage can be shown.
To remove it, the following workaround can fix it.
1. update u-boot
Click the following site to download the boot loader to fit display as 1024x600p60hz, DVI mode.
- target
(copy tar.gz file in /media/boot and boot the C2 system) # cd /media/boot # tar xvfz c2_vu7plus_splash_20180720.gz # cd ./sd_fuse # ./sd_fusing.sh /dev/mmcblk0 (reboot)
2. setup boot.ini
Some points in boot.ini should be adjusted.
### set "display_autodetect" as "false" setenv display_autodetect "false" ### block a default "m" and change "m" as "1024x600p60hz" setenv m "1024x600p60hz" ### HDMI DVI/VGA modes ### set "vout" as "dvi" setenv vout "dvi" ### turn on USB power usb pwren ### add "logoopt" setenv logoopt "osd1,loaded,0x3f800000,${m}" ### add "logo=${logoopt}" in "bootargs" setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro ${condev} no_console_suspend logo=${logoopt} hdmimode=${m} ${cmode} m_bpp=${m_bpp} vout=${vout} fsck.repair=yes net.ifnames=0 elevator=noop disablehpd=${hpd} max_freq=${max_freq} maxcpus=${maxcpus} monitor_onoff=${monitor_onoff} disableuhs=${disableuhs} mmc_removable=${mmc_removable} usbmulticam=${usbmulticam} ${hid_quirks}"
3. References
You can refer to the history from ODROID Forum pages.
4. Sample Source Codes
This section describes u-boot code change history.
In case of 1024x600p60hz, you don't need to following this section,
but refer to this section and use pre-built u-boot.
https://wiki.odroid.com/odroid-c2/application_note/software/bootlogo#update_u-boot
- u-boot/board/hardkernel/odroidc2/odroidc2.c : in function board_late_init
#ifdef CONFIG_DISPLAY_LOGO /* run_command("showlogo 1080p60hz", 0); */ run_command("showlogo 1024x600p60hz", 0); #endif
- u-boot/common/cmd_showlogo.c
https://github.com/hardkernel/u-boot/blob/odroidc2-v2015.01/common/cmd_showlogo.c#L119
/* if (NULL == getenv("vout_mode")) setenv("vout_mode", "hdmi"); */ setenv("vout_mode", "dvi");
Android Boot Animation
In case of Android, you can use bootanimation.zip method to show your custom logo using animation.
Please refer to this reference site.
https://android.googlesource.com/platform/frameworks/base/+/master/cmds/bootanimation/FORMAT.md
The system selects a boot animation zip file from the following locations.
/system/media/bootanimation.zip /oem/media/bootanimation.zip
Before copy process, you need to change root filesystem permission as r/w.
And copy your bootanimation.zip into /system/media/ folder.
- target
shell@odroidc2:/ $ su root@odroidc2:/ #
- target
root@odroidc2:/ # mount -o rw,remount / [ 357.892532@2] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
Samples of boot animation
Here are the sample capture videos with ODROID-C2 Android Marshmallow.
To show bootanimation samples, the following reference files are used.
Please note the sources of the files.
[ Sample 1 ]
Directory Layout
* desc.txt * part0 * part1 * part2 * part3 * part4
- desc.txt
814 214 60 c 1 30 part0 c 1 0 part1 c 0 0 part2 c 1 64 part3 c 1 15 part4
Size of png files is 814 by 214.
[ Sample 2 ]
https://androidbootanimation.com/
https://androidbootanimation.com/1280x720-boot-animations/animated-andy-boot-animation/
Directory Layout
* desc.txt * Part0 * Part1
- desc.txt
800 1280 24 p 1 0 Part0 p 0 0 Part1
Size of png files is 800 by 1280.