Inspired by the rooExtend controllers, I built a custom firmware + roon extension bridge to be able to control Roon using a Waveshare ESP32-S3 Knob into a dedicated Roon controller.
See this video demo from an earlier release.
Features
- Real-time now playing with album artwork
- Volume control with dB display (turn the knob)
- Play/pause and prev/next (buttons to tap)
- Art mode - full-screen album art (swipe up/down)
- Multi-zone support (with a zone selector)
- Automatic display dimming and sleep
- Over-the-air firmware updates that are shipped with the extension.
What you need
- The Waveshare Knob (~$50)
- A Docker host (NAS, Raspberry Pi, etc.) to run the bridge extension — or use GitHub - TheAppgineer/roon-extension-manager: Roon Extension for managing Roon Extensions
- One-time USB firmware flash (then updates happen over WiFi), and a one-time connection to the knob in Access Point mode to configure your WiFi (2.4GHz only).
How it works
The knob connects to your WiFi and finds a Docker-based “bridge” extension via mDNS. The bridge talks to Roon Core and relays state/controls to the knob over HTTP.
The code is open source: GitHub - muness/roon-knob: Custom firmware and a Roon extension that turn a Waveshare ESP32-S3 Knob into a dedicated Roon controller.
Setup
- Flash the firmware — Open the Flash Roon Knob Firmware in Chrome/Edge, plug in the knob via USB-C, click flash. Done in 30 seconds.
- Run the bridge — Install via Extension Manager, or run the Docker image
- Authorize in Roon — Settings → Extensions → Enable “Roon Knob Bridge”
- Connect the knob to WiFi — Join the “roon-knob-setup” network, enter your 2.4GHz WiFi credentials
The knob finds the bridge automatically via mDNS. Future firmware updates happen over WiFi.
Known limitations:
- mDNS discovery may not work on all networks (manual config available)
- 2.4GHz WiFi only (hardware limitation)
- Zone Groups not yet supported


