DIY streamer + web control of IR remotes. Fanless PC, Linux, Docker, Roon Server, USB IR remote

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.

Features

  • Fanless industrial PC
  • Linux
  • Roon Server in Docker
  • Web-based control of IR stereo remotes

Hardware:

Software:

Optional:

Next Steps

Use Roon API to integrate IR controls within the Roon application.

Please don’t touch my stereo.

4 Likes

That’s really cool. I would like to do the same. Do you have a guide that I could follow?

Would be nice to control the volume from my Hegel amp with the Roon app.

I would use the Hegel DAC.

Hi @Anders_Lyhne I don’t have a complete guide to follow, but I did post references and documentation to GitHub: GitHub - elgeeko1/stereo-blaster-as-a-service: Disparate nerdisms along my pursuit of great audio. No documentation or support. . Feel free to hit me up with questions there and I’ll see where I can fill in the gaps.

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.

I know about Linux and Docker. Looked at the repository.

  1. Install Roon Docker: GitHub - elgeeko1/roon-server-docker: Build a Docker image containing Roon Server.
  2. Install ansible: seems I can do that with apt or pip.
  3. then I’m a bit lost. I probably need to load the playbook.yml in ansible?

Then i would have a webserver that could receive requests and then pass to lirc that then sends out a ir blast.

How does this talk to Roon?

I could use a bit more guidance to get started if you don’t mind.

I should get a usb blaster - looks like a special one. Looks only to be avilable from irblaster.info. Could other blasters work?

-Anders

Cool, you’ll be able to get this going.

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:

  1. Install Ansible from pip
  2. Find (or create) your LIRC configuration file for your Hegel DAC. See https://github.com/elgeeko1/elgeeko1-lirc-blaster-ansible/blob/main/README.md
  3. 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.