How my e-reader lost its stripes
This post chronicles a deep dive into debugging an inexpensive e-reader's display issues, from ghosting to elusive vertical stripes. The author leverages advanced AI assistants to navigate unfamiliar firmware, unraveling complex interactions between software and e-ink hardware. It's popular for showcasing the surprising depth of low-level device hacking made accessible by modern AI tools.
The Lowdown
The author, a lifelong reader, recently acquired a tiny Xteink X3 e-reader and installed the open-source CrossPoint firmware, eager to customize it. However, this quickly led him down a rabbit hole of display anomalies, including incorrect greyscale rendering, ghosting, and persistent vertical stripes across images.
- Initial Glitches: The e-reader displayed dark greys as black and light greys as very pale, along with ghosting of previous content and noticeable vertical stripes on images.
- AI-Assisted Debugging: Employing GPT-6 Astra and later Fable 5.1 (Claude Code), the author iteratively debugged the device. Astra identified a missing "grey nudge" for the viewer app's rendering, fixing ghosting.
- The Stripe Saga: The vertical stripes proved more stubborn. After Astra misidentified dithering patterns, Fable used advanced image processing (column averaging, 1D FFT) to measure the stripes, determining their period was eight pixels.
- Uncovering Root Causes: Through systematic testing, it was discovered that stripes appeared only when grey pixels were present and adjacent to different shades, pointing to the
freeink-sdk's greyscale nudge implementation. - Fixing a Secondary Bug: During stripe investigation, a persistent issue where dark grey still rendered as black was identified. Fable traced this to a firmware mismatch in how dark grey was requested, restoring the device's true four-shade capability and improving text rendering.
- The Solution: The stripes were finally eliminated by switching to the manufacturer's longer "XTH4" four-grey image mode, which used a more complex, slower waveform. Fable ingeniously solved memory constraints to implement this without requiring more RAM.
- Hypothesized Mechanism: The author conjectures that timing variations in gate driver clocks for rows, particularly during voltage swings for grey pixels adjacent to other shades, caused the periodic luminance shifts.
- Impact: The author successfully submitted fixes to both
freeink-sdkand CrossPoint, resolving the display issues. - AI's Role: The experience highlighted the transformative power of AI assistants in accelerating complex low-level debugging, enabling rapid learning and problem-solving in unfamiliar domains.
This journey from curious e-reader owner to firmware contributor illustrates how modern AI tools can demystify intricate hardware-software interactions, making deep technical hacking surprisingly accessible and rewarding.