2

I have a typical dac audio interface attached to my Mac for sound OUTPUT. (Just TBC, I don't use it for input, only output.)

This is a MBP 16" 2019, hence with four Thunderbolt3 (USB-C) ports. I happen to have an AWC 1->3 Thunderbolt4 hub (in fact I tried the Arturia both on the hub and directly on one of the four laptop ports, no diff)

It's a Arturia 2 (but really they're all the same). I connect the Arturia to the laptop obviously with a USBC-USBC cable.

The Arturia is bus powered. It is "USB-C interface compatible with PC and Mac, fully USB 2.0 compatible". (You can get actual thunderbolt dacs but they are still $expensive.)

You simply set System Settings -> "Sound" output to the interface, see image, and, it works perfectly.

HOWEVER on restart - the setting is lost and it reverts to one of the standards such as headphone out or laptop speakers.

Also as a curiosity: "sound effects through ..." is endlessly set to "headphones", even though, I would never use that (I'd just use "laptop speakers" if not using an audio interface).

I did try removing everything here /Library/Preferences/Audio and restarting a few times, but no difference.

The Arturia (like most dacs) is completely plug and play. You can install some software they provide (it does the typical thing of letting you toggle the leds etc) but it does not affect in any way the actual "connection" of the device; in all events I tried things a few times both with and without the supplied software, no difference.

Note that on a Mac annoyingly you can seemingly set the audio output device on EITHER (or BOTH?!) SystemSettings#"Sound" AND/OR "AudioMIDISetup". I have tried all combos of doing one or the other or both; doesn't seem to affect the problem I'm having.

The chosen output is lost after a mac restart.

Any ideas, TY

enter image description here

enter image description here

2
  • Having personal experience with this (I use a Behringer USB DAC) and I have found that macOS defaults to the last connected\activated device. I have to manually select the USB DAC on every reboot because when the USB power cycles, it unloads the driver and moves to the next available device.
    – Allan
    Jan 20 at 17:22
  • 1
    The important thing about /Library/Preferences/Audio is that it contains a file within it called com.apple.audio.SystemSettings.plist - so, after deleting everything and setting up your sound preferences again, check to see this file is there. Assuming it is, then do a reboot and check again to see if this file is there.
    – Monomeeth
    Jan 20 at 22:03

2 Answers 2

3
+50

This has been an ongoing issue with macOS/OS X for years. I also have a USB DAC that I use for both audio capture and output and if I plug it in after the OS boots up, it automatically selects it as the default. But, whenever I reboot, I have to reset my default audio device to the USB DAC. Your question gave me the impetus to solve this once and for all.

Switch Audio Device from Command Line

This requires a utility called switchaudio-osx. It can be installed via Homebrew or MacPorts. It is a bit old, but it's considered stable for the following platforms (as of this post):

  • Intel: Mojave through Ventura
  • Apple Silicon: Big Sur through Ventura

Usage:

% switchaudiosource -a             ← Lists all audio sources

Built-in Microphone (input)
USB Audio CODEC  (input)
Built-in Output (output)
USB Audio CODEC  (output)

Now, to switch the output audio device to the "USB Audio CODEC" (your device may be different) issue the command:

% switchaudiosource -s "USB Audio CODEC"
output audio device set to "USB Audio CODEC"

One caveat...

Use system_profiler to accurately obtain the device name!

*You shouldn’t have to do this, but I wanted to include this part should you have difficulty switching devices.

While testing this out, I had the devil's own job of figuring out why my switching wouldn't work. When I initially issued the command as shown above, I would get an error that the device couldn't be found:

% switchaudiosource -s "USB Audio CODEC"                                  
Could not find an audio device named "USB Audio CODEC" of type output.  Nothing was changed.

By using system_profiler I was able to obtain the full string to use. It so happens there was a trailing space at the end of the device name!

% system_profiler SPAudioDataType -xml | grep "USB Audio CODEC"           
                    <string>USB Audio CODEC </string>

So, if you have any difficulty, run this command to obtain the audio device name and copy it exactly what you see between the \<string>\</string> delimiters.

Create a shell script

Next, create a small Bash script to run this command.

#! /bin/bash
/opt/local/bin/switchaudiosource -s "Name of Audio Device"
exit

Run the script at login

There are a couple of ways to accomplish this:


Sources & References:

2
  • 2
    I just love how the OP’s question gave you “the impetus to solve this once and for all.” It speaks volumes to the many ways this site is such a valuable resource!
    – Monomeeth
    Jan 21 at 23:14
  • indeed, no wonder i sent a bounty! :)
    – Fattie
    Jan 23 at 16:52
0

I've had success creating multi-output or aggregate devices in Audio MIDI Setup.app, which include the external device you want.

Click on the little + icon at the bottom left of the Audio window to create a multi-output device, and select which of your audio outputs you want to include.

I suspect that the USB device is 'not ready' at the time the system selects the audio output. By using a 'virtual' output that contains your device, then the OS doesn't worry about whether the device is actually there or not.

1
  • that's an amazing idea, will investigate. "I suspect that the USB device is 'not ready' at the time the system selects the audio output." precisely, GMTA, just what i suspected ...
    – Fattie
    Jan 23 at 16:52

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .