No description
- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| backups | ||
| boot_logo | ||
| .gitignore | ||
| bootanimation_new.zip | ||
| EXPLAINED.md | ||
| make_bootanim_frame.py | ||
| make_splash.py | ||
| README.md | ||
| splash_new.img | ||
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