Brettcvz Upnext Save

A desktop calendar, based on a raspberry pi and e-ink display

Project README

UpNext: A glanceable eInk calendar for your desk

UpNext sits on your desk as an unobstusive way to make sure you always make your next meeting. It is based on a Rasberry Pi connected with a Waveshare eInk display, and pulls events from Google Calendar.

The code is written (poorly) in C++, because writing to the eInk display is timing-sensitive, there were good drivers for C++, and it was a good excuse to dust off my "lower level" programming skills after a decade of primarily programming in python and javascript.

Full writeup at

Building - Abbreviated version

Requires the following libraries to build:

Be sure to also:

  • Rename secrets.h.example to secrets.h and add in your google calendar api keys
  • Create a bin, bld, and logs directory
  • Enable the SPI interface on the raspberry pi
  • Install the Proxima Nova font, or substitute your favorite. Note that figuring out which fonts look good on the screen requires some testing.

Building - detailed, from fresh Rasberry Pi version

Starting from a fresh SD card with Rasbian Lite:

Basic Rasberry Pi Config


  • change password and hostname
  • expand filesystem under advanced
  • setup locales
  • set timezone
  • enable ssh and SPI under interfacing options
  • setup WIFI

Reboot and confirm wifi works (ping

Setup ssh:

  • From "host" computer: ssh [email protected]<hostname>.local, log in with password
  • Copy from host computer into .ssh/authorized_keys in pi
  • Exit ssh, ssh back in again, ensure you don't get prompted for a password
  • edit /etc/ssh/sshd_config to disable password login
  • sudo systemctl restart ssh
  • Test everything is configured by trying ssh [email protected]<hostname>.local - should be blocked, no password prompt
sudo timedatectl set-ntp True # to fix clock skew
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install vim git screen

Installing dependencies


sudo apt-get install libcairo2-dev libpango1.0-dev libpangocairo-1.0-0


git clone
cd restclient-cpp
sudo apt-get install automake libtool libcurl4-openssl-dev
sudo make install


tar -xzvf bcm2835-1.63.tar.gz
cd bcm2835-1.63/
sudo make check
sudo make install


Install the Proxima Nova font, or substitute your favorite. Note that figuring out which fonts look good on the screen requires some testing.

Put the fonts in /usr/local/share/fonts, then:

fc-cache -fv

Building upNext

git clone upNext
cd upNext
mv code/secrets.h.example code/secrets.h
vi code/secrets.h
sudo ldconfig
make build
mkdir logs

Installing init.d script to launch on boot

sudo cp /etc/init.d/upNext
sudo systemctl enable upNext

Done! Restart and you should be good to go. If one of these steps didn't work for you, please create an issue describing what went wrong and I'll see if I can help.


Much of the code for interfacing with the e-Paper module is based on the manufacturer's sample code and documentation

I borrowed a lot from the LUT tables from ZinggJM, in particular this one to get partial refreshes working well. In order to build a deeper understanding of e-Ink LUT tables and refresh rate, I leaned a lot on this video

Open Source Agenda is not affiliated with "Brettcvz Upnext" Project. README Source: brettcvz/upnext
Open Issues
Last Commit
2 years ago

Open Source Agenda Badge

Open Source Agenda Rating