A 24/7 song identifier using a e-ink screen and a Pi Zero WH as the client
This project is in beta! I am still currently getting it all to work.
@Finbear2 2026
Canto is a 24/7 music identification service using shazamIO API for song identification on a backend server with all recording being done on a pi zero wh connected to a waveshare 2.13 inch black and white e-ink screen to allow the user to see the most recently identified songs and the currently playing songs. It uses the server setup as shazamio requires dependeancies that don't run well on the pi zero w hardware and it was just a pain to setup.
This is basically a 24/7 shazam that lives inside your pocket.
- Identifies songs
- Viewable from 24/7 web UI
- Stores offline queue
- Bluetooth tether (Maybe... Maybe...)
- Displays cute album art on screen
Some images are outdated as I've switched to a faster and much better algorithm... just .convert("1") but it's better
Flash Pi with raspbian os light using pi imager, make sure to configure wifi in advanced settings with a username and password you remember. Also make sure to enable ssh and set it to password authentication
Find the pi's ip address via router web interface or using a tool such as nmap and running nmap -sn 192.168.0.0/24 and look for something like pi foundation
ssh into the pi's ip address ssh username@ip_address
once in, run this command wget -O - https://raw.githubusercontent.com/Finbear2/Canto/main/install.sh | bash
Answer the questions and wait for reboot. It should display some art on the screen with the last song identified on your server.
Musts:
- 2.13inch waveshare e-ink bw hat
Interchangeable:
- Pi Zero WH (Can be anything with compatible GPIO headers to the screen that can run linux)
- Pi 400 (Anything that can run a python script e.g. laptop, desktop, random old computer, pi>=pi4 )


