Microsoft Surface Dial support for Volumio 4
I’ve put together a new experimental Volumio plugin that adds support for the Microsoft Surface Dial as a physical controller for Volumio.
The plugin communicates directly with the Dial over Bluetooth/HID, so there is no companion application, separate daemon or software to install on another computer. Once installed and paired, the Dial talks directly to the Volumio device.
What it does
The Surface Dial becomes a compact wireless hardware controller for Volumio.
Current functionality includes:
- Rotate - volume control
- 50 haptic detents per complete revolution
- 2% volume change per detent, so one complete revolution represents the full 0–100% volume range
- Press - configurable, default is Play/Pause
- Double press - configurable, default is Next track
- Long press - configurable, default is Previous track
- Optional reverse rotation
- Haptics On/Off, enabled by default
- Bluetooth scanning and pairing from the plugin’s Volumio settings page
- Automatic reconnection after the Dial disconnects or sleeps
The press actions can individually be assigned to Play/Pause, Next, Previous or Do Nothing.
This has been developed and tested against Volumio 4. It should still be regarded as an early release, so feedback from anyone trying it on other Volumio hardware would be useful.
Installation
The plugin isn’t currently in the official Volumio Plugin Store, so installation is from GitHub via SSH.
SSH into your Volumio device and run:
cd ~
git clone https://github.com/jhscann/volumio-surface-dial.git
cd volumio-surface-dial
volumio plugin install
Volumio will warn that this is an unverified plugin. Accept the warning to continue.
Once installation completes, go to:
Plugins → Installed Plugins → Surface Dial
Enable the plugin and open Settings.
Put the Surface Dial into Bluetooth pairing mode, then use Scan for Surface Dial followed by Pair. The plugin handles the necessary Bluetooth/HID configuration, including configuring the Dial’s haptic detents.
No separate Bluetooth utilities or Surface Dial applications need to be manually configured by the user.
Updating
For subsequent versions:
cd ~/volumio-surface-dial
git pull
For now, I recommend uninstalling the existing Surface Dial plugin through the Volumio Installed Plugins page and then running:
cd ~/volumio-surface-dial
volumio plugin install
again, particularly while the plugin is undergoing active development.
Feedback
This started as an experiment to see whether the Surface Dial could be made into a genuinely useful physical Volumio controller without requiring additional software outside Volumio. The basic controls, Bluetooth pairing and hardware haptic feedback are now working.
If anyone has a Surface Dial gathering dust and wants to try it, reports on different Raspberry Pi/Volumio configurations, Bluetooth reconnect behaviour and general usability would be very welcome.
Source, installation files and documentation are available here:
