Skip to content

Port Kobalt reader to PocketBook InkPad Color 3 - #37

Draft
42lizard wants to merge 11 commits into
mainfrom
experiment/kobalt-pocketbook
Draft

42lizard wants to merge 11 commits into
mainfrom
experiment/kobalt-pocketbook

Conversation

@42lizard

@42lizard 42lizard commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

Summary

Port Kobalt to PocketBook InkPad Color 3 (PB743K3), firmware U743k3.6.10.2854, using firmware Qt 6.8.2 and InkView. The fork is pinned at c1e884e, a seven-commit linear port series based on upstream main f2268b5. The fork now contains its complete PocketBook SDK, build, package and validation workflow, usable from a standalone clone.

PocketBook library → system/bin/kobalt.app → application launcher → EPUB path
  shared opening view → direct ZIP resources → Kobalt reader / CREngine
    save local position → drain pending work → exit to previous task

Starting without a book opens the native PocketBook library. Registration appends Kobalt to EPUB handlers while preserving the default and other associations. Successful opening updates the InkView task title and recent books. There is no Android start page or desktop file picker in this flow.

Upstream synchronization brings 66 commits. Direct ZIP loading supersedes the temporary PocketBook socket adapter, which is removed. Integration adjustments retain the sensor-free host, Qt 6.8-compatible tests, ARM dependency options, verified caching and the standalone font library. The full font bundle remains included. The fork supplies firmware extraction, ABI/runtime checks, packaging and installation documentation through ./build-pocketbook.sh --firmware /path/SWUPDATE.BIN --test. The parent only pins that source and links its instructions; duplicate parent tools are removed.

Evidence

  • Before: The PocketBook build depended on the monorepo SDK image, firmware helpers, package tests and documentation.
    After: An independent clone builds its own SDK image and the installable package with only the checkout and verified firmware mounted. The complete command passes, including ten Python checks, host EPUB and offline firmware ARM workflows; all 108 host regression groups pass in 213.24 seconds. The package records source, firmware, SDK and artifact hashes. Final validation precedes publication, with a regression proving that source changes preserve the previous ZIP. Existing monorepo CMake cache migration is documented. Standards and Spec reviews have no open findings.

  • Before: PocketBook QPA UpdateLater events crashed QWidget compression; ARM EPUB rendering hit an unaligned CREngine glyph-cache store; the native library handler was missing from system/bin; localhost was unavailable on the reader.
    After: The application adapter preserves non-widget events, glyph allocations honor their alignment, the native handler forwards EPUB paths, and resources open offline. The user confirmed startup and EPUB opening on the installed pre-sync fork commit 6de0711.

  • Before: The larger book test captured an intermediate layout-progress overlay after a fixed delay.
    After: It waits for the reader's public presentation-readiness contract, requires the page to change after PageDown, and compares it exactly after reopening. Captures establish the race and successful restoration.

  • Current synchronized build: Host workflow and exact-firmware ARM workflow pass. Two EPUBs copied privately from the device pass open/page/close/reopen with IP networking disabled. Fixture and real-book ARM workflows take 8.71, 15.04 and 24.11 seconds; these are workflow timings, not device-performance claims. Peak memory and native refresh counts were not measured.

  • Validation: The synchronized reader passed 107 host test groups; the standalone buildchain now passes 108 groups, including ten build/package/registration checks. Formatting (379 C++ files) and UI architecture pass. All 13 direct libraries and 1,653 strong imports match firmware; ARM softfp, loader and no-RPATH checks pass. Standards and Spec follow-up reviews found no source-level issues.

  • Artifacts: The synchronized 117-file package is installed on the reader and every package file verified. Kobalt user-state and native-association hashes are unchanged; replaced files are backed up. Physical acceptance of this update remains pending. Hardware display/task/power calls are stubbed in ARM emulation; native QPA and physical input behavior are not proven by those tests.

Review bases: parent main 60509aa, fork cbc0f4e; follow-up reviews cover the offline fix, upstream integration and standalone buildchain delta from fork 1a17e2f / parent 7a894fe. The rebase preserves the exact tested tree 3aa5ea8079d53b4146f0f7e3d047406e046cdb29; archive tags retain the prior history and the device-confirmed 6de0711 source. Earlier review fixes cover version consistency, Escape release, text-edit arrow keys and fallback wording.

Merge Danger

Door: two-way

Opt-in reader with isolated application state. Registration backs up extensions.cfg and preserves the default reader. Keep this PR draft until the synchronized build has device acceptance. Progress and bookmarks remain local Kobalt state; native progress/annotation interoperability, dictionary, frontlight and Readest synchronization remain incomplete.

Blast Radius: reader

Shared standalone build extraction also serves desktop; the glyph patch applies to the shared engine. Native refresh, keys/keyboard, orientation, suspend/wake, USB and task return still require validation. Firmware libraries and hardware stubs are test inputs only. No binary release is published; redistribution requires corresponding source.

Standalone build validation used Docker on an ARM64 host. AMD64 and Podman are untested. Kobo build entry points are unchanged; no full Kobo cross-build was performed. The tooling move does not install a new device build or change the pending physical-acceptance status.

@42lizard 42lizard changed the title Explore a standalone Kobalt port for PocketBook Port Kobalt reader to PocketBook InkPad Color 3 Oct 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant