Turn the ring. Touch the music. Control the room.
RoonPilot running on the original Waveshare ESP32-S3-Knob-Touch-LCD-1.8 hardware.
Deutsch · English
RoonPilot turns Waveshare's compact round display controller into a fast, self-contained remote for Roon. The physical ring controls volume, the touch display handles transport and zone selection, and the artwork-led interface keeps the music visible without reaching for a phone.
RoonPilot talks directly to Roon over the local network. It needs no Raspberry Pi, Docker container, Node.js host, desktop helper, cloud account or additional always-on RoonPilot service.
Note
Made for the joy of music and technology
RoonPilot is a personal hobby project created for the enjoyment of music, technology and building something useful—not as a commercial venture. There are no advertisements, subscriptions or hidden costs. RoonPilot does not transmit personal, usage or telemetry data to the developer or any third party. Anyone who would voluntarily like to say thank you for the time and effort invested can do so through Send Me a Coffee.
Support and discussion: use the Roon Community Forum thread or GitHub Issues.
For a normal installation, open the RoonPilot Web Installer directly →. Chrome or Edge shows connected devices in its own chooser. The name before the parentheses is what matters:
- USB JTAG/serial debug unit is the correct ESP32-S3 for RoonPilot.
- If USB serial appears, leave the chooser open, unplug USB, turn the USB-C plug by 180 degrees and reconnect it. The Web Installer detects the device again immediately.
Device Manager and macOS System Information are not needed for a normal installation. Anyone who wants an additional processor check can find the optional procedure in the detailed Windows and macOS guides.
After flashing, complete Wi-Fi and Roon first-time setup, then learn the display, ring, touch and gestures.
The complete documentation index also covers every screen, every web page, updates, recovery, configuration backup, battery calibration, privacy and troubleshooting.
Important
This board contains two independent ESP processors. In the Web Installer device chooser, always select USB JTAG/serial debug unit for RoonPilot. USB serial belongs to the separate companion processor.
An optional factory backup is useful if you may want to restore the exact firmware state in which the manufacturer delivered the device. It is not a prerequisite for installing RoonPilot. Once you have identified the ESP32-S3, the selected guide for Windows or macOS leads to the public Web Installer after the USB check.
The second processor's low-power firmware is also easy to install and remains completely optional. Start with its separate Companion guide for Windows or macOS.
- Real volume control: use the outer rotary ring instead of a small slider. RoonPilot automatically follows the zone's native percent, dB or relative volume model and displays real dB values when Roon supplies them.
- Three player layouts: Classic, Focus and full-artwork Orbit.
- Direct Roon connection: discovery, authorization, zone state and commands run on the ESP32-S3 itself.
- Room selection on the device: browse shown zones with touch or the ring, then select on the display.
- Useful idle modes: black screen, station clock or digital clock with date.
- Real deep sleep: optional ESP32-S3 shutdown while the selected zone is paused/stopped, with touch and ring wake-up.
- Local configuration: responsive web pages are served by RoonPilot itself.
- Private by design: no cloud relay and no password in configuration exports.
- Recoverable updates: signed A/B firmware updates with boot validation and rollback support.
- Visible update awareness: every local web page can announce a newer release, while an optional once-daily device notice remains dismissible and never installs anything automatically.
- Independent operation: after setup, a browser is not needed for normal use.
![]() Classic Balanced artwork and controls |
![]() Focus Large transport controls |
![]() Orbit Full-screen artwork |
The screen background is derived from the current cover and kept dark enough for readable text. The active accent colour is configurable on the device and in the web interface.
Click the infographic for the full-resolution view. Detailed explanations are available in the complete device controls guide.
| Action | Ring | Touch |
|---|---|---|
| Change volume | Turn | — |
| Play or pause | — | Tap centre transport button |
| Previous/next | — | Tap a transport button or swipe horizontally |
| Open zone picker | — | Tap the zone name |
| Browse zone/menu pages | Turn | Swipe or tap |
| Open Quick Settings | — | Swipe up on Now Playing |
| Lock/unlock controls | — | Long-press the centre of the display |
| Switch display off immediately | — | Double-tap the centre of the display |
| Wake the screen/clock | Turn | Tap |
| Wake from deep sleep | Turn, then wait for boot | Tap, then wait for boot |
See Device controls for timing, locked-operation feedback, screen-off wake-up and settings details.
RoonPilot includes player, volume, zone, pairing, clock, setup, maintenance and error views. Every current view is shown and explained in the complete screen reference.
![]() Volume |
![]() Zones |
![]() Station clock |
![]() Digital clock |
![]() Quick Settings |
![]() IP & Roon Server |
![]() Control lock |
All screenshots use fictional music, rooms, network names and documentation-only addresses. They contain no private test data.
Open RoonPilot's local address in a browser to configure it. The interface is served from the device; it is not a cloud dashboard.
The pages cover:
- live status and basic playback control;
- Roon Server discovery, manual server address and zone selection;
- shown and hidden zones;
- player layout, brightness, dimming, clocks and display rotation;
- rotary direction, native Roon-step multiplier, acceleration and maximum-volume protection where the endpoint reports usable limits;
- Wi-Fi status and network replacement;
- battery runtime calibration and result history;
- guarded deep-sleep timeout and wake policy;
- firmware updates, diagnostics, safe export/import, restart and factory reset.
View every page in the web-interface reference.
Touch + rotary ring
│
▼
RoonPilot firmware ───── local Wi-Fi ───── Roon Server
▲ │
└──── subscribed zones + metadata ─────┘
RoonPilot uses Roon's Extension protocol and appears in Roon's Extensions page for one-time approval. A Roon installation and subscription are still required, but no separate RoonPilot process is installed on the server.
| Feature | Target hardware |
|---|---|
| Product | Waveshare ESP32-S3-Knob-Touch-LCD-1.8 |
| Main processor | ESP32-S3R8, up to 240 MHz |
| Main flash / PSRAM | 16 MB / 8 MB |
| Display | 1.8-inch round IPS LCD, 360 × 360, capacitive touch |
| Controls | Full rotary ring plus touch display |
| Wireless | 2.4 GHz Wi-Fi and Bluetooth hardware |
| Companion processor | ESP32-U4WDH with independent 4 MB flash |
| Other onboard hardware | PCM5100A DAC, microphone, vibration motor, microSD |
| Power | USB-C or optional internal 3.7 V / 800 mAh battery |
The main ESP32-S3 runs RoonPilot. The companion ESP32 receives a small optional low-power firmware so it does not waste energy while RoonPilot is in use. It is not needed for Roon communication. Its separate Web Installer accepts classic ESP32 hardware only; the main Web Installer accepts ESP32-S3 hardware only.
Purchase links and exact variants are listed in Hardware and the two processors.
The exposed ADC measures the board's regulated rail rather than the Li-ion cell, so RoonPilot cannot honestly calculate a precise battery percentage. The battery symbol remains a coarse filtered indication. A controlled runtime calibration can, however, record how long an individual unit operates with a repeatable display/Wi-Fi profile. Read Battery and runtime before interpreting the result.
For a valid full-charge calibration reference, charge RoonPilot from a stable USB power supply/charger. A computer USB port can deliver a lower voltage at the board and may operate the device without charging its battery completely.
RoonPilot provides three deliberately separate paths:
- Factory image: complete ESP32-S3 installation or recovery from address 0.
- OTA image: upload through an already running RoonPilot.
- Companion image: separate browser installation for the classic ESP32 only; an original 4 MB backup is optional and useful only for restoring the exact manufacturer firmware later.
The installation guides explain the operating system's USB names and link to the optional full-device backup procedure. The main and Companion installers use separate chip-restricted manifests. Do not guess a file or flash an image based only on its size.
Installation guides: Windows · macOS · Optional Companion: Windows · macOS
- Documentation index
- Hardware and two processors
- Factory backup
- Optional Companion firmware
- Companion installation with Windows
- Companion installation with macOS
- Using standalone or Python esptool on macOS
- Choose Windows or macOS
- Installation with Windows
- Installation with macOS
- First-time setup
- Device controls
- All device screens
- All web pages
- Firmware updates and recovery
- Configuration export and import
- Battery and runtime
- Deep sleep
- Troubleshooting
- Privacy and security
- Licensing and redistribution
- Beginner test plan
RoonPilot is designed and developed by Senior Coder. It is an independent, non-commercial project and is not affiliated with or endorsed by Roon Labs or Waveshare. Roon is a trademark of Roon Labs. Waveshare product names identify the supported hardware only.
RoonPilot-authored portions use the RoonPilot Personal-Use Binary License 1.0. It permits installation of official unmodified firmware through the authorized Web Installer and private noncommercial operation. Redistribution, modification, reverse engineering, source recovery, competitive analysis and commercial use are prohibited except where mandatory law provides otherwise. Third-party portions retain their independent licences. See Licensing and permitted use for the exact distinction.
Copyright © 2026 Senior Coder. See LICENSE, NOTICE and third-party notices.











