Skip to content

Contributing upstream: greyscale (mono) screen support + per-unit calibration — would you welcome PRs? #36

Description

@polygonfuture

Hi @defl thanks for hokku_epaper; i love it! I've been running a fork on it happily (still using V3 as my fork base).

What I've built on a fork

Support for a monochrome (greyscale) e-ink screen — the Seeed reTerminal E1003
(16-level greyscale, IT8951 controller, ESP32-S3), the mono sibling of the E1004 you
already support. It's working end-to-end:

  • A mono render pipeline (greyscale-first, linear-light Floyd–Steinberg over the 16
    levels) alongside the Spectra-6 colour path.
  • Per-unit panel tone calibration — a measured step-wedge ramp so the render targets
    the panel's actual reflectance curve rather than assuming uniform steps.
  • ESP-IDF firmware for the E1003 board (mono sibling of the E1004 baseboard).
  • A modern, mobile-friendly web UI for the photo-to-frame workflow — library browsing,
    per-image editing with a true on-panel preview, and per-frame "now / up next" control —
    focused on quality-of-life and flow.

It's on a local branch I haven't pushed to the public fork yet — I'd rather get it fully
bug-fixed first so nobody pulls a half-finished build.

Homework done

I've read AGENTS.md, python/AGENTS.md, and docs/dithering.md, and I'll follow the
conventions there: brand_model naming (seeedstudio_e1003), the screen-package layout
with the hardware_facts.md / hardware_guesses.md split, keeping dithering.md + its
benchmark table in sync, the firmware STOP/dual-slot rules and PROTOCOL.CONFIG.N
versioning, the dev-version formula, and passing CI. I'll also target the 4.0 stable tag
rather than the betas.

Questions for you

  1. Appetite — would you want a mono/greyscale screen in-tree at all? E1004 is colour
    and there's no mono screen yet, so this is new territory.
  2. Structure — my plan is a seeedstudio_e1003 screen package (server + firmware,
    modelled on seeedstudio_e1004), with any small shared-core enabling changes as separate,
    focused PRs. Does that granularity match how you'd like it?
  3. Shared-core touch points — the mono screen needs a couple of small generalisations in
    shared code: not assuming palette index 1 == white (padding / BW-LUT), and wiring the DRC
    lightness anchors to the target Display rather than the reference palette. Are those the
    kind of changes you'd take upstream, or would you rather they stay fork-side?
  4. Timing — does targeting 4.0 stable line up with your release plans?

Happy to share more info such as the plan, more documentation on the shape of the e1003 pipeline etc. Whatever you need. Thanks for your time defl! Loving this project you built.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions