This page goes over how to use the Adafruit 2.13" 250x122 Quad-Color eInk displays with CircuitPython.
CircuitPython Microcontroller Wiring
First wire up the display to your board exactly as follows. The following is the display connected to a Feather RP2040 using the EYESPI connector:
- Feather 3.3V to breakout Vin (red wire)
- Feather GND to breakout Gnd (black wire)
- Feather SCK to breakout SCK (blue wire)
- Feather MO to breakout MOSI (yellow wire)
- Feather MI to breakout MISO (green wire)
- Feather D10 to breakout DC (orange wire)
- Feather D9 to breakout TCS (white wire)
- Feather D6 to breakout RST (cyan wire)
- Feather D5 to breakout BUSY (pink wire)
Attach the TFT screen to the EYESPI breakout with an EYESPI cable as described on the Plugging in an EYESPI Cable page.
The following is the breakout wired to a Feather RP2040 using a solderless breadboard:
- Feather 3.3V to breakout VIN (red wire)
- Feather GND to breakout GND (black wire)
- Feather SCK to breakout SCK (blue wire)
- Feather MO to breakout MOSI (yellow wire)
- Feather MI to breakout MISO (green wire)
- Feather D10 to breakout D/C (orange wire)
- Feather D9 to breakout ECS (white wire)
- Feather D6 to breakout RST (cyan wire)
- Feather D5 to breakout BUSY (pink wire)
Image File
The example below uses a bitmap image. You'll need the display-ruler-640x360.bmp bitmap file on your CIRCUITPY drive.
To use with CircuitPython, you need to first install the Adafruit_CircuitPython_JD79661 library, and its dependencies, into the lib folder on your CIRCUITPY drive. Then you need to update code.py with the example script.
Thankfully, we can do this in one go. In the example below, click the Download Project Bundle button below to download the necessary libraries and the code.py file in a zip file. Extract the contents of the zip file, and copy the entire lib folder and the code.py file to your CIRCUITPY drive.
Your CIRCUITPY/lib folder should contain the following folders and file:
- adafruit_jd79661.mpy
# SPDX-FileCopyrightText: 2025 Scott Shawcroft, written for Adafruit Industries
#
# SPDX-License-Identifier: Unlicense
"""Simple test script for 2.13" Quad Color Display"""
import time
import board
import displayio
from fourwire import FourWire
import adafruit_jd79661
displayio.release_displays()
spi = board.SPI()
epd_cs = board.D9
epd_dc = board.D10
epd_reset = board.D6
epd_busy = board.D5
display_bus = FourWire(spi, command=epd_dc, chip_select=epd_cs, reset=epd_reset, baudrate=1000000)
time.sleep(1)
display = adafruit_jd79661.JD79661(
display_bus,
width=250,
height=122,
busy_pin=epd_busy,
rotation=270,
colstart=0,
highlight_color=0x00FF00,
highlight_color2=0xFF0000,
)
g = displayio.Group()
pic = displayio.OnDiskBitmap("/display-ruler-640x360.bmp")
t = displayio.TileGrid(pic, pixel_shader=pic.pixel_shader)
g.append(t)
display.root_group = g
display.refresh()
print("refreshed")
time.sleep(display.time_to_refresh + 5)
# Always refresh a little longer. It's not a problem to refresh
# a few seconds more, but it's terrible to refresh too early
# (the display will throw an exception when if the refresh
# is too soon)
print("waited correct time")
# Keep the display the same
while True:
time.sleep(10)
Once everything is saved to the CIRCUITPY drive, the code will begin running. Your display will look like this:
Page last edited October 06, 2025
Text editor powered by tinymce.