Audio Personal Computing

Modius Mystery

Audio system mysteries can take you to some strange places. This post describes troubleshooting a MacOS Monterey USB Audio 2 problem. The issue first presented as a non-functioning SPDIF input on one of our DACS.

The other day, I had the urge to listen to Gumby and Modius to get a better feel for the difference between the two. So I put both in a Roon audio group and started a record playing in the group. Gumby remained on SPDIF. Modius was shifted to SPDIF. Different Roon Bridges served the common source to the two devices. Modius hung. I did some poking around the next day to see what I could learn.

This attempted experiment started a rather lengthy snipe hunt. Several misunderstandings on my part prolonged the hunt. The investigation uncovered a misunderstandings about MacOS System Information display and found a misconfigured Raspberry Pi based Roon endpoint. Read on for the details.


  1. Major rewrite to remove all the twisty windy passages the troubleshooting misadventure and cut to the chase.

Lessons learned

  • If a Roon Bridge Raspberry Pi distribution web server has an audio device configuration page, the correct device variant must be selected. I had configured the wrong HiFiBerry DigiPro variant. Note that HiFiBerryOS automatically configures the proper bonnet driver.
  • MacOS Monterey Sound Preferences is dynamic and will show hot plug audio devices coming and going properly.
  • MacOS Monterey System Information is not fully dynamic. It reliably shows the system configuration at the time the application is launch. It may not show additions made while the app is open.

So what’s in our HiFi?

  • A Furman Power Elite 15 PF power conditioner
  • Schiit Audio Freya+ preamp in buffer mode
  • Schiit Vidar in stereo configuration
  • Schiit Gumby multibit DAC
  • Schiit Modius delta-sigma DAC
  • Allo DigiOne Signature streamer feeding Gumby
  • HiFiBerry DigiPro streamer feeding Modius SPDIF
  • Panasonic TV feeding Modius TOSlink
  • All Roon devices are running Roon 1.8 and are up to date.

Raspberry Pi Roon Bridges

I have 4 Raspberry Cobbler Roon Bridges, one with an Allo DigiOne Signature bonnet, two with a HiFiBerry Digi+ bonnet, and one with a HiFiBerry DAC Pro bonnet. For this exercise, I used the two first two, the Allo DigiOne Signature and the HiFiBerry Digi+. Each has SPDIF and TOSlink outputs and both work correctly.

The architecture of these devices uses the Raspberry Pi to process the audio protocol, Roon RAAT, to recover the media bit stream. The samples are unpacked, serialized, and sent to an I2S transmitter that connects to the 40 pin connector. From there, it rises to the bonnet, the bonnet’s I2S receiver re-clocks the stream and sends it on to the SPDIF and TOSlink outputs.

Some Raspberry Pi Roon distributions but not all can send the sample stream to a Pi USB output and this actually works with Schiit Audio’s USB DACS. I’ve tried this with Modi and the Tivoli Radio One Roon endpoint.

HiFiBerry Streaming Bonnets

HiFiBerry offers 3 streaming bonnets in its HiFiBerry Digi series. Each may need a specific driver or its specific device addresses if using a common driver. Selecting the incorrect bonnet type is harmless but will cause the bonnet to be silent. So remember which bonnet type you put inside the sheet metal and select it at Roon Bridge distribution configuration time.

What I tried to do

Modius normally resides in the audio rack and is used to render TV TOSlink optical audio from the TV. Modius also has a HiFiBerry based streamer (modius.local) connected to the SPDIF input (coax). Until this point, the SPDIF input had been unused.

I put Gumby and Modius in a Roon group and tried to play a track with Modius the selected preamp input. Playback never started. But the TV worked! This is a strong clue that Modius.local is the problem and not the Modius itself. It took several days to come to this realization.

Next, in my study

I moved Modius into my study and connected it in Modi’s place using the modi.local HiFiBerry Roon bridge. I cabled up the bridge’s TOSlink and SPDIF inputs, connected the USB power and USB program inputs, and had a go.

Checking the USB

This is the first place I was befuddled. I used MacOS System Information to determine what had been connected. I added Modius to the CalDigit dock and nothing changed.

System Information

I opened System Information by going to the Apple Menu, selecting About This Mac, and clicking the System Report button to conjure up the display appearing below.

I had expected Modius to appear along with Modi. It didn’t until I rebooted the iMac.

Our normal audio rig showing Modi in the study system

I had opened System Information before connecting Modius. I found Modi and then connected Modius to another port on the dock. Modius did not appear. I then rebooted the Mac. Modius appeared. This led to the wrong hypothesis that USB plug and play was at fault.

Apparently, System Information, once rendered, does not track plug and play changes.

System Preferences

System Preferences is dynamic and does respond to plug and play correctly. Connecting and disconnecting Modius from the USB caused it to appear and disappear from the list of local sound devices.

What I should have found but didn’t

The System Preferences audio pane will show all USB Audio 2 devices connected to the CalDigit hub as shown below.

Sound Preferences with both USB Audio 2 devices up

How to correctly check for USB Audio 2 devices

Use Sound Preferences to check USB Audio 2 device plug and play. The connected devices appear in the local devices list at the top. When a new device is connected to the Mac or its Dock, MacOS inserts it in the list. When the device disconnects MacOS removes it.

System Info is more a static trawl and render for bug reports etc and not at a dynamic system status display. My mistake.

Surprise, Modius has a Schiit Unisom USB Interface

I thought my Modius used the C-Media USB interface. Surprise, Modius checked in as Schiit Unison Modius. The Schiit Unison interface is quite robust. It passes all the USB Consortium (Schiit is a member) validation tests for USB branding.

But, there was a second problem

It kept bugging me that the TV worked but that the Roon Bridge modius.local wouldn’t. The bridge had a choice of HiFiBerryOS or RoPieeeXL, both Roon Bridge distributions. After some reflection and a bowl of raspberry crumble, it dawned on me that the two Roon distributions differed in a fundamental way.

  • HiFiBerryOS correctly configured itself for HiFiBerry bonnets and supported no others.
  • RoPieee supports most popular audio bonnets including the HiFiBerry bonnets and the Allo Digital bonnets but could not auto configure them.
  • Along the way, I had changed to HiFiBerryOS and back to RoPieee. Did I select the wrong bonnet type? I did.

So, today, I changed the RoPieee configuration to the proper bonnet type and rebooted modius.local. Problem sorted.

By davehamby

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