I have a 2019 BMW X2 with Carplay. The audio quality is noticeably worse with Carplay than through USB or even Bluetooth.

Carplay apparently transmits the audio via a wi-fi connection the phone makes with the car's head unit. It's higher bandwidth than Bluetooth, so Apple claims it can transmit lossless audio without recompression to the head unit. But it doesn't sound that way. (I watched a WWDC developer video from Apple that explained this)

I've played music through Tidal & Apple Music. They both sound the same through Carplay. Thin, lacks clarity. Doesn't really sound like mp3/aac compression though.

Does anyone know what codec/protocol is used to trasmit audio to the head unit? Anyone else experience this? I want to know whether this is a problem with Carplay or just the head unit's implementation of it.

  • Apple Music streams based on network quality. Have you isolated your test tracks to ones you know are downloaded or high quality? The Cs music player helps you find Apple Music tracks of a certain encoding bitrate if you don’t have smart playlists to curate your test tracks.
    – bmike
    Jul 28, 2019 at 18:45
  • @bmike "nitrate" = 'bitrate"?
    – IconDaemon
    Jul 28, 2019 at 19:16
  • 🦅 👁 @IconDaemon
    – bmike
    Jul 28, 2019 at 19:51
  • @bmike yes, streaming the full bitrate Apple Music tracks. And lossless streams via Tidal. Those same streams sound better via regular bluetooth in the car and a lot better via USB.
    – taktak
    Jul 29, 2019 at 0:57
  • That would be irritating, especially if you have a nice sound system or if you have to pay some sort of annual fee for this.
    – bmike
    Jul 29, 2019 at 2:25

1 Answer 1


Apple’s consumer documentation says you need a unit with Bluetooth or WiFi for wireless and I expect it uses both when paired and available. You’d need to measure the RF to tell which is being used from moment to moment or check console logs for any debug messages.

A slightly longer answer is that the technical details are not public and neither is the API / SDK other than this technical detail that explains the app simply hands off the media container or media with title, streaming Boolean, artwork and percentage played...

The details on the SDK are shared with MFI partners.

As a developer, you don’t need to be MFI, just hand off your media to the player and it will play through. As a user, you can control what media you ask to play but probably not affect the delivery process in any meaningful way other than choosing your source media to be of a quality you expect to hear.

You must log in to answer this question.

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