I did a bit more digging into this using a small Swift Playgrounds app querying AVAudioSession.currentRoute, and the behaviour seems more complicated than just “Roon misidentifies USB-C AirPods Max”.
With Bluetooth enabled and USB-C connected, iOS exposes the route to third-party apps as:
Type: BluetoothA2DPOutput
via:
AVAudioSession.sharedInstance().currentRoute.outputs
So in that state, Roon is actually reporting what the public API is giving it.
Interestingly though, Control Center simultaneously labels the connection as “USB Audio”, so internally iOS clearly knows there is a USB audio path active.
When I disable Bluetooth completely (while leaving USB-C connected), the route changes entirely. The same API then reports:
Name: AirPods Max USB Audio
Type: Headphones UID: AppleUSBAudioEngine:Apple Inc.:AirPods Max USB Audio…
At that point:
- Roon reports “Headphones”
- Spatial Audio disappears
- Conversation Awareness disappears
- the UID exposes a real CoreAudio USB audio engine
That makes me think there are actually two distinct operating modes here, not just a cosmetic reporting issue.
My current theory is:
- With Bluetooth enabled, Apple keeps the AirPods running through the normal AirPods/Bluetooth stack (possibly for Spatial Audio, device switching, head tracking etc.), even if audio may still partly travel over USB internally.
- With Bluetooth disabled, iOS falls back to a straightforward USB audio device mode via AppleUSBAudioEngine.
So I’m not sure it’s accurate to say “Bluetooth must be off for Roon to definitively use USB-C”. What seems more accurate is:
- Bluetooth ON - iOS exposes the route as BluetoothA2DPOutput
- Bluetooth OFF - iOS exposes a genuine USB audio engine
Roon appears to just reflect whichever route abstraction iOS exposes through AVAudioSession.
The unresolved part is whether the Bluetooth-enabled mode is:
- genuinely transporting audio over AAC/A2DP Bluetooth, or
- still transporting PCM over USB internally while exposing the route logically as Bluetooth for compatibility with the AirPods feature stack.
The cleanest way to answer that would probably be on a Mac using Apple Bluetooth developer tools (PacketLogger/Bluetooth Explorer). Someone could check whether active A2DP audio packets are still flowing while USB-C audio is playing. If only BLE/control traffic is present, then it would suggest audio is actually travelling over USB even though iOS reports the route as Bluetooth.