Skip to the content
2 layers50.8 × 22.9 mmAdafruit ESP32 Feather V2, the printed circuit board in 3D

Adafruit ESP32 Feather V2

cgallizzi/inkterface12

Steam Machine e-ink faceplate with a Now Playing mode: box art, playtime, achievements. Fork of Valve's Inkterface.

Size
50.8 × 22.9 mm
Copper layers
2
Thickness
1.6 mm
Parts
56
Nets
49
Pads
252
Tracks, vias
796, 111
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
17 Jul 2026
Updated
1 Aug 2026

Overview

Adafruit ESP32 Feather V2 is an open-source printed circuit board by cgallizzi, from the cgallizzi/inkterface repository on GitHub, published under the MIT licence. It is a 2-layer board of 50.8 × 22.9 mm with 56 parts on 49 nets, routed with 796 tracks and 111 vias.

It is built around the MCP73831T-2ACI/OT-HXY, DMG3415U and MBR540DS. Its parts include 13 capacitors, 11 resistors, 4 ICs, 3 diodes and 3 crystals. It belongs with the lEDs and displays and microcontroller boards boards and the ESP32 and RISC-V boards of this library.

Main components

3

README

readme.md
inkterface now playing

Inkterface: Now Playing Edition

An e-ink faceplate for your Steam Machine that shows the box art, playtime, and achievement progress of whatever you're playing — plus all the original system telemetry readouts.

Video Project 2

This is a community fork of Valve's Inkterface, created by NaKyle Wright at Valve and released under the MIT license. All of the hardware design, assembly docs, and the original firmware and companion app are their work — this fork adds the artwork/"now playing" features and easier install tooling on top. Thank you Valve for open sourcing it!

What this fork adds

  • Now Playing artwork mode: when you launch a game, the panel switches to that game's box art with your total playtime and achievement progress rendered next to it (dithered for the e-ink look). When you quit, it goes back to the regular telemetry layout. Toggle it with the Box Art button in the configure screen.
  • Game collectors: Game Time and Achievements readouts you can put in any panel field, alongside the stock CPU/GPU/fan stats.
  • Browser firmware flasher: flash your Feather from Chrome/Edge at the project's GitHub Pages site — no toolchain install needed.
  • One-line app install: paste a single command on your Steam Machine and you're done — no building, no USB sticks.

Achievement data comes from the Steam Community profile endpoint and requires no API key, but your profile's game details need to be public for it to show.

Known issues

  • A game's box art can stay "stuck" on the panel after you quit it. Some titles (DREDGE is a known one) leave a background process running under Proton, so Steam still reports the game as active even though you're back in the library — the panel faithfully keeps showing its art. Restarting Steam (or the machine) clears the leftover process and the panel returns to normal. Most games quit cleanly; this only affects the few that linger.

Quick Install (this fork)

Firmware — plug the Feather into any PC over USB and open the web flasher in Chrome or Edge, then click Install for your board.

App — on the Steam Machine, open a terminal in desktop mode and run:

sh
curl -fsSL https://raw.githubusercontent.com/cgallizzi/inkterface/main/scripts/install.sh | sh

That downloads the latest release to ~/Applications, launches it, and from there you pick your panel and click Install (bottom right) to set up the background service. Prebuilt AppImages are also on the releases page if you'd rather grab one manually.

Everything below is the original upstream documentation for building the hardware and working from source.

Required Hardware

Assembly

Check out the assembly tutorial video in the upstream repo (kept out of this fork because it exceeds GitHub's file size limit), or if you'd prefer there is a PDF version too ./docs/Inkterface Assembly.pdf.

Warning: The screws will thread themselves into the plastic, but be VERY gentle as it is easy to strip the plastic away and you may need to re-print parts!

  1. Print parts from ./cad folder.
    • Individual parts are included as separate STEP files, but a combined file with all parts that is ready for printing on a Stratasys F370 build plate is also provided as Inkterface - Print Plate.step.
  2. Attach the ESP32 Feather and eInk Breakout to the board plate layer using 4x screws.
    • Having them held in place helps with soldering the connections and sizing your wires.
  3. Solder wires between the pins of the two boards.
    • MOSI/MISO/SCK/GND all connect directly as expected.
    • 3V3 from the feather connects to VIN on the breakout.
      • The 3V3 pin on the breakout is a 3V3 output.
    • For the V1 feather connect these pins, like Feather -> Breakout:
      • PIN 6 -> ENA
      • PIN 9 -> BUSY
      • PIN 10 -> RST
      • PIN 11 -> SRCS
      • PIN 12 -> D/C
      • PIN 13 -> ECS
    • For the V2 feather connect these pins, like Feather -> Breakout:
      • PIN 32 -> ENA
      • PIN 15 -> BUSY
      • PIN 33 -> RST
      • PIN 27 -> SRCS
      • PIN 12 -> D/C
      • PIN 13 -> ECS
    • NOTE: On both feather versions we connect to pins in the same physical positions, but they are different logical pins in the firmware.
  4. Place the e-ink panel into the matching recess in the faceplate part.
  5. Fit the two midplates in.
  6. Place the 4 magnets into the recesses in each corner of of the midplates.
    • Magnetic field orientation doesn't matter, they connect to metal slugs in the Steam Machine chassis.
  7. Place the board plate over the midplates, aligning the magnets and screw holes.
  8. Fasten the boardplate with 8x screws in the screw holes along the edges.
  9. Connect the e-ink panel to the breakout board.
    • Be careful when handling the flex that comes out of the panel, it is fragile and should not be bent or folded.
  10. Place the battery in the recess, tucking its wire under the board plate and up into the clearance hole beside the feather.
  11. Insert and fasten down the battery retainer/cover.
  12. Plug the battery connecor into the feather.

Once you've assembled the unit it should be fairly solid and easily magnet to the front of a Steam Machine!

You will need to build/flash the firmware onto the feather using the steps below.

Usage

Eventually we'll have an app up on Steam but until then you can build an AppImage using the instructions further down in this readme.

Once you have it built, take a look at ./docs/Inkterface Setup.pdf, but the basics are:

  1. Enable bluetooth.
  2. In desktop mode register as an app in Steam.
    • Or you can just run it directly.
  3. Wait for it to discover your panel.
    • If it doesn't appear try clicking the reset button on the back and checking that bluetooth is enabled.
  4. Select your panel, the name shown should match what's displayed on the inkterface.
    • They all start with an INKTF- prefix and then use a unique portion of the panels BLE MAC address.
  5. On the configure screen, install the service using the button at the bottom right.
    • This will set itself up as a user service, so don't move the AppImage or that will break, no biggie though, you'll just need to re-run it.
    • Once the service is installed it might take 10-20 seconds for it to connect to the inkterface, that's fine, it just needs to go through discovery.
  6. Finally you can click any of the readouts to adjust what they display.
    • We have several stats built in, but if you check out include/panel-state.hpp you can add any function that can return a QString or double and then registerCollector() to have it show up in the list.
      • There are some examples of stateful and idempotent collectors in SysStats, they get registered in the PanelState constructor.
  7. Exit the configuration app.
    • The service is lightweight and runs in the background, you only need to run the config software to select a panel or to change what it displays.

Building Interface

If you have Qt installed you should be able to open the cmake project in Qt Creator and use that.

For better distributable builds you can setup a container for wider platform support using the included Containerfile.

  1. podman build -t qt69-builder -f ./Containerfile
  2. distrobox create --image qt69-builder --name qt69
  3. distrobox enter qt69
  4. ./scripts/build.sh deploy

That should produce an AppImage for you in the ./dist-linux-x86_64 folder.

This container uses an older version of Ubuntu and Qt 6.9 which should let us build AppImages that will work on a wide range of modern systems.

Building Firmware

For a mix of convenience and approachability this project uses PlatformIO, and in particular here you'll use the pio run command. Reading up on them can be useful, especial options like --upload-port which could help if you have multiple serial ports.

If you're using the container from above you can just do:

  1. distrobox enter qt69
  2. cd ./firmware
  3. If you have a V1 feather: pio run -e featherv1 -t upload
  4. If you have a V2 feather: pio run -e featherv2 -t upload

And it should build and flash the firmware, if you want to get setup manually:

  1. Install PlatformIO for your system.
  2. cd ./firmware
  3. If you have a V1 feather: pio run -e featherv1 -t upload
  4. If you have a V2 feather: pio run -e featherv2 -t upload

Of course in both cases you need to have the ESP32 Feather attached via USB and permission to interact with serial devices on your system.

NOTE: You can add build definitions and support for other boards by modifying the platformio.ini, check it out to see the V1 and V2 feather environments.

Design Docs

Planning out the UI and panel design is done in a Lunacy document you can find in the ./design folder.

Lunacy is an open source alternative to tools like Figma that can work entirely offline.

License

This project is licensed under the MIT License, see LICENSE.

This project depends on third-party software that is distributed under its own licenses. Those licenses remain applicable to the respective components and are not modified by this project's license.

Parts

56
QtyValueFootprintReferences
55.1K0603-NOR2, R4, R5, R6, R10
410µF0805-NOC3, C6, C7, C8
41uF0603-NOC4, C5, C9, C10
310uF0805-NOC1, C2, C13
20.1uF0603-NOC11, C12
2100K0603-NOR7, R12
2200K0603-NOR1, R3
2AP2112-3.3SOT23-5U1, U2
2FIDUCIAL_1MMFIDUCIAL_1MMU$34, U$35
2KMR2BTN_KMR2_4.6X2.8SW1, SW2
2MOUNTINGHOLE2.5MOUNTINGHOLE_2.5_PLATEDU$31, U$32
2TPB1,27B1,27_385D-1, D+1
11X16_ROUNDJP1
1ADAFRUIT_2.5MMU$14
1FEATHERLOGO_MEDU$9
1dummyfp0UNK_HOLE_0
1ADAFRUIT_3.5MMU$15
1HUZZAH32U$43
1ADAFRUIT_5MMU$7
11X12_ROUNDJP3
1PCBFEAT-REV-040U$13
1dummyfp1UNK_HOLE_1
110KRESPACK_4X0603R13
147KRESPACK_4X0603R9
1CP2102N-24QFN24_4MM_SMSCIC3
1DMG3415USOT23-RQ3
1DUAL NPNSOT363Q5
1ESP32-PICO-MINI-02MINIESP32-PICO-MINIX3
1JSTPHJSTPH2_BATTX1
1MBR540SOD-123D4
1MCP73831T-2ACI/OTSOT23-5U3
1ORANGECHIPLED_0603_NOOUTLINECHG0
1REDCHIPLED_0603_NOOUTLINED3
1STEMMA_I2C_QTRAJST_SH4_RACONN1
1USB Type CUSB_C_CUSB31-CFM2AX-01-XX6
1WS2812B3535LED3535LED1

More from cgallizzi/inkterface

3
  • 2 layers50.8 × 22.9 mmAdafruit ESP32-S3 8MB No PSRAM, the printed circuit board in 3D

    Adafruit ESP32-S3 8MB No PSRAM

    cgallizzi/inkterface

    Steam Machine e-ink faceplate with a Now Playing mode: box art, playtime, achievements. Fork of Valve's Inkterface.

    49 parts12MIT
  • 2 layers50.8 × 22.9 mmAdafruit eInk Feather Friend, the printed circuit board in 3D

    Adafruit eInk Feather Friend

    cgallizzi/inkterface

    Steam Machine e-ink faceplate with a Now Playing mode: box art, playtime, achievements. Fork of Valve's Inkterface.

    47 parts12MIT
  • 2 layers34.3 × 21.6 mmAdafruit eInk Breakout Friend, the printed circuit board in 3D

    Adafruit eInk Breakout Friend

    cgallizzi/inkterface

    Steam Machine e-ink faceplate with a Now Playing mode: box art, playtime, achievements. Fork of Valve's Inkterface.

    37 parts12MIT

Similar boards

  • 2 layers86 × 165 mmCalculator, the printed circuit board in 3D

    Calculator

    Ethan-Poag/Flight-Data-Computer

    An easy to build open source alternative to the ASA CX-3 aviation data computer.

    131 parts3GPL-3.0
  • 2 layersGenesis, the printed circuit board in 3D

    Genesis

    iffycodes/Genesis

    Genesis Board design

    98 parts2
  • 2 layers52.5 × 37 mm5A Buck Converter, the printed circuit board in 3D

    5A Buck Converter

    akshat-kumar10/5A-Buck-Converter

    A custom 5A DC-DC buck converter and motor driver PCB designed in KiCad.

    10 partsMIT
  • 4 layers100 × 100 mmV25Panel, the printed circuit board in 3D

    V25Panel

    maholli/SAM32

    Feather-sized SAMD51 with M4 core serving as UART bridge to WROOM ESP32

    211 parts43
  • 2 layers22.9 × 63.5 mmEsp rust board, the printed circuit board in 3D

    Esp rust board

    swayerloren/KICAD_ENGINE

    AI-assisted KiCad PCB design workflow for schematics, PCB layouts, DRC, BOM/CPL, and fabrication outputs using Codex or Claude.

    96 parts10MIT
  • 2 layers290 × 100 mmESP32-Wall Clock, the printed circuit board in 3D

    ESP32-Wall Clock

    SkullKill/ESP32-Wall-Clock-PCB

    ESP32 based 30cm Wall Mounted Clock. WiFi, NTP, SNMP, web interface, MicroUsb, Type-C, HG3613 Retrofit

    207 parts3GPL-3.0
  • 2 layers84.1 × 97.1 mmSnowflake, the printed circuit board in 3D

    Snowflake

    maholli/snowflake

    snowflake PCBs w/ SAMD21 and neopixels

    47 parts2

Questions

How big is the Adafruit ESP32 Feather V2 PCB?

It measures 50.8 × 22.9 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Adafruit ESP32 Feather V2 use?

56 parts, built around the MCP73831T-2ACI/OT-HXY, DMG3415U and MBR540DS. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Adafruit ESP32 Feather V2 KiCad files?

From the cgallizzi/inkterface repository on GitHub, at the commit this page was made from: the board is boards/Adafruit Feather ESP32-S3 V2/Adafruit ESP32 Feather V2.kicad_pcb and its schematic boards/Adafruit Feather ESP32-S3 V2/Adafruit ESP32 Feather V2.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Adafruit ESP32 Feather V2 design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).