Inkplate 6 FLICK touchscreen setup in ESPHome

Customer:

I recently set up an Inkplate 6 FLICK as a display in ESPHome. I installed the ESPHome Device Builder in Home Assistant, connected the 6 FLICK over USB, and set up a new device in the builder. However, I cannot figure out how to configure the YAML file to display anything on the screen. Can you point me in the right direction?

Originally submitted via email support on 26 January 2025. Migrated to the forum for community visibility.

Soldered Support:

The ESPHome software for Inkplate was originally a user contribution and we are still working on improving our understanding of it to provide more ESPHome support.

An ESPHome component is available for the PCAL6416A GPIO expander which is used on newer Inkplate models—this is essentially the difference between the old e-radionica Inkplates and new Inkplates.

The README in that repository includes an example configuration using this component along with instructions for setup on newer Inkplate models.

Inkplate 6FLICK is the successor to Inkplate 6PLUS and has most of the same features, just with a slightly different hardware design.

Attachment omitted in migration: esphome_pcal.zip

Customer:

I was able to get it working without the custom component by using the inkplate_6_plus model:

display:
- platform: inkplate6
  id: inkplate_6_flick_display
  auto_clear_enabled: false
  greyscale: false
  partial_updating: true
  update_interval: never
  model: inkplate_6_plus
  ckv_pin: 32
  sph_pin: 33
  gmod_pin:
  pca6416a: pca6416a_hub
  number: 1

The pca6416a_hub is defined like so:

pca6416a:
- id: pca6416a_hub
  address: 0x20

However, I have not been able to get the touchscreen working. Here is my current config:

touchscreen:
- platform: ektf2232
  interrupt_pin: GPIO36
  rts_pin:
  pca6416a: pca6416a_hub
  number: 10
  on_touch:
  - logger.log:
      format: "touch detected"

When I start up the device I get an error in logs that “touchscreen failed to start.” Any ideas on how to proceed?

Soldered Support:

Inkplate 6 PLUS’s touchscreen works differently than Inkplate 6 FLICK. You need to use the Inkplate 6FLICK board definition within the ESPHome config. See the Inkplate 6FLICK touchscreen example:

In user code it is the same as 6PLUS but the internal driver compiles differently. The board which needs to be selected is ARDUINO_INKPLATE6FLICK, which ensures the code compiles correctly and uses the correct internal driver for the touchscreen.

In the board definitions, the board is “Soldered Inkplate 6 FLICK”.

Soldered Support:

The touchscreen does not require a simple configuration—it actually needs to be implemented in code. ESPHome does not include the Inkplate library directly.

See the ESPHome touchscreen component used on Inkplate 6 PLUS:

You can copy the structure from there and use the code from:
https://github.com/SolderedElectronics/Inkplate-Arduino-library/blob/master/src/include/TouchCypress.cpp

Also see TouchCypress.h and the typedefs file in the same folder. This is how the touchscreen is driven functionally—you need to convert these files to the form of an ESPHome component as shown in the first link. You can install custom components as described in the README in the private GitHub repository (accessing files via Samba Share addon).

An official implementation is in progress.