How to connect a Waveshare E-Ink display to a Raspberry Pi

In this guide, you'll learn how to wire a Waveshare 2.13" e-paper display to your Raspberry Pi and run the BTC Ticker software so it shows the live Bitcoin price.

What you'll need

What you are going to build

Raspberry Pi 4 in red aluminum case with Waveshare e-ink display showing $73.08k

Raspberry Pi 4 with the Waveshare 2.13" display showing the live BTC price

1. Enable SPI on the Raspberry Pi

The e-ink display communicates over the SPI bus, which is disabled by default. Enable it with raspi-config:

sudo raspi-config

Navigate to Interface Options → SPI → Yes, then reboot:

sudo reboot

2. Wire the display to the GPIO header

The display has 8 pins. Connect them to the Pi's 40-pin header as follows. Use either the physical pin numbers or the GPIO labels — but don't mix them. The full reference is in the Waveshare wiki.

Back of the Waveshare 2.13inch e-Paper HAT showing the pin labels VCC GND DIN CLK CS DC RST BUSY next to the cable connector

Pin labels printed on the back of the display

Display pin Physical pin GPIO / function
VCCPin 173.3 V power
GNDPin 20Ground
DINPin 19GPIO 10 / MOSI
CLKPin 23GPIO 11 / SCLK
CSPin 24GPIO 8 / CE0
DCPin 22GPIO 25
RSTPin 11GPIO 17
BUSYPin 18GPIO 24
Raspberry Pi 40-pin GPIO header pinout

Raspberry Pi 40-pin GPIO header — raspberrypi.com

Tip: after connecting, most pins cluster between physical pins 17–24, with the RST wire reaching back to pin 11. Double-check that pin before powering on.

3. Install the btc-ticker package

On your Raspberry Pi, clone the repository and install the package into a virtual environment:

git clone https://github.com/janrothen/btc-ticker
cd btc-ticker
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[rpi]"

4. Run it

With the virtual environment active, start the ticker:

python3 -m btcticker

The display will show the Bitcoin logo on startup, then begin refreshing the price every 5 minutes. Press Ctrl+C to stop.

5. Run as a systemd service (auto-start on boot)

A ready-made service unit is included in the repository. Install it so the ticker starts automatically whenever the Pi boots:

sudo cp deploy/systemd/btcticker.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable btcticker
sudo systemctl start btcticker

Check that it is running:

sudo systemctl status btcticker

Full installation instructions are in deploy/systemd/README.md.