User reported their back button didn't work on crosspoint but did work on stock. I had them run a few tests with logging and it turns out their back button reports 3832 which is above the 3800 threshold we detect for back button presses. This fixes the issue while still being within an acceptable range to not have any regressions on other buttons. This fix was verified by the user, and has been tested on an non problematic x3, and an x4.
OpenX4 E-Paper Community SDK
A community-maintained SDK for building firmware and tools for the Xteink X4 device. This repository is designed to be included as a Git submodule inside PlatformIO projects, providing a shared set of libraries, utilities, and development workflows that make working with the X4 simple and consistent.
β¨ What is this?
The OpenX4 E-Paper Community SDK provides:
- Common PlatformIO-friendly components for the Xteink X4
- Reusable libraries for display control, graphics, hardware helpers, utilities, etc.
- Tools to support flashing, packaging, testing, and device workflows
- A central place for community contributions, improvements, and shared knowledge
The SDK is intentionally modular - bring it into your project and use only what you need.
π Repository Structure
community-sdk/
βββ libs/ # Reusable components for X4 firmware
β βββ display/ # E-paper helpers & drivers
β βββ graphics/ # Drawing, fonts, UI utilities
β βββ hardware/ # GPIO, power, sensors, timings, etc.
β βββ ... # Add new modules here!
β
βββ tools/ # Dev tools for X4
βββ flash/ # Flash helpers, scripts, workflows
βββ assets/ # Conversion tools for images/fonts
βββ ... # Community-contributed utilities
Each lib aims to be self-contained, documented, and PlatformIO-friendly.
Libs should be categorized under libs/ based on functionality, and then contained within a directory under that root.
π¦ Adding to Your PlatformIO Project
Add this repository as a submodule:
git submodule add https://github.com/open-x4-epaper/community-sdk.git open-x4-sdk
Then add each lib you need into your platformio.ini file as lib_deps:
lib_deps =
BatteryMonitor=symlink://open-x4-sdk/libs/hardware/BatteryMonitor
EpdScreenController=symlink://open-x4-sdk/libs/display/EpdScreenController
Then you can include the libraries in your project as usual:
#include <BatteryMonitor.h>
#include <EpdScreenController.h>
Or load tools from the tools/ directory as needed.
π€ Contributing
This is a community-driven project - contributions are not only welcome but encouraged!
Ways you can help:
- Improve or extend existing libraries
- Add new modules to
libs/ - Build utilities for the
tools/directory - Report issues, propose features, or help refine the API
- Improve documentation
Contribution guidelines (short version)
- Keep modules self-contained
- Prefer zero-dependency solutions where practical
- Document your additions
- Use clear naming and consistent structure
- Be friendly and constructive in PR conversations
A full contributing guide will be added as the project grows.
π License
This SDK is released under an open-source MIT license. To keep things simple, all contributions and code must also fall under this license.
π¬ Community
Feel free to open GitHub issues for support, improvements, or discussion around the Xteink X4 ecosystem. Join the discord here: https://discord.gg/2cdKUbWRE8