Instructions and resources for setting up a DIY Roon Server using Linux, Docker and a USB IR remote.
I had a spare fanless industrial PC at work, so I turned it into a streamer. Runs Roon Server and streams audio via USB DAC. My USB DAC doesn’t support digital volume, so I added a USB IR transmitter and configured the remote for my DAC. I can control my volume from a web page, and even mapped volume controls to my mouse.
If you’re familiar with Linux, Docker and Ansible then it should be fairly straightforward. These are rather advanced tools used by software professionals and may be difficult to learn without some help.
Ansible documentation recommends using pip to install it.
The volume control is not integrated with Roon, it’s a standalone application that uses a web interface to adjust volume. In Roon you would configure the audio device as “fixed” volume (hence no volume control directly in Roon). Consequently you don’t need to have Roon installed at all for this application to work, they are independent. Presumably this can be connected via Roon API but I haven’t implemented this (it’s listed as future work).
playbook.yml in the Stereo Blaster as a Service repo includes the steps to fully implement the USB IR transmitter and web server.
The irblaster.info device is the only one I’ve tested, but presumably any IR transmitter that is compatible with lirc will work.
You’re correct in the summary of steps to implement, with a few additions:
Modify elgeeko1/stereo-blaster-as-a-service/playbook.yml to use the configuration for your remote. Then run the playbook which will deploy docker, the LIRC Linux service, and the LIRC-web service, and your remote configuration file.
After the above steps, you will have a webserver running on your Linux target that implements the buttons on your remote and will transmit the IR codes over USB when pressed.