ODEJOI X91 firmware

Introduction

  • Overview
    • The player
    • What was done
    • The firmware in one page
    • Constraints
  • Quick start
    • Requirements
    • Files that are not in git
    • Build the images
    • Flash a theme
    • Look at the firmware offline
    • Build these pages
  • Project layout

Firmware reference

  • About this reference
  • Hardware, boot and upgrade mode
    • Identification
    • Memory
    • Boot record and boot loader
    • Upgrade mode
    • Recovery
  • The firmware image (LFI)
    • Layout
    • The 137 files
    • Settings: CONFIG.BIN
    • Libraries on the user disk
  • Programs (.AP)
    • File layout
    • Bank groups and their RAM
    • Programs and how they start
    • System calls
    • Messages and keys
    • Shared code
  • Resources, menus and fonts
    • Resource files (.STY)
      • Header
      • Pictures
      • Texts
      • Layout tables
      • List boxes
    • Menus (.MCG)
    • Fonts
    • Picture bookkeeping in COMMON.STY
  • Display driver (DRV_UI.DRV)
    • Layout
    • Functions
    • Keyed draws
    • List boxes
    • The LCD driver and rotation
  • Shared interface code
    • Status bar
    • App timers
    • List control (gui_directory)
    • Menus (gui_menulist)
    • Keys
    • Key filter with the screen off
    • Screensaver
    • Other shared routines used by new code
  • Music: program, engine and libraries
    • Music root menu
    • The lists
    • The playing screen
    • Variables (MUSIC.AP)
    • Engine messages
    • Volume
    • The library builder (PLAYLIST.AP)
    • Playlists (.m3u) as the firmware reads them
    • MUSIC.LIB
    • M3U.LIB
  • Other programs
    • Main menu (MAINMENU.AP)
    • Settings (SETTING.AP)
    • eBook reader (EBOOK.AP)
    • Folder view (BROWSER.AP)
    • Bluetooth (BT.AP, BTENGINE.AP)
    • Programs never changed
    • Programs not on the main menu
  • Reading and writing the firmware
    • Where the procedure comes from
    • x91_flash.py
    • x91_tool.py
    • The first dump
    • History of the write path
    • Risks that remain

Graphite design

  • The Graphite design
    • Themes
    • Pictures
    • Screen renders
  • The stages
    • Stage notes

Code reference

  • Build system
    • One build from the stock image
    • The parts
    • Changing the design
    • Helpers worth knowing
    • Outputs
    • Before 1.0: the stages
  • Program patches
    • Method
    • The patches
    • thumb_sim.py
  • New program code (design/playlist)
    • Rules the code follows
    • Files
    • Host test
    • Placement into bank tails
    • liststyle.c: code in a 0x1200 bank
    • search.c: the search (stage 25)
    • “Add songs” (stage 26)
    • Naming playlists (stage 27)
  • Tools
    • On the device
    • Firmware files
    • Media on the player
    • Vendor package analysis
    • Design
    • Documentation

Project

  • History
    • 2026-10-12 to 2026-10-13: from no firmware to a running custom image
    • 2026-10-14: status bar, clock, reader
    • 2026-10-21 to 2026-10-22: playlists and lists
    • 2026-10-23: search, adding songs, naming playlists
    • 2026-10-23: release 1.0
    • Early assumptions that were wrong
  • Open work
  • Sources
    • Used for flashing and building
    • Used for analysis only
  • Glossary
ODEJOI X91 firmware
  • Search


© Copyright 2026, ODEJOI X91 firmware project.

Built with Sphinx using a theme provided by Read the Docs.