A little hardware project for your desk
Build your own.
One Pi. One e-paper screen. Your portfolio in view. You don’t need an enclosure or a 3D printer.
Download the DIY kitv0.1.1 · Python source + installer · SHA-256 checksum
Early DIY release. The app and display driver match the working device pictured here. The new installer has not yet been tested from a freshly flashed SD card.
What you’ll need
This guide follows the actual build: a Raspberry Pi Zero W Rev 1.1 with Raspberry Pi OS Lite 32-bit and a Waveshare V4 display.
- Raspberry Pi Zero WChoose a version with the 40-pin header already soldered, often sold as Zero WH. The non-wireless Zero is not the same board.
- Waveshare 2.13″ e-Paper HAT, V4250 × 122, black and white. This app uses the V4 driver. Avoid the B/C multicolor, touch, and differently sized variants for this guide.
- MicroSD card + card reader8 GB or larger for Raspberry Pi OS Lite. A 16 or 32 GB card leaves room for updates.
- Micro-USB power supplyA reliable 5 V / 2.5 A supply for the Pi. Use the PWR IN port. The large charger in the photo is not a required part.
- Mounting hardwareCompatible spacers and screws to keep the boards separated; check what comes with your HAT.
- A computer, phone, and Wi-FiUse your computer to prepare the card and connect over SSH. Use your phone for SnapTrade pairing. The Zero W needs 2.4 GHz Wi-Fi.
Manufacturer references: Raspberry Pi setup and power requirements · Waveshare HAT manual.
Give your Pi a home.
- Install Raspberry Pi Imager on your computer.
- Select Raspberry Pi Zero W and Raspberry Pi OS Lite 32-bit. The reference device runs Trixie. Use an OS with Python 3.11 or newer.
- Choose your microSD card. Writing the image erases that card.
- In the customization settings, choose a hostname such as
portfolio-pi, set your username and password, configure 2.4 GHz Wi-Fi and your country, and enable SSH with your preferred authentication method. - Write and verify the card, then safely eject it.
No monitor or keyboard is needed for the Pi. You’ll connect from your computer after it boots.
Two boards. No case.
- Disconnect power before attaching the HAT.
- Align the HAT’s socket with the Pi’s entire 40-pin header. Check pin 1 and the mounting-hole alignment against the Waveshare manual. Do not offset it by a row or force it into place.
- Fit compatible spacers and screws so the boards remain separated. Avoid pressure on the glass screen and its ribbon cable.
- Insert the prepared microSD card and connect power to the Pi’s PWR IN micro-USB port.
- Rest the assembly on a dry, nonconductive surface with the exposed contacts clear of metal.
If your Pi has no header, it needs one soldered on before assembly. Buying a pre-soldered board is the simplest route.
Set it up from your computer.
Give the Pi a few minutes to join Wi-Fi, then connect from Terminal or an SSH client. Replace YOUR_USERNAME with the username you chose in Imager.
ssh YOUR_USERNAME@portfolio-pi.localRun the following on the Pi. Extract into a new folder if you already have an installation.
cd ~
curl -fLO https://pi.snaptra.de/downloads/snaptrade-pi-diy-v0.1.1.zip
curl -fLO https://pi.snaptra.de/downloads/snaptrade-pi-diy-v0.1.1.zip.sha256
sha256sum -c snaptrade-pi-diy-v0.1.1.zip.sha256
python3 -m zipfile -e snaptrade-pi-diy-v0.1.1.zip .
cd snaptrade-pi-diy
less install.sh
sh install.shPress q to leave the script preview. The installer asks for your Pi’s sudo password, installs dependencies, enables SPI, downloads the pinned Waveshare driver, and sets up automatic startup for your username. It does not reboot automatically.
After installation finishes:
sudo rebootYour SSH session will disconnect. The screen should show a pairing QR code after the Pi restarts.
Scan. Approve. Glance.
Scan the QR code on the display with your phone. Sign in to your own SnapTrade account and approve the Pi’s read access. If prompted, connect the brokerage accounts you want to use. The app cannot place trades.
The kit uses the SnapTrade Pi public OAuth client. You do not need a developer API key or a client secret. Your sign-in tokens stay on your Pi.
Adjust the display
The kit starts in dark mode, rotated 180 degrees, with a 15-minute refresh interval, matching the photographed setup. To change that, reconnect over SSH and edit the settings:
cd ~/snaptrade-pi-diy
nano .envDISPLAY_THEME=dark
DISPLAY_ROTATION=180
DISPLAY_CURRENCY=USD
REFRESH_INTERVAL_SECONDS=900Use light for a white background or 0 if the screen is upside down. Save the file, then apply the changes:
sudo systemctl restart snaptrade-portfolio-displayThe total includes supported balances in the selected currency. It does not convert foreign-currency accounts. Brokerage data can be older than the display’s last refresh.
Troubleshooting
The Pi won’t join Wi-Fi
Check your 2.4 GHz network name, password, and Wi-Fi country settings in Imager. If portfolio-pi.local doesn’t resolve, find the Pi’s address in your router and connect to that IP instead.
The screen is blank
Check that you have the black-and-white V4 HAT, reboot after installation, and check the service status below. Disconnect power before checking the full header alignment. A PNG preview can be created even when the hardware driver cannot load.
The screen says partial, disabled, or stale
Partial means some balances were omitted, such as accounts in another currency. Disabled means a brokerage connection needs attention in the SnapTrade dashboard. Stale means a refresh failed; check Wi-Fi and the last update time. E-paper keeps its last image even when unplugged.
Pairing expired or reconnect is needed
Restart the service to begin another pairing attempt, then scan the current QR code. Approve access on your own phone. Don’t share the code or token file.
Inspect the service
systemctl status snaptrade-portfolio-display --no-pager
journalctl -u snaptrade-portfolio-display -n 50 --no-pagerInspect logs locally; they can contain a pairing URL or account context.
Stop automatic startup
sudo systemctl disable --now snaptrade-portfolio-displayThis stops the app without deleting its settings. Revoke the app’s access through SnapTrade when you no longer want the device connected.