Skip to content

Add SSD1683 4-gray displayio driver and example for 4.2" bare E-Ink Display (#6381)#46

Merged
BlitzCityDIY merged 4 commits into
adafruit:mainfrom
mikeysklar:ssd1683-4.2-6381
Jun 15, 2026
Merged

Add SSD1683 4-gray displayio driver and example for 4.2" bare E-Ink Display (#6381)#46
BlitzCityDIY merged 4 commits into
adafruit:mainfrom
mikeysklar:ssd1683-4.2-6381

Conversation

@mikeysklar

@mikeysklar mikeysklar commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

Adds SSD1683 class and SSD1683_GRAY4_LUT to adafruit_ssd1680.py for the 4.2" bare E-Ink Display (#6381) — 400×300 GDEY042T81 panel with SSD1683 controller (FPC-190 ribbon), colstart=0.

Testing

Feather RP2040 ThinkInk direct-connect

…y (#6381)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Comment thread adafruit_ssd1680.py Outdated
# 4-gray LUT for GDEY042T81 / FPC-190 (GxEPD2 + ThinkInk verified)
SSD1683_GRAY4_LUT = bytes(
[
0x01,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

format this better

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

compressed LUT block

mikeysklar and others added 2 commits June 14, 2026 12:39
The 400px-wide SSD1683 was the first panel to cross the displayio core's
ram_width>=256 threshold, which switched RAM-X (0x44) to 2-byte addressing.
SSD168x X is byte-addressed (1 byte each), so the column window collapsed to
a single byte: only ~8px per row was written and the rest of the panel showed
stale RAM -> cold-boot speckle / warm flat-gray. Fixes, all scoped to the
SSD1683 class (SSD1680 and other panels unchanged):

- ram_width 400 -> 255 to force 1-byte X addressing (the root cause).
- Swap write_black/color_ram_command (0x24<->0x26): displayio packs luma
  bit7->black-RAM, bit6->color-RAM; SSD1683 wants the opposite, which had
  transposed light/dark.
- Ship the native (unswapped) GxEPD2 LUT now that the bank swap makes the
  level order correct.
- Example: fill the panel with PR #111's larger info-card layout.

Verified white|light|dark|black, no speckle, across a true hard power cycle.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mikeysklar

Copy link
Copy Markdown
Contributor Author

Little bit of a struggle with displayio and the new SSD1683 on this one, but got through it. Swtiched to 7 byte phase row formatting to keep the LUT compact (same as Adafruit_CircuitPython_EPD PR) for this display.

6381-ssd1683-4gray-infocard-final

@mikeysklar

Copy link
Copy Markdown
Contributor Author

@BlitzCityDIY

@BlitzCityDIY BlitzCityDIY left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minor change requested on the example comment, otherwise looks good

Comment thread examples/ssd1683_4.2_grayscale_6381.py Outdated

"""4-gray grayscale info card for the Adafruit 4.2" 400x300 E-Ink Display (#6381).

displayio / SSD1683 driver. Layout mirrors the adafruit_epd PR #111 example:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this reads like a PR explainer, i'd remove it

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thx. removed PR talk from comments.

…comments

Address review feedback: rewrite the example docstring to match the #4197
grayscale example style and drop adafruit_epd PR #111 references from the
example and the DISP_CTRL1 comment.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@BlitzCityDIY BlitzCityDIY merged commit d3eb6f2 into adafruit:main Jun 15, 2026
1 check passed
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.

3 participants