Skip to main content

Inky pHAT Driver

Project description


Build Status Coverage Status PyPi Package Python Versions

Python library for Inky pHAT, Inky wHAT and Inky Impression e-paper displays for Raspberry Pi.

Inky pHAT

Inky pHAT is a 250x122 pixel e-paper display, available in red/black/white, yellow/black/white and black/white. It's great for nametags and displaying very low frequency information such as a daily calendar or weather overview.

Inky wHAT

Inky wHAT is a 400x300 pixel e-paper display available in red/black/white, yellow/black/white and black/white. It's got tons of resolution for detailed daily to-do lists, multi-day weather forecasts, bus timetables and more.

Inky Impression

Inky Impression is our line of glorious 7 colour eInk displays, available in 4" (640 x 400 pixel) 5.7" (600 x 448 pixel) and 7.3" (800 x 480 pixel) flavours. They're packed with strong colours and perfect for displaying striking graphics or lots of data.


First, make sure you have I2C and SPI enabled in sudo raspi-config.

The Python pip package is named inky, on the Raspberry Pi install with:

pip3 install inky[rpi,example-depends]

This will install Inky along with dependencies for the Raspberry Pi, plus fonts used by the examples.

If you want to simulate Inky on your desktop, use:

pip3 install inky

You may need to use sudo pip3 or sudo pip depending on your environment and Python version.


The library should be run with Python 3.

Auto Setup

Inky can try to automatically identify your board (from the information stored on its EEPROM) and set up accordingly. This is the easiest way to work with recent Inky displays.

from import auto
display = auto()

You can then get the colour and resolution from the board:


Manual Setup

If you have an older Inky without an EEPROM, you can specify the type manually. The Inky library contains modules for both the pHAT and wHAT, load the Inky pHAT one as follows:

from inky import InkyPHAT

You'll then need to pick your colour, one of 'red', 'yellow' or 'black' and instantiate the class:

display = InkyPHAT('red')

If you're using the wHAT you'll need to load the InkyWHAT class from the Inky library like so:

from inky import InkyWHAT
display = InkyWHAT('red')

Once you've initialised Inky, there are only three methods you need to be concerned with:

Set Image

Set a PIL image, numpy array or list to Inky's internal buffer. The image dimensions should match the dimensions of the pHAT or wHAT you're using.


You should use PIL to create an image. PIL provides an ImageDraw module which allow you to draw text, lines and shapes over your image. See:

Set Border

Set the border colour of you pHAT or wHAT.


colour should be one of inky.RED, inky.YELLOW, inky.WHITE or inky.BLACK with available colours depending on your display type.

Update The Display

Once you've prepared and set your image, and chosen a border colour, you can update your e-ink display with:


If you're migrating code from the old inkyphat library you'll find that much of the drawing and image manipulation functions have been removed from Inky. These functions were always supplied by PIL, and the recommended approach is to use PIL to create and prepare your image before setting it to Inky with set_image().


  • New: inky impression 7.3" support.
  • BugFix: WIDTH / HEIGHT set on uc8159.


  • New: inky SSD1683 support for WHAT variant


  • BugFix: (ish) handle busy_wait failure cases for UC8159 (Inky Impression)


  • BugFix: unbreak UC8159


  • New: inky UC8159 support for 4" 640x400 display variant
  • BugFix: fix set_image so it doesn't break set_pixel
  • New: Added --simulate to "auto()", so auto examples can simulate a chosen board


  • BugFix: Raise Impression/7Color/UC8159 busy wait timeout from 15s to 30s


  • BugFix: inky high-temp red fix
  • Enhancement: SSD1608 (250x122) set_border support


  • New: inky impression set_border support
  • BugFix: inky impression orange colour
  • BugFix: inky impression invalid arg bug for Python 2
  • New: inky impression simulator


  • Enhancement: drive UC81559 CS with GPIO to avoid conflict with Grow workaround
  • Add 7-colour/UC8159 specifics to EEPROM
  • BugFix: define UC8159 colour and size constants in class
  • BugFix: fix auto to grab args properly, support UC8159 and fallback gracefully


  • New: Support for UC8159-based 7-colour 600x448 display
  • Enhancement: auto now includes options for fallback
  • Enhancement: EEPROM can now give text string for display variant


  • Enhancement: Always install Pi dependencies


  • Enhancement: Tweak extras for easier dependency install


  • New: Support for SSD1608-based displays
  • New: Mock Inky pHAT and wHAT displays
  • New: Automatic Inky detection and class constructor
  • Enhancement: Support for alternate i2c_bus when reading eeprom
  • Enhancement: Support for alternate spi_bus
  • Enhancement: Support for alternate GPIO driver
  • Enhancement: Replaced sys.exit calls with ImportError
  • Enhancement: Improved docstrings


  • Enhancement: Added support for red/b/w high-temp Inky wHAT


  • BugFix: Reverted normal red LUTs to correct values


  • Enhancement: Added support for display variant detection
  • Enhancement: Added DocStrings
  • BugFix: Fixed set_border for all colours


  • BugFix: Yellow Inky pHAT now yellow instead of brown/black
  • Enhancement: Performance tweak for set_image


  • Initial Release

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

inky-1.5.0.tar.gz (24.5 kB view hashes)

Uploaded Source

Built Distribution

inky-1.5.0-py3-none-any.whl (32.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page