HID Multimedia Dial

Supplements old keyboards that lack media keys or to provides a more natural interface.

Similar projects worth following
This is a Full Speed (12Mbps) USB HID with a rotatory encoder. This is used to supplement old keyboard layouts or to provide a more natural alternative.

In this project, I tried to make use of recycled materials in the construction while trying for a more polished look.

This project was initially inspired by the Microsoft Surface Dial, but has evolved towards supplementing a dial for multimedia purposes. Sometime Youtube video or new video game default volume setting is set too high. In Windows, the access to the volume control on the menu bar can takes seconds. I have implement an automatic attenuation to deal with excessive volume in my Automatic audio source switching, but it would still be nice to have a physical interface that is accessible at all time.

Control Mapping

The idea is to map the media keys functions into the very few controls for a rotatory encoder in an intuitive manner. The LED provides visual clue to the operating mode of the device while doubling clicking is used to switch between them.

USB Communication

The dial acts as a USB HID, so there are operating system level device driver support in place. There are additional plug-in/key mapper for media players which are outside of the scope of this project.

The dial communicates with the PC using HID reports. The USB standard defines device Usage Tables that describes the formatting of the data packets for the device that the operating system use for parsing.


I am going to be using the low cost EFM8UB1 series microcontroller as it has native USB 1.1 hardware and comes with a free compiler/debugger suite and USB library.

GPIO Port Match interrupts are used to read the rotatory encoder. The switch is mapped to a different port for its own Port Match interrupt. Hardware timer will be used to determine double clicking/hold timing.

"HID Usage Tables - USB org"
HID Descriptor Tool - create, edit and validate HID Report Descriptors
"Enhanced Keyboards and Windows"

View all instructions

Enjoy this project?



Does this project spark your interest?

Become a member to follow this project and never miss any updates