A physical desk controller for Spotify โ one rotary knob, a few buttons, e-ink album art, and a Wi-Fi connection to the Spotify API. The goal is simple: control music without touching the computer.
I kept reaching for my phone to skip tracks or adjust volume while working. Alt-tabbing to Spotify broke my focus. I wanted something physical on my desk โ a knob I could reach for without thinking about it.
The ESP32 made sense for this. It has Wi-Fi built in, enough GPIO for a rotary encoder and a few buttons, and solid library support for the display driver I wanted. I chose an e-ink display specifically because I didn't want something bright competing with my monitors โ e-ink is easy to ignore when you're not looking at it, which is what a desk tool should be.
Play/pause, skip forward, skip back, and volume via the rotary encoder. The e-ink panel shows album art, track name, and artist. When nothing is playing, the display clears โ e-ink doesn't need to refresh constantly, so there's no visual noise.
Size matters. It should fit next to a keyboard without taking up real estate.
The OAuth flow is the awkward part. Spotify uses OAuth 2.0 with a browser redirect, which doesn't map cleanly onto a microcontroller with no browser. The approach I'm testing: do the initial auth on a laptop, store the refresh token in ESP32 flash, then let the device handle token renewal automatically going forward.
The e-ink driver is mostly working. Full-panel refreshes take about two seconds and have a visible flicker, so I'm looking into partial update modes to make track changes feel faster. Enclosure design is next.