Categories
Audio Home automation Personal Computing

Dave Rolls over a ROCK

The NUC came in System76 livery. Dave installs RoonOS and Roon Server and gets things going. Roon ROCKS on a ROCK. Sorry about that…

For many years (2017 or so), Dismal Manor’s Roon Server has run in a virtual machine on a TrueNAS Mini or home-brew storage server. To do this Dave installed a BHYVE virtual machine, added a System76 POP_OS guest, and installed Roon IA64 Linux edition. It worked but TrueNAS had its own agenda. That got old so Dave opened his purse. Read on to learn about the Roon ROCK experience.

Revisions

  1. 2023-04-05 Original
  2. 2023-0405 OS Reinstall button used to install Roon provided image. Does nothing without an image in the Core SMB share.
  3. 2023-04-06 Added updates regarding the WebUI available on Roon Server port 80. Once versions are verified and ffmpeg installed it has little further use other than to add physical media to the library.

References

  1. https://help.roonlabs.com/portal/en/kb/articles/roon-optimized-core-kit
  2. https://help.roonlabs.com/portal/en/kb/articles/nucleus-migration-guide
  3. https://tech-docs.system76.com/models/meer5/README.html

ROCK First Impressions

It’s Roon! It’s fast as greased lightning! It’s stable! It changes the way you locate the day’s first play. Before ROCK, I would use artist search a lot. Now, I just pick the Artists tab and scroll to today’s artist. I pick the artist and browse to his discography to pick something to play. All the Roon Remote UI is crisply usable now and Roon playback begins almost immediately rather than requiring 10-15 seconds to retrieve the Qobuz id of the title and get it headed our way. Much much crisper performance.

The Power Supply

As usual, System76 supplies a small switching power supply to provide bulk DC for the Meerkat 5 and Meerkat 6 families. Sitting there playing music, power usage is 6.6 watts. But total power (volts x amps) is 12.13 VA for a power factor of 0.40 which is horrible. Please, please, System76, buy supplies having power factor correction.

Think of the electric supply as a glass of beer. Some is liquid and some is foam filling the glass to 12.13 VA. But 5.03 Watts is the liquid and 7 VA is the foam. A good glass of beer is 90% liquid and 10% foam. A simple power factor corrector can do this. By reel of 2500 parts, these are a less than $1 part.

Why worry about foamy beer? Well, the current is 0.13 amp when it might be more like 0.05 amp. That extra current is the result of the reactive power bouncing around between the supply and the mains. The extra current is extra heat in your wiring and the utility retail distribution where it adds up and helps make Norfolk warmer. Not the heat, the CO2! The utility is burning fuel to make it possible for the foam in the beer to slosh around. So makers of small electronics, please power factor correct your products.

Legacy Roon Environment

To recap, the legacy Roon environment was a home office scale storage server running on intel Xeon E3 hardware, FreeBSD based operating system, BHYVE based virtual environment, and POP_OS Linux desktop distribution. This is pretty heavyweight. And not entirely satisfactory. For reasons not fully identified, Roon would become sluggish and eventually stall.

Usually, I would recover by restarting the virtual machine. In about 5 minutes Roon Core would be good as new for a few more days. On one occasion, I logged into the VM management console to update POP_OS. Roon magically recovered after a slow start of the POP_OS desktop.

Enough was enough. I was not convinced POP_OS was being kept up, even with auto updates on. Nobody was minding the console to respond to the “yer update is ready, please restart me” message. One of the advantages of Roon is that Core looks after itself. The ROCK Roon Core appliance version is supposed to extend Roon management to the underlying Linux OS.

Introducing Roon ROCK

In the past, I have described Roon ROCK as an application-specific Linux distribution. The good folk at Roon remind me that this not strictly correct. ROCK is more a binary installer for a minimual Linux version and Roon Core on Intel NUC IA64 hardware.

Roon Labs reminds us that NUC is a broad line of small form factor IA64 computers with versions tailored for various industries and applications. These find use in industrial distributed control systems and programmable logic controllers as HMI (human-machine interface) workstation hosts.

Intel makes a specific set of NUC devices containing i3, i5, and i7 laptop processors intended for general application support. It is these devices that Roon Labs uses to host ROCK. Please consult the reference to determine which hardware Roon ROCK currently supports. Intel tends to add new IA64 devices faster than Roon adds support for them. Typically, ROCK lags a generation behind NUC hardware.

Picking a NUC

Roon Labs cautions that they support specific NUC hardware families by processor architecture and architecture generation. As of this writing, ROCK supports i3, i5, and i7 on 12th Gen hardware or older. See the list.

Note that there are many NUCS with Pentium, Celeron, Atom, etc inside that Intel makes for specific industrial markets. Roon intends that you use consumer grade NUCS with i-series architecture and a recent generation. RoonOS contains drivers specific to the Core-i architecture and recent generations. RoonOS may not contain the hardware drivers for other architectures so may fail to start when used with an architecture other than those specified. So be careful. Know what you’re buying.

And System76?

My original intent was to purchase hardware from one of the Amazon partners offering Intel NUC products. I quickly discovered that Intel was careful not to compete with its distributors. There is no Amazon Intel store!

So I had a go at putting a system together and quickly became overwhelmed by an embarrassing richness of parts from which one could build a NUC. But I wanted it to just run. That meant I needed curated parts and not a NewEgg configurator. So I decided to send a few extra dollars in System76’s direction for curated storage and memory.

I’d been watching the folks at System76 since they released POP_OS some years ago and was aware that they had a line of small form factor computers that looked very like NUCS. Consulting with System76 pre-sales, I confirmed that they were indeed consumer NUC based.

I picked the 11th Gen i3 as base configuration, expanded memory to 16GB (both slots filled) and storage to 256 GB which changed from base SSD to Western Digital Black that is considerably faster than the base 128 GB device. External library storage is on a Crucial USB-C USB-3 SSD.

System76 installed POP_OS and did a burn-in over a weekend. I received my system on Tuesday (UPS terminal pick-up). I was impressed with System76 robust packaging.

During receiving inspection, I verified that the UEFI firmware was up to date and that UFEI boot was enabled. This is another service System76 provides during assembly. The machine arrived ready for RoonOS to replace POP_OS.

Why not an Amazon Gypsy?

I took a look at Amazon and quickly discovered a myriad of “NUC-like” offerings. What I couldn’t determine was what would be inside? Were these surplus stock? Did they come from a container that fell in the ocean or off a truck? What was in them? In looking at elevations, some had serial ports or VGA ports suggesting that they were surplus industrial products and not consumer SOHO products.

Where did I find Crucial or Hynix memory and Samsung SSDs? And how did I tell if the SSD was the right one for the internal port? I decided it was worth some of my money to let experts pick the guts. So System76 got the order.

Installing Roon ROCK on NUC

Installing ROCK follows the Raspberry Pi model. Download ROCK from Roon, unzip to a USB nub, and boot from USB. The installer starts and magic happens. In about 5 minutes, Roon is ready to rock.

It was really that easy because System76 had sorted the UEFI firmware for POP_OS and RoonOS and POP_OS have common firmware requirements.

Until

Once we got things running, there was some learning our way around the RoonOS WebUI home screen. Finding Roon was easy. Roon Remote has a thing for that. I’ll try to explain my impressions of the installation work flow that Roon didn’t talk about in their guides. The guides are good but leave some discovery to the new owner. I’ll try to describe what I encountered. Nothing hard but I was a former system integrator in the modeling and simulation world so was used to surprises.

Screen capture of Roon Controller's dialog used to locate your Roon ROCK.
Roon ROCK locator

Browse to this location, in my case .33 where I’d parked ROCK.

Roon Server WebUI

Roon Rock has a minimal WebUI that is used to perform some of the initial configuration activities. There’s really only 1 thing you have to do here, install the ffmpeg executable. The installation guide details this procedure and I’ll fill in some gaps below. The “Operating System” Reinstall button is used as instructed by Roon Labs Support on a case by case basis. The Roon Database and Settings section need not be used. The regular Roon Remote UI covers this function.

Roon ROCK web server showing Operating System status, server software status, and database status.
ROCK home page status summary view

Later, when the SMB share is mounted, you will see a file tree. In that tree, readme.txt files give amplifying instructions for the use of the share and interaction of the WebUI with the share directories and files. Please look for readme files before proceeding.

Updating RoonOS

Open the Roon ROCK server’s home page in a web browser. Here, I’m using MacOS on Apple Silicon.

On this page, check the operating system status. Read the text carefully. If the current operational software is newer than that you downloaded, a note will appear here. If out of date, it is best to update the USB installer and take a mulligan.

Adding ffmpeg

The Roon Server Software section serves two purposes. On initial startup, the page checks for ffmpeg and will prompt you to install it if it is missing. After initial startup, it serves as a place to check the Roon Server version installed. The image above is from a post-ffmpeg start.

ffmpeg is from the fine people at Fraunhofer Institute and comes encumbered with the Institute’s non-free license grant. Most GPL purists won’t distribute this software directly and make you jump through some hoops to get it on your own. Roon Makes this easy by giving instructions to install ffmpeg from the IA64 Linux maintainer’s pre-built binary package containing ffmpeg and the associated libraries.

This ffmpeg is statically linked. That means that the program and all its library files are present in the image. No need to run down the library dependencies separately That’s why Roon uses this one and not a Debian package or four. So follow the instructions!

Next, check Roon Server Software status. if ffmpeg is needed, there will be a note here. Click the button (labeled Restart in this view) and you’ll be transported to instructions for obtaining ffmpeg. This will take you to the ffmpeg maintainer’s personal website where you can download compiled and statically linked archive of ffmpeg utility and libraries.

Uncompress the archive and drag and drop the ffmpeg image in the share location specified. Yep, you’ll need to connect to the Rock share, browse about some, and drag and drop the ffmpeg image to the designated place. Once this is done, you restart ROCK and the init script moves ffmpeg from where you left it to where it lives.

MacOS finder connected to Rock, Codecs directory open, and ffmpeg image deposited as directed
ROCK SMB mounted and open for ffmpeg image installation

Once ffmpeg is in place, restart Rock using the button just used to open the get ffmpeg instructions in your browser.

Roon ROCK will restart.

Check Roon Versions

Once you’ve installed ffmpeg, the ffmpeg corner will change to become the Roon Server Software corner. It will show the version running. Compare this with the version on your legacy server. If the ROCK version is older, there should be an option to reinstall Roon Server appearing there. Likely, the updated version will appear in a bit and you will be coached to do a restart once the new version is in place. I’m not sure this process is explained. Also, I expect the normal remote restart prompting will take care of future updates. Anyway, the version here needs to be consistent with your legacy server’s database backups.

The Nucleus Migration Guide [2] gives instructions for saving a backup, identifying it, and reloading it. Note the instructions to check time stamps when choosing the set to restore.

Moving your license and database

Check Database and Settings next and it will remind you that Roon Core needs the database. At this point, stop your legacy Roon server and move to a Roon Remote. I used the MacOS Roon Remote as iPad typing can be somewhat chaotic.

Stop your legacy Roon Server.

Start Roon Remote. It will spin some, decide your core has gone missing and ask if you’d like to locate a new core. Answer yes. Wait for Remote to find your ROCK. Select the ROCK. It will remind you that ROCK needs a license. And hidden in the view gutter, the option to load a saved database and migrate the license. Do that.

Add a directory that contains your database backups.

Roon backup restore menu showing our USB location and our NAS location. I restored a database that had been saved to the Peabody folder.
Restore Database dialog

Picking a folder will take you to the backup manager.

Database selection for restoration. Click the proper dealie

Pick and restore the database following the Roon Labs instructions for picking databases using time stamps. This will almost always work.

Restoring a scheduled backup from the backups directory.
Restoring a Backup — how to pick one based on date recorded

It is possible to get into a situation where your legacy core was running newer software than that on your ROCK core. Unfortunately, this is a dead end in the dialogs. The way out is to check legacy core version and ROCK core version. Note that RoonOS and Roon Core are versioned separately. Check Roon Core version in the upper right corner. Note that version.

Restart the legacy server and connect to it. Note its version. I believe Roon can load an older database and revise it to the new schema but not the other way round. Anyway, in the legacy system, review backups and find the last several time stamps. Restart ROCK, repeat the connect and restore using an earlier database. You should only have to go back a day or two to find one that loads. Let it load and reindex your local library.

By davehamby

A modern Merlin, hell bent for glory, he shot the works and nothing worked.