No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-19 07:55:40 +02:00
backups Initial commit 2026-09-19 07:55:40 +02:00
boot_logo Initial commit 2026-09-19 07:55:40 +02:00
.gitignore Initial commit 2026-09-19 07:55:40 +02:00
bootanimation_new.zip Initial commit 2026-09-19 07:55:40 +02:00
EXPLAINED.md Initial commit 2026-09-19 07:55:40 +02:00
make_bootanim_frame.py Initial commit 2026-09-19 07:55:40 +02:00
make_splash.py Initial commit 2026-09-19 07:55:40 +02:00
README.md Initial commit 2026-09-19 07:55:40 +02:00
splash_new.img Initial commit 2026-09-19 07:55:40 +02:00

MF800B boot logo & boot animation

Build a custom splash screen + boot animation for the MF800B (Rayhunter) and flash it to the device. See EXPLAINED.md for on-device internals, formats, and every step in detail.

splash_new.img and bootanimation_new.zip are already built — if you just want to flash the current logo, skip straight to Flashing.

Prerequisites

python3 -m pip install Pillow

Also needed: inkscape (rasterize SVGs), zip/unzip, and adb with a connected device.

1. Rasterize the SVG sources

mkdir -p frames
inkscape --export-type=png --export-filename=frames/bootlogo1.png -w 128 -h 128 boot_logo/bootlogo.svg
inkscape --export-type=png --export-filename=frames/bootlogo2.png -w 128 -h 128 boot_logo/anim1.svg
inkscape --export-type=png --export-filename=frames/bootlogo3.png -w 128 -h 128 boot_logo/anim2.svg
inkscape --export-type=png --export-filename=frames/bootlogo4.png -w 128 -h 128 boot_logo/anim3.svg
inkscape --export-type=png --export-filename=frames/bootlogo5.png -w 128 -h 128 boot_logo/anim4.svg
inkscape --export-type=png --export-filename=frames/bootlogo6.png -w 128 -h 128 boot_logo/anim5.svg

2. Build the splash image

python3 make_splash.py frames/bootlogo1.png splash_new.img 10485760 rgb565

Arguments: png, out.img, partition size (see below), pixel format (rgb565 or bgr888).

3. Build the boot animation

Unpack the original animation once to get byte-exact BMP templates:

unzip -o backups/bootanimation_backup_original.zip -d backups/orig_extract

Splice the new frames into copies of those templates:

mkdir -p bootanim_build/part0 bootanim_build/part1
python3 make_bootanim_frame.py frames/bootlogo2.png backups/orig_extract/part0/001.bmp bootanim_build/part0/001.bmp
python3 make_bootanim_frame.py frames/bootlogo3.png backups/orig_extract/part0/001.bmp bootanim_build/part0/002.bmp
python3 make_bootanim_frame.py frames/bootlogo4.png backups/orig_extract/part0/001.bmp bootanim_build/part0/003.bmp
python3 make_bootanim_frame.py frames/bootlogo5.png backups/orig_extract/part0/001.bmp bootanim_build/part0/004.bmp
cp bootanim_build/part0/004.bmp bootanim_build/part0/005.bmp
cp bootanim_build/part0/004.bmp bootanim_build/part0/006.bmp
python3 make_bootanim_frame.py frames/bootlogo6.png backups/orig_extract/part1/001.bmp bootanim_build/part1/001.bmp
cp boot_logo/desc.txt bootanim_build/desc.txt

Repackage (stored, no compression):

cd bootanim_build && rm -f ../bootanimation_new.zip && zip -X -0 -r ../bootanimation_new.zip part0 part1 desc.txt && cd ..

Flashing

Always back up the live originals first (commands include it).

Splash

adb shell setprop service.adb.root 1; adb shell busybox killall adbd; adb wait-for-device
adb push splash_new.img /data/local/tmp/splash_new.img
adb shell busybox dd if=/data/local/tmp/splash_new.img of=/dev/block/bootdevice/by-name/splash bs=4096
adb shell busybox md5sum /dev/block/bootdevice/by-name/splash   # verify vs: md5sum splash_new.img
adb reboot; adb wait-for-device; adb shell getprop sys.boot_completed

Boot animation

adb shell setprop service.adb.root 1; adb shell busybox killall adbd; adb wait-for-device
adb shell busybox blockdev --setrw /dev/block/bootdevice/by-name/system
adb shell busybox mount -o remount,rw /system
adb pull /system/media/bootanimation.zip bootanimation_backup_original.zip   # BACK UP FIRST
adb push bootanimation_new.zip /system/media/bootanimation.zip
adb shell busybox chmod 644 /system/media/bootanimation.zip; adb shell busybox chown 0:0 /system/media/bootanimation.zip
adb shell busybox mount -o remount,ro /system; adb shell busybox blockdev --setro /dev/block/bootdevice/by-name/system
adb reboot; adb wait-for-device; adb shell getprop sys.boot_completed

Partition size

adb shell blockdev --getsize64 /dev/block/bootdevice/by-name/splash   # or: ls -l backups/splash_backup_original.img