Skip to content

Add support for Xteink X4 Pro (SSD1677/UC8179/UC8279, auto-detected) - #43

Open
clackups wants to merge 2 commits into
mainfrom
xteink-x4-pro-support
Open

Add support for Xteink X4 Pro (SSD1677/UC8179/UC8279, auto-detected)#43
clackups wants to merge 2 commits into
mainfrom
xteink-x4-pro-support

Conversation

@clackups

Copy link
Copy Markdown
Owner

Adds the Xteink X4 Pro e-reader (ESP32-S3, 800x480 SPI e-paper, GT911 touch, CW2017 fuel gauge, dual-channel front-light, three buttons, SDMMC SD). The panel ships with one of three controllers depending on manufacturing run; a new boot-time probe in the new display_xteink_epd.cpp backend identifies which one is present (SSD1677, UC8179, or UC8279) and drives it accordingly, so a single firmware image works across runs.

Register sequences, timing and the controller probe are ported from the FreeInk SDK (github.com/Free-Ink/freeink-sdk, MIT licensed), which reverse-engineered the OEM firmware. Only the black/white differential-refresh path is implemented; grayscale is out of scope, matching every other e-paper backend in this codebase.

Also adds a CW2017 fuel-gauge backend to components/battery/ and a new xteink_x4_pro board header, Kconfig entries, CMake preset and sdkconfig defaults.

This board has been added without on-hardware testing; see HARDWARE.md for the caveat and the touch-orientation dial-in note.

Closes #40

Claude-Session: https://claude.ai/code/session_015WWGnt5dAsEsAJPw7tYxTj

clackups and others added 2 commits August 20, 2026 21:53
Adds the Xteink X4 Pro e-reader (ESP32-S3, 800x480 SPI e-paper, GT911
touch, CW2017 fuel gauge, dual-channel front-light, three buttons,
SDMMC SD). The panel ships with one of three controllers depending on
manufacturing run; a new boot-time probe in the new
display_xteink_epd.cpp backend identifies which one is present
(SSD1677, UC8179, or UC8279) and drives it accordingly, so a single
firmware image works across runs.

Register sequences, timing and the controller probe are ported from
the FreeInk SDK (github.com/Free-Ink/freeink-sdk, MIT licensed),
which reverse-engineered the OEM firmware. Only the black/white
differential-refresh path is implemented; grayscale is out of scope,
matching every other e-paper backend in this codebase.

Also adds a CW2017 fuel-gauge backend to components/battery/ and a
new xteink_x4_pro board header, Kconfig entries, CMake preset and
sdkconfig defaults.

This board has been added without on-hardware testing; see
HARDWARE.md for the caveat and the touch-orientation dial-in note.

Closes #40

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015WWGnt5dAsEsAJPw7tYxTj
Combines Xteink X4 Pro support with main's Waveshare ESP32-S3-Touch-LCD-7
support: merges the derived-feature-flag tables and CMakePresets board
list in AGENTS.md, keeps both boards' Kconfig defaults side by side, and
ORs together the two boards' shared-I2C-bus #if conditions in main.cpp.
Both xteink_x4_pro and waveshare_touch_lcd_7 presets build cleanly after
the merge.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EvLCxY7Bk3XHvGQa6FKyoe
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.

Add support for Xteink X4 Pro

1 participant