element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products & Partners
    Products & Partners
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Community Hub
Community Hub
Member's Forum Repurposing broken e-reader into a Sudoku machine ⛓︎‍
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Leaderboard
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Community Hub to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 8 replies
  • Subscribers 631 subscribers
  • Views 115 views
  • Users 0 members are here
  • e-reader
  • claude
  • ai
  • repurposing
Related

Repurposing broken e-reader into a Sudoku machine ⛓︎‍

91Raindrops
91Raindrops 20 hours ago

An e-reader with only part of its screen still working now runs Sudoku, a clock, a battery level and a warm pulsing light.

Don't throw it away: how a broken e-reader became a tiny Sudoku machine
My e-reader's screen was broken. Most of it stayed frozen on its last image, with lines running through it. By any normal measure it was e-waste. One afternoon later, the part that still works plays Sudoku.

image

Before: most of the screen is frozen, and only the bottom part still redraws.

What it does now

  • Sudoku with Easy, Medium and Hard puzzles, a score, hints and a saved game
  • A clock and battery level on a second working patch of screen
  • Light and warmth sliders, plus a slow warm pulse for winding down

After: Sudoku in the working strip and a clock in the working triangle.

image

All the game's settings fit in the same strip.

How it was done:

The reader is a second-generation Mofibo/Storytel Reader, an Android 6 device built to run one app. In normal use it doesn't appear on a PC at all. What made this possible is StorytelReaderMods by Niklas Therning. It documents a USB mode you reach by holding the orange button while plugging in, and a patched boot image that turns on ADB.

  1. Test first. Before installing anything, I checked whether the broken area could still redraw. It couldn't, which ended my tablet idea and gave me a smaller, better goal.
  2. Back up. I read 10 partitions from the reader, twice each, and compared the copies.
  3. Change as little as possible. I flashed only the boot partition, then read it back and compared it before restarting.
  4. Build for the hardware you have. A small Android app of about 33 KB draws only in the working strip.
  5. Map what's left. I suspected another patch of screen still worked. Painting the dead area black revealed a small triangle, and that's where the clock lives now. The battery level sits just above a broken row of pixels.

image

Fixed the battery % pill here:

image

The second working patch. This version of the battery pill crosses a broken row of pixels, so I moved it higher and made it smaller.

I worked with Claude Code Opus 5.5 on Ultracode as my engineering partner. It did the research, compared the firmware and wrote the app. I held the buttons, ran the flash and photographed the screen, because the reader's own screenshots came back black. My phone camera and my eyes became the debugging tool.

What didn't work Disappointed

The game still won't start by itself. The home-screen prompt has no "Always" option, root wasn't available, and my startup trigger never launched the app. After a restart I need a PC to reopen it. The frozen image also stays on the top of the screen, though a piece of dark card would hide it.

What I'd pass on:

  • Broken doesn't mean finished. Ask what still works, then design around that.
  • Run the cheapest test first. Mine cost nothing and changed the whole plan.
  • Back-up before you change anything.
  • Credit the people whose work you stand on, as we all love to inspire and get aknowledgement.

If you try this: flashing can leave a device dead, and others have reported stuck readers. The patch also adds root and unrestricted ADB, so anyone with USB access could control the reader. Read the project's guide first, and go ahead only with a device you can afford to lose, and as we know that there is nothing else that the device can be used for so might as well try it.

What's sitting in your drawer that only looks finished?

What I and Claude Code Opus 5.5 did:

The reader went from invisible on USB to running a custom app in about roughly 2 hours, but I lost track on time to be honest, and with nothing written to it until a verified backup existed.

Stage

What happened

Result

Find the reader

Windows showed no device in normal use. The reader's boot settings have USB set to none, which is the likely reason.

Not visible

Reach the USB mode

Holding the orange button while plugging in showed USB ID 2207:310C. When you kept holding the button, the connection ended after 13 seconds and the reader went into recovery.

Visible, but unstable

Test the screen

When you turned the reader on, only the bottom of the screen changed.

General tablet ruled out

Install the driver

WinUSB through Zadig kept the reader connected for as long as we needed.

Stable connection

Check the partitions

The reader's partition table matched the project's published one exactly.

Safe to continue

Back up

10 partitions, about 1.8 GB, were each read twice and compared. It took about 6.5 minutes with no failures.

Verified backup

Compare the firmware

The reader runs a March 2025 build and the patched image comes from February 2023. The startup files differed only where expected, but the kernel also differed.

Risk accepted

Flash

Only the boot partition was written, then read back and compared before restarting.

Worked first time

Connect over ADB

ADB appeared as 2207:0011 with no extra driver and stayed connected.

Working

Build the app

A Sudoku app built without Gradle, using javac, d8, aapt2, zipalign and apksigner.

Displays and responds to touch

Add light controls

The app writes directly to the reader's white and warm light channels. Levels read back correctly over ADB.

Sliders work; pulse levels confirmed

Map the screen

Drawing the dead area black with a numbered grid revealed a working triangle and a thin band above the board.

Second usable area found

Use the triangle

Added a framed clock and a battery pill, which moved above a broken pixel row after your close-up photo.

Finished look

Where it went wrong!
• Auto-start failed. The home-screen prompt offers only "Just once" and appears in the dead area. pm disable-user had no effect, adb root gave no root, and su was denied. A boot receiver didn't launch the app either, and the logs don't explain why.
• Screenshots were useless. screencap returned an all-black image, so my photos were the only way to check the screen for Claude, costing extra on tokens.
• Some of my guesses were wrong. I first suspected the cable, then that USB was blocking screen updates. Neither looks right now.
• Research cost too much. One multi-agent research run used about 658,000 tokens and took about 27 minutes, after Claude said that it will take only a few minutes. My free screen test then decided more than that research Claude did, but that is just how it goes.

What is still missing? Thinking

The biggest gap is auto-start: after a restart, the game needs a PC to reopen it. Everything else below is either unconfirmed or a known limit.

Item

Status

Detail

Auto-start

Not working

An accessibility service might solve it, but it's untested, and turning it on needs a security setting you would change yourself.

Difficulty levels

Not confirmed

Built, but not yet tried on the reader. They set how many squares are removed, so they only roughly reflect difficulty.

Warm pulse

Partly confirmed

Light levels rise and fall over about 10 seconds. How it looks on the screen hasn't been checked.

Side buttons

Not confirmed

The app expects them to move the selected square, but they haven't been tried.

Standby and wake

Not tested

The clock's behaviour after standby is also unknown.

Scoring

Not confirmed

+10 for a correct number, -5 for a wrong one, -10 for a hint, plus a finishing bonus of 50, 100 or 200. The score has only been seen at 0.

Clock accuracy

Unknown

The reader's time was correct during the work, but it stays off Wi-Fi and may drift.

System updates

Risk remains

The update service is still on the reader and could overwrite the patched boot on Wi-Fi, so keep it offline.

Upper screen

Permanent limit

That area doesn't redraw, so software can't change it. Only a cover or a replacement panel could help, and I couldn't confirm a compatible panel.

Backup coverage

Partial

uboot, misc and backup read as all zeros, so there's no bootloader copy. Personal data and the cache weren't backed up.

Technical reference

These are the details people are most likely to ask about. Screen positions are specific to this reader's damage and were measured from photos, so treat them as approximate.

Device

Item

Value

Model

Mofibo/Storytel Reader, second generation (reports itself as "Reader 2")

Chip

Rockchip RK3128, according to the project

Memory

1 GB RAM and 8 GB storage, according to the project

System

Android 6.0.1, build dated 5 March 2025

Display

758 × 1024 e-ink

Touch

fts_ts controller, working in the bottom strip

Front light

White and warm channels, each 0-255, in /sys/class/backlight/

USB IDs

2207:310C in orange-button mode, 2207:0011 with ADB after the patch

Working screen areas

Area

Position in pixels

Used for

Bottom strip

y from 720 to 1024

Board, number pad and menu

Thin band

y from about 709 to 720

Black divider above the board

Triangle

x from about 488 to 758, y from about 415 to 514

Clock and battery level

Broken row

y of about 459, across the triangle

Avoided by the battery pill

Tools

Tool

Purpose

Source

rkflashtool 6.2

Reading and writing partitions

StorytelReaderMods, unsigned, no published checksum

boot-gen2-patched.img

Patched boot image that turns on ADB

StorytelReaderMods release, no published checksum

Zadig 2.9

WinUSB driver for the orange-button mode

Official site, valid signature

Android SDK

ADB, d8, aapt2, zipalign and apksigner

Already installed

Temurin JDK 17.0.21

Compiling the app

Adoptium, checksum matched

Claude Code with Claude Opus 5.5

Research, checks, scripts, firmware comparison, the app and this write-up

Anthropic, in the Claude desktop app; model ID claude-opus-5.5

Claude research agents

One multi-agent research and fact-check run, about 658,000 tokens

Same model as the main session

Run rkflashtool from Command Prompt, because PowerShell can silently corrupt binary output!

  • Sign in to reply
  • Cancel
Parents
  • me_Cris
    me_Cris 2 hours ago

    I haven't used anything like this, so I don't know much about it; however, the area where the clock and battery status are displayed puzzles me—isn't it affected very bad, or did you manage to hide the artifact lines?
    Anyway, it is nice.ClapClapClap

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • me_Cris
    me_Cris 2 hours ago

    I haven't used anything like this, so I don't know much about it; however, the area where the clock and battery status are displayed puzzles me—isn't it affected very bad, or did you manage to hide the artifact lines?
    Anyway, it is nice.ClapClapClap

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube