Skip to content

Fix takeover mode on OS 3.28 (EPFramebuffer::swapBuffers ABI change)#18

Open
frapeti wants to merge 1 commit into
MaximeRivest:mainfrom
frapeti:fix/quill-swapbuffers-os-3.28
Open

Fix takeover mode on OS 3.28 (EPFramebuffer::swapBuffers ABI change)#18
frapeti wants to merge 1 commit into
MaximeRivest:mainfrom
frapeti:fix/quill-swapbuffers-os-3.28

Conversation

@frapeti

@frapeti frapeti commented Jul 8, 2026

Copy link
Copy Markdown

Summary

On reMarkable OS 3.28+, opening The Diary in takeover mode (via AppLoad) fails immediately and can reboot the tablet:

/home/root/xovi/exthome/appload/riddle/riddle: symbol lookup error:
  libquill.so: undefined symbol:
  _ZN13EPFramebuffer11swapBuffersE5QRect13EPContentType12EPScreenMode6QFlagsINS_10UpdateFlagEE

This is not an AppLoad/xovi issue — the hashtab loads fine. reMarkable changed the vendor e-paper API: the EPFramebuffer::swapBuffers(QRect, …) overload on 3.28 no longer takes EPContentType.

OS Mangled symbol (QRect overload)
≤3.27 …swapBuffersE5QRect13EPContentType12EPScreenMode…
3.28+ …swapBuffersE5QRect12EPScreenMode…

Prebuilt AppLoad bundles shipping libquill.so compiled against 3.27 symbols therefore crash on 3.28.

Fix

  • Resolve both mangled swapBuffers symbols at runtime via dlsym in quill_c.cpp.
  • Link -ldl when building libquill.so.
  • One libquill.so works on 3.27 and 3.28+.

Verification

Tested on Paper Pro (Ferrari), OS 3.28.0.162:

  • Deploy rebuilt libquill.so into the existing v0.3.0 AppLoad bundle
  • Takeover launch: panel init, aux framebuffer 1620×2160, pen grab, oracle ready
  • Journal shows riddle: the diary is open — no symbol lookup error, no rm-emergency reboot

Release note

After merge, rebuild and republish the AppLoad bundle (./build-takeover.sh && scripts/make-bundle.sh) so installs pick up the new libquill.so. Existing users on 3.28 can hot-swap only libquill.so as a quick fix.

Made with Cursor

On reMarkable OS 3.28, libqsgepaper dropped EPContentType from the QRect
swapBuffers overload. libquill.so built for 3.27 fails at launch with:

  symbol lookup error: undefined symbol:
  _ZN13EPFramebuffer11swapBuffersE5QRect13EPContentType12EPScreenMode...

Resolve both the legacy and 3.28+ mangled symbols via dlsym at runtime so
one libquill.so works on 3.27 and 3.28+. Link libdl for dlsym.

Tested on Paper Pro (Ferrari) OS 3.28.0.162 — riddle opens in takeover mode
without crashing or rebooting the tablet.

Co-authored-by: Cursor <cursoragent@cursor.com>
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