Skip to content

Add support for Onyx Boox Note Air 5C, Fix Onyx Boox black screen on wake after font size change#14956

Merged
Frenzie merged 1 commit into
koreader:masterfrom
msk:fix/boox-black-screen
Feb 9, 2026
Merged

Add support for Onyx Boox Note Air 5C, Fix Onyx Boox black screen on wake after font size change#14956
Frenzie merged 1 commit into
koreader:masterfrom
msk:fix/boox-black-screen

Conversation

@msk

@msk msk commented Feb 9, 2026

Copy link
Copy Markdown
Contributor

Fixes #12445

On some Onyx Boox devices (confirmed on Palma 2), changing font size and then sleeping/waking causes a permanent black screen. The root cause is that Boox firmware performs rapid lifecycle cycling (RESUME/PAUSE/STOP) on wake, and the SurfaceView overlay surface is not recreated during this process; INIT_WINDOW never fires, leaving android.app.window` permanently nil.

This updates the android-luajit-launcher submodule to include koreader/android-luajit-launcher#579, which changes OnyxEPDController.needsView() to return false. The Onyx Qualcomm EPD API uses View.refreshScreen() via reflection, which works on any View; it does not require a SurfaceView. Using the NativeActivity's default DecorView surface instead correctly survives the Boox wake lifecycle.


This change is Reviewable

On some Onyx Boox devices, the SurfaceView surface is not recreated
after the rapid activity cycling that the Boox system performs on wake,
leaving android.app.window permanently nil. This caused a black screen
after font size change + sleep + wake.

The SurfaceView with setZOrderOnTop(true) was introduced for NGL4/Tolino
devices. The Onyx Qualcomm EPD API (View.refreshScreen) does not require
a SurfaceView — einkUpdate() already falls back to the DecorView content
view when no SurfaceView exists. Setting
OnyxEPDController.needsView()=false makes Onyx devices use
NativeActivity's default DecorView surface, which follows the standard
activity lifecycle and correctly survives wake.

Fixes koreader#12445
@Frenzie Frenzie changed the title Fix Onyx Boox black screen on wake after font size change Add support for the Onyx Boox Note Air 5C, Fix Onyx Boox black screen on wake after font size change Feb 9, 2026
@Frenzie Frenzie changed the title Add support for the Onyx Boox Note Air 5C, Fix Onyx Boox black screen on wake after font size change Add support for Onyx Boox Note Air 5C, Fix Onyx Boox black screen on wake after font size change Feb 9, 2026
@Frenzie Frenzie merged commit ba0e6e5 into koreader:master Feb 9, 2026
2 checks passed
@Frenzie Frenzie added this to the 2026.02 milestone Feb 9, 2026
@Frenzie Frenzie added the Android label Feb 9, 2026
@Frenzie

Frenzie commented Feb 9, 2026

Copy link
Copy Markdown
Member

Thanks!

@msk msk deleted the fix/boox-black-screen branch March 3, 2026 18:38
0xstillb pushed a commit to 0xstillb/koreader-thai that referenced this pull request May 9, 2026
…wake after font size change (koreader#14956)

On some Onyx Boox devices, the SurfaceView surface is not recreated
after the rapid activity cycling that the Boox system performs on wake,
leaving android.app.window permanently nil. This caused a black screen
after font size change + sleep + wake.

The SurfaceView with setZOrderOnTop(true) was introduced for NGL4/Tolino
devices. The Onyx Qualcomm EPD API (View.refreshScreen) does not require
a SurfaceView — einkUpdate() already falls back to the DecorView content
view when no SurfaceView exists. Setting
OnyxEPDController.needsView()=false makes Onyx devices use
NativeActivity's default DecorView surface, which follows the standard
activity lifecycle and correctly survives wake.

Fixes koreader#12445
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[onyx boox]: black screen when starting KR or resuming from sleep

2 participants