Sable is a front-panel display + controller for Volumio 4 (and moOde 9/10) on the Raspberry Pi. It drives an SSD1322 256x64 OLED over SPI via luma.oled, plus a rotary encoder, MCP23017 buttons/LEDs and IR remote support. Now-playing screens, spectrum visualisers (bars/dots/mirror/ribbon), an analog VU meter, clock and screensaver with burn-in protection.
It started life as Quadify a community project converting Quad FM4 tuners into streamers, keeping the original front panel and rotary in use. Sable is the ground-up successor, and it’s no longer tied to that: it works on any Pi with the right wiring, whatever the case.
The AI agent part
I’ve added a /docs/ai-repair/ folder documenting the whole codebase for AI coding agents. The point is that you shouldn’t need to read Python to change how your display looks.
Expose the Sable folder over Samba (Volumio already runs Samba, so it’s just an extra section in smb.conf), then open that folder in an AI-capable editor, Antigravity, VS Code with Copilot, Cursor, Claude Code. Tell the agent to read /docs/ai-repair/ first, then describe what you want in plain English:
- “make the spectrum bars thicker”
- “make the bars pure white instead of grey”
- “remove the sample rate from the now-playing screen”
- “add the date under the clock”
- “my rotary stopped working since I fitted a HiFiBerry DAC HD”
DAC conflicts
That last one is worth expanding on. DAC HATs occupy GPIO pins, and some of them clash with the pins Sable uses for the rotary encoder or buttons. The docs include a procedure for the agent to inspect your actual running hardware, which overlay is loaded, what’s on the I2C bus, which pins are in use, work out what your HAT has claimed, and remap Sable’s pins around it in config/hardware.json.
It checks your specific board rather than guessing from a lookup table, which matters because third-party HAT pinouts vary and aren’t always documented.
Then sudo systemctl restart sable.service and you’re done.
Other screens
Everything is SSD1322-specific right now, 256x64, 16-grey, via luma.oled. Since luma.oled supports a range of controllers, there’s no reason it couldn’t be adapted to other panels. Layouts would need reworking for a different aspect ratio, but that’s exactly the sort of job an agent handles well. Nobody’s tried it yet as far as I know, if you do, I’d like to hear how it goes.
Links
Repo, install instructions and the full docs: GitHub - theshepherdmatt/sable · GitHub
Discord (build help, AI repair channel, general chat): Quadify