Hi everyone
,
I’m currently working on modifying image assets in the GC_Artemis-Firmware (ESP-IDF v5.1.7) and I’m trying to correctly regenerate .bin image files used by the firmware (stored in SPIFFS).
I would really appreciate clarification on the exact image format expected by the firmware.
What I’ve observed so far : ^^
There seem to be different image formats used in the firmware:
- intro/artemis.bin
- Size: ~810 bytes
- Appears to be LVGL format (Indexed 4-bit palette)
- Dimensions: 105×14
-
theme1/menu/bg.bin- Size: ~4116 bytes
- Contains a 116-byte header
- Pixel data size: 4000 bytes (50×40×2 → RGB565?)
-
bg2.bin- Size: ~8260 bytes
- Appears to be LVGL indexed 4-bit (128×128)
So it looks like:
- Some images are LVGL binary format (with palette)
- Others may be raw RGB565 with a custom header
What I tried :
- Converting PNG → RGB565 (little and big endian)
- Using LVGLImage.py with:
--cf I4--cf RAW--cf RAW_ALPHA--compress NONE / RLE- different
--alignvalues
- Extracting original headers and replacing only pixel data
- Testing by injecting solid colors (to verify correct file is being read)
Sometimes I get:
- Black screen
- Horizontal lines
- Color corruption
- Pixel noise
So clearly I’m missing something about the expected binary structure.
My main questions :
- What is the exact expected format for:
- Boot image (
intro/artemis.bin) - Menu background (
bg.bin) - Menu background 2 (
bg2.bin)
- Are these:
- LVGL raw images?
- LVGL indexed images?
- Custom RGB565 + header?
- Compressed internally?
- Is there an official tool or documented method to regenerate these
.binfiles correctly? - Does the firmware expect:
- Specific alignment?
- RLE compression?
- Specific header structure?
Goal :
I simply want to replace images (logo and background) while keeping the original UI and firmware intact.
If someone could clarify the exact structure or provide guidance on the correct conversion process, that would be extremely helpful.
Thanks in advance! ![]()