Skip to content

Repository files navigation

BookPoint

BookPoint Logo

Открытая операционная система для электронной книги Xteink X4 Pro
Монохромный интерфейс 800×480, сноски внизу страницы, аппаратная интеграция ESP32-S3 и аналитика чтения.

Platform Display Touch RTC Tests License Release


О проекте

BookPoint — открытая микропрограмма для электронной книги Xteink X4 Pro (ESP32-S3, 16 МБ Flash, 8 МБ Octal PSRAM, дисплей E-Ink 800×480).

Прошивка содержит графический монохромный интерфейс, оптимизированный под контроллеры SSD1677 / UC8279, емкостный сенсор Goodix GT911 и аппаратные кнопки управления. Архитектура ориентирована на высокую скорость отрисовки страниц, надежность сохранения состояния и максимальную энергоэффективность.


Сравнение BookPoint и CrossPoint

Ниже приведено техническое сопоставление функциональных возможностей и архитектурных решений BookPoint OS и базовой микропрограммы CrossPoint для аппаратной платформы Xteink X4 Pro.

Подсистема / Функция BookPoint OS CrossPoint Reader
Аварийное восстановление (Escape Hatch) Аппаратный загрузочный перехватчик RecoveryBoot по удержанию кнопки Right (GPIO7) при старте; программный переход в Escape Hatch из меню системных настроек. Защита от потери работоспособности на устройствах с аппаратной блокировкой USB. Отсутствует аппаратная детекция аварийного загрузчика на ESP32-S3; нет программного входа в Escape Hatch из настроек.
Отказоустойчивость OTA-обновлений Прямое безопасное переключение указателя otadata в обход проверки esp_ota_set_boot_partition (устранение Issue #1918 при работе с модифицированными образами). Стандартный механизм ESP-IDF OTA; возможен отказ при верификации контрольных сумм и конфигурации efuse.
Режим USB-накопителя (USB Flash Drive) Встроенный USB Mass Storage (MSC) на базе аппаратного контроллера SDMMC. Прямое монтирование карты microSD в операционной системе ПК без настройки Wi-Fi. Безопасный возврат с USB-OTG на Serial/JTAG. Передача файлов возможна только по беспроводной сети через встроенный HTTP-сервер либо путем физического извлечения карты памяти.
Сноски на текущей странице Автоматическое извлечение текста сносок и отрисовка в нижней части страницы под разделительной чертой без потери текущего контекста чтения (поддержка внутренних ссылок id/name, внешних файлов сносок и форматов ЛитРес/royallib). Переход по гиперссылке в конец книги или в отдельный раздел с необходимостью возврата назад.
Навигация при чтении (Quick Return Jump) Фиксация точки исхода при переходах по ссылкам, сноскам, оглавлению или прогрессу чтения; возврат к позиции чтения в одно касание кнопкой «<*». Однонаправленный переход без сохранения предыдущей координаты в буфере навигации.
Управление подсветкой (Dual CCT Frontlight) 10-битное логарифмическое перцептивное управление ШИМ с минимальным аппаратным порогом 2 LSB (0.195%). Подсветка сохраняет устойчивое свечение на минимальной яркости (1%) при любом цветовом балансе. Линейная 8-битная шкала регулировки; отключение светодиодов на минимальных значениях яркости при смешивании каналов.
Аппаратная адаптация дисплеев Изолированная инициализация софт-старта DC-DC преобразователя (команда 0x0C) только для SSD1677, исключающая акустический писк дросселей и нестабильность шины питания на контроллерах UC8279. Единый профиль инициализации панели; возможен высокочастотный акустический шум катушек индуктивности на экранах ревизии UC8279.
Сенсорный ввод (GT911) Физические хит-боксы элементов управления увеличены до ≥56 px; выбор 3- и 9-зонной сетки тапов с настраиваемой центральной зоной меню; аппаратная фильтрация дребезга и защита I2C через ScopedI2CBusLock. Базовые размеры интерактивных зон (44 px), фиксированная трехзонная раскладка экрана чтения.
Аналитика чтения Непрерывный учет сессий в StatsStore с фильтрацией периодов простоя, подсчетом темпа чтения и экспортом детального журнала в reading_stats.csv. Базовый счетчик общего времени чтения без фильтрации пауз и без экспорта журнала на карту памяти.
Энергосбережение в простое Аппаратный вход в Light Sleep короткими интервалами при ожидании пользовательского ввода с сохранением тактирования подсветки из генератора RC_FAST (FREEINK_FRONTLIGHT_LS). Стандартный цикл ожидания без микро-сна процессора между событиями ввода.

Основные функциональные возможности

Графический интерфейс

  • Монохромная компоновка 800×480: однопиксельные разделители, специализированные E-Ink гарнитуры, отсутствие градационного шума и паразитных контуров.
  • Строка состояния: отображение системного времени аппаратного RTC, даты, уровня заряда аккумулятора (в процентах и графически), статуса Wi-Fi и уровня подсветки.
  • Панель быстрых настроек: вызов свайпом от верхнего края экрана; независимые регуляторы яркости холодного и теплого каналов подсветки, переключатели Wi-Fi, темной темы, ориентации экрана и спящего режима.
  • Виджет текущего чтения: карточка последней открытой книги с отображением обложки, названия, автора, процентного прогресса, расчетного времени чтения и счетчика непрерывных дней активности.
  • Список недавних книг: горизонтальная лента обложек для перехода к чтению в одно касание.
  • Панель навигации: разделы «Библиотека», «Поиск», «Статистика», «Приложения» и «Настройки» с векторными пиктограммами 32×32.
  • Гибридное управление: поддержка жестов емкостного сенсора Goodix GT911 с калиброванными зонами касания (≥56 px) и физических аппаратных клавиш.

Подсистема чтения и типографика

  • Наэкранное меню чтения: вызов оверлеев касанием центральной зоны экрана. Нижняя панель содержит ползунок навигации по страницам, процент прогресса и оценку времени до конца главы.
  • Быстрый возврат к чтению: фиксация исходной позиции при переходах по ссылкам, сноскам, оглавлению или шкале прогресса; кнопка «<*» возвращает к месту чтения в одно касание.
  • Настройка типографики: выбор размера шрифта, гарнитуры (включая JetBrains Mono, Roboto Condensed, OpenDyslexic), межстрочного интервала и полей страницы с динамической переверсткой текста в реальном времени.
  • Потоковый декодер изображений: аппаратное декодирование книжных иллюстраций высокого разрешения через внешнюю память PSRAM.
  • Сноски внизу страницы: автоматическое извлечение текста примечаний и отображение под разделителем текущей страницы без перехода в конец файла. Поддерживаются внутренние якоря (атрибуты id, xml:id, name) и ссылки на внешние файлы книги.
  • Форматы файлов: EPUB 2/3, TXT, XTC, XTCH. Поддержка таблиц стилей CSS, алгоритмов расстановки переносов и RTL-текста.
  • Автоматическое определение кодировок TXT: частотный статистический анализатор TxtEncoding определяет кодировки Windows-1251, KOI8-R и CP866 с автоматическим преобразованием потока в UTF-8.
  • Экранная клавиатура: русская (ЙЦУКЕН) и английская (QWERTY) раскладки; английская раскладка активируется по умолчанию для полей ввода сетевых паролей и адресов.
  • Конфигурируемые зоны касания: выбор трехзонной или девятизонной схемы тапов для перелистывания страниц и вызова меню.

Режим ожидания и экран сна

  • Монохромные заставки 800×480 и 480×800: встроенный каталог изображений для книжной и альбомной ориентации.
  • Режимы отображения: случайная ротация изображений из каталога, фиксированная заставка, обложка читаемой книги, а также системный экран с информацией о заряде аккумулятора и версии микропрограммы.

Аппаратная интеграция Xteink X4 Pro

  • Аппаратные часы реального времени (RTC BM8563): контроллер Belling BM8563 (I2C-адрес 0x51, PCF8563-совместимый) на шине Wire (SDA 39, SCL 38). Аппаратная инициализация системного времени settimeofday() при запуске, контроль флага потери питания (VL bit).
  • Контроллер аккумулятора (CW2017): непрерывный опрос напряжения ячейки; автоматический перевод устройства в режим глубокого сна при падении напряжения ниже 3400 мВ для защиты аккумулятора от глубокого разряда.
  • Потокобезопасная синхронизация I2C (ScopedI2CBusLock): рекурсивный мьютекс FreeRTOS изолирует шину I2C при одновременном обращении к сенсору GT911 (0x5D), контроллеру питания CW2017 (0x63) и часам BM8563 (0x51). Реализована процедура аппаратного сброса шины (9 импульсов SCL) при залипании линии SDA.
  • Фреймбуферы и кэш в PSRAM: графические буферы 800×480 и буферы страниц книги размещаются в 8 МБ внешней памяти Octal PSRAM с контролем распределения памяти (std::nothrow).
  • 10-битная перцептивная подсветка Dual CCT: раздельное ШИМ-управление холодным (GPIO8) и теплым (GPIO9) каналами по логарифмической кривой с аппаратным порогом 2 LSB (0.195%), удерживающим минимальное свечение в темноте. Обесточивание контроллера подсветки в спящем режиме.
  • Аппаратная изоляция питания дисплея: команда инициализации софт-старта DC-DC преобразователя (0x0C) выполняется строго на контроллере SSD1677, предотвращая нестабильность преобразователя и акустический шум катушек питания на экранах с контроллером UltraChip UC8279.
  • Энергосбережение: переход процессора в режим Light Sleep в интервалах ожидания ввода, автоматическое отключение Wi-Fi через 3 минуты неактивности.
  • Журнал чтения (StatsStore): пошаговая фиксация времени сессий с фильтрацией простоя, вычисление темпа чтения и атомарный экспорт журнала в файл reading_stats.csv на карту microSD.

Целевая аппаратная платформа

Подсистема / Компонент Спецификация Назначение в BookPoint
SoC / Процессор ESP32-S3 (Dual-Core Xtensa LX7 @ 240 МГц) Рендеринг страниц, обработка шрифтов, системная логика
Память 16 МБ Flash + 8 МБ Octal PSRAM Фреймбуферы 800×480, буферы верстки EPUB и кэш страниц
Дисплей 3.97" E-Ink 800×480 (SSD1677 / UC8279, 240 PPI) Аппаратный 4-градационный рендеринг, быстрые волновые формы DU
Сенсорный экран Емкостный контроллер Goodix GT911 Обработка жестов, панель быстрых настроек, экранная клавиатура
Аппаратные часы (RTC) Belling BM8563 (I2C 0x51, PCF8563-совместимый) Автономный отсчет времени при выключенном питании
Контроллер аккумулятора CellWise CW2017 (I2C 0x63) Высокоточный мониторинг заряда и защита от разряда (<3.4V)
Подсветка Двухканальная CCT (Холодный GPIO8 / Теплый GPIO9) Логарифмическая 10-битная регулировка яркости и цветового тона
Хранилище MicroSD слот (SDMMC 1-bit / SPI) Локальная библиотека книг, шрифты, словари, кэш обложек

Установка и обновление

Актуальный бинарный образ микропрограммы: BookPoint_2.2.4_x4pro.bin (раздел Releases).

Способы установки

  1. Через веб-программатор (WebSerial):
    • Открыть страницу https://crosspointreader.com/#flash-tools в браузере с поддержкой WebSerial (Chrome / Edge).
    • Подключить устройство кабелем USB-C к компьютеру, выбрать файл BookPoint_2.2.4_x4pro.bin и нажать Install.
  2. С карты microSD:
    • Скопировать файл BookPoint_2.2.4_x4pro.bin в корневую директорию карты памяти microSD и переименовать его в update.bin.
    • Вставить карту в ридер и выбрать пункт обновления прошивки в системных настройках.
  3. Беспроводное обновление (OTA):
    • Подключить устройство к сети Wi-Fi, перейти в меню «Система» → «Проверить обновления» и подтвердить установку новой версии.

Подготовка устройств с региональной блокировкой

Для устройств с заводской китайской версией прошивки перед первой установкой требуется снять блокировку с помощью утилиты со страницы https://crosspointreader.com/unlock, после чего прошить BookPoint любым из указанных способов.


Сборка из исходного кода

Проект собирается с помощью PlatformIO.

Клонирование репозитория

git clone --recurse-submodules https://github.com/klanva/BookPoint.git
cd BookPoint

Сборка прошивки

# Windows
build.bat

# Или через PlatformIO CLI
pio run -e x4pro

Готовый файл прошивки формируется по пути .pio/build/x4pro/firmware.bin.

Автоматизированное тестирование

Пакет сквозных тестов интерфейса, графических подсистем, парсеров и аппаратных шин:

python tests/e2e/run_e2e_tests.py --all

Набор из 243 тестов проверяет логику компонентов UI, декодеров изображений, эмуляторов шины I2C (GT911, BM8563, CW2017) и жестов сенсорного ввода.


Лицензия

Проект распространяется под лицензией MIT.

About

Флагманская открытая прошивка для ридеров Xteink X4 Pro (ESP32-S3): современный интерфейс в стиле Kobo и Kindle, сноски внизу страницы, русская тач-клавиатура, аналитика чтения

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Contributors

Languages