Howto disable A2DP on the iPhone

UPDATE [October 4, 2009]: I have created a utility that prevents the manual labour and can be installed via Cydia.

UPDATE [August 20, 2009]: The previous post described a method that didn’t work well. Shawn Porter pointed out the problem, so I have updated the post and now it works fine.

I have an iPhone 3G and use it in my car as a music player. I have installed an GROM audio adapter for the iPhone, so I can connect it to my Mazda 6 car stereo. The GROM adapter even allows to use the controls on the steering wheel. Everything worked just fine, until iPhone OS 3.0 came along.

iPhone OS 3.0 includes support for A2DP, which is capable of stream audio via BlueTooth to another device. Unfortunately, there is no way to disable A2DP and it will always select the A2DP source when it is available. You can switch back to the dock connector, but you need to do this each time you start your car.

Apple should make an option to select which BlueTooth profiles should be enabled for a certain connection, but this is not possible with the current firmware. I decided to jailbreak my iPhone and try to find a solution.

The interesting directory is /var/mobile/Library/Preferences, where the iPhone stores the BlueTooth settings. These settings are stored in the PLIST format, so you need a PLIST editor (Mac or PC) or you need to convert them by hand. Transfer the com.apple.MobileBluetooth.services.plist to your computer (refer to Simon’s blog to find out how to do this). You can also use iFile to edit the file on your iPhone directly (thanks to Richard van den Berg for pointing it out).

Open the com.apple.MobileBluetooth.services.plist in your PLIST editor and make sure you edit the A2DPService section and store the devices you don’t want to use A2DP in the UnauthorizeList (without the letter “d”). This dictionary will probably not exist yet, so you need to add it by hand. You need to know the MAC address, but it is probably listed already in this file.

<key>A2DPService</key>
<dict>
  <key>State</key>
  <true/>
  <key>UnauthorizeList</key>
  <dict>
    <key>00:10:60:D0:91:D0</key>        <!-- This is the MAC address -->
    <date>2009-08-08T01:00:00Z</date>   <!-- Timestamp -->
  </dict>
</dict>

Transfer the PLIST file back to your iPhone and reboot the device. Once it gets back on, then the A2DP service should be disabled.

35 thoughts on “Howto disable A2DP on the iPhone

  1. This didn’t work for me so I must have done something wrong.

    What MAC address is entered there? I assume you would want to add the stereo’s MAC address and not the phone’s. I am not sure what I added since I just cut and paste from a MAC listed in the file as you mention above. Can you let me know what devices’ MAC should go there?

    I assume the timestamp doesn’t matter. Please let me know if this is not the case.

    Ultimately I was expecting that even if I wanted to stream music over bluetooth, that the mod above would prevent me from doing so. I am still able to stream over bluetooth (and the phone still defaults to this) so I don’t think I did it correctly.

    I used iFile to directly edit the file, and then I rebooted.

  2. It is the MAC address of your stereo. If you just copied my MAC address, then you told your phone that my carkit should never use A2DP with your phone. I guess that won’t happen anyway :) . The MAC address is listed in the other sections too if your stereo is also supporting handsfree operation. Make sure you use that address.

    I downloaded the PLIST file to my computer and renamed the ‘DeviceHistory’ key to ‘UnauthorizeList’. This method makes sure you don’t have any typing errors and you have a correct timestamp (if it is used at all). If you can’t get it to work, then please send me your PLIST file via email (mail [at] ramondeklein [dot] nl). Maybe I can take a look at what’s wrong.

  3. Sorry, I didn’t mean I copied your MAC. I copied one already in my file. :)

    Ok, now I just need to figure out how to find the MAC address of the Ford Sync system I have. Thanks for the help! Will let you know how it goes.

  4. If your Ford system connected to your phone, then the settings should be in the A2DP service’s devicelist.

  5. Yup, I got it from there and as it turns out I grabbed the correct MAC. But it didn’t work. I am still debugging.

    Curiously I thought I could edit the com.apple.MobileBluetooth.devices.plist instead. Under the A2DP section for Sync I changed the value to unsupported. This didn’t work either. Weird. Anyway, I will continue to debug.

  6. The com.apple.MobileBluetooth.devices.plist file is updated each time your phone reconnects. I tried to disable A2DP there too, but it failed.

    Btw… I restarted my iPhone after unauthorizing the carkit. Did you do this as well?

  7. Cool it works now. I am not sure but I think I just had a typo initially. I am thinking I typed “UnauthorizedList” instead of “UnauthorizeList”. (had an extra “d” in there).

    Thanks for this cool tip!

  8. I tried to use your mod with iPhone and Dension BT1500(add on to Gateway 500), which has both A2DP and handsfree functions.
    Unfortunately, it disables both A2DP and phone functionality. After the mod the phone just stops connecting, and I have to pair again.

  9. end :
    This works great, thanks for following up with me Ramon!

    works indeed great. Just what I needed. Now we wait for Cydia. May be they will devellop a toggle.

  10. Actually while this does prevent the iPhone from automatically starting, I have now an equally annoying problem.

    If I do not plug in my iPhone to the USB, start my car, and then turn it off, it immediately fires up a random song on the iPhone.

    If I plug my phone into the USB, start my car, turn it off, then everything is fine.

    I really wish I could figure this out. I even changed the services.plist file so that A2DP was Unsupported for Sync. I marked the file read only, but the iphone is still able to overwrite this file. I can’t figure out how to stop this behavior.

    So while this method does cure the problem of streaming over bluetooth, it seems to have created another issue where my iPhone fires up music as soon as I turn my car off.

  11. Ramon, you are AMAZING :-)

    I’ve been searching to disable the A2DP on my iPhone 3Gs for my Jabra BT8040. The instruction is very easy. And it works on the first try.

    THANK YOU SO MUCH!

  12. While this trick may work for some devices, it will wreak havoc with the Ford Sync system, which is what I really wanted it for. My 2010 Fusion and iPhone 3.0 don’t really get along very well, but this made it much worse.

    After applying this hack, it is true that AD2P audio does not work and that no audio will come through the car’s stereo system. However, it will trigger the device to start playing through its built in speakers instead… but not when it’s connected to “Bluetooth Audio Source” … it will trigger the iPod functions to start playing music when using AM/FM/Sirius radio, or when using voice commands.

    I guess if you’re willing to live with having your iPhone randomly playing music in your pocket, then it works OK. I was really excited that this would solve my issues, but it did not, it just created more.

    What iPhone 3.1+ needs is a built in ability to prevent Bluetooth devices from accessing iPod functionality. Turn it on by default for those who won’t really care, but make it easily accessible for everyone else. It would make a lot of frustrations for a lot of people go away very quickly.

  13. I agree that iPhone 3.1 should have such an option, but we won’t know until it will be released. You could check the beta versions for this switch, but I haven’t heard about it, so I guess it won’t be there.

    I haven’t tested this hack with a lot of devices. It works for my Parrot carkit, so I was happy. I cannot do any further testing, because my iPhone broke down. :(

    Don’t worry. It fell on a concrete floor. It has nothing to do with this hack :)

  14. Pingback: Bluetooth profile selector [jailbreak] « Ramon’s weblog

  15. Ramon, your program (Bluetooth Profile Selector), would enable the RSAP (Remote sim access profile)?

    [MODBREAK] Please leave your comments about Bluetooth Profile Selector here.

  16. @Michael: Try my new Bluetooth Profile Selector (available through Cydia) and disable the Remote profile. Maybe this will help you…

  17. Hey! i am trying to disable the a2dp on my iphone and i followed the instructions but i am getting an error message. I am using iFile. Am i suppose to replace what is written under A2DP Service with what you have posted?

  18. Lucy :

    Hey! i am trying to disable the a2dp on my iphone and i followed the instructions but i am getting an error message. I am using iFile. Am i suppose to replace what is written under A2DP Service with what you have posted?

    Use the BlueTooth Profile selector that I have created. It is much easier to use. If you don’t like the additional icon on your springboard, then you can remove the program after you disabled A2DP.

  19. Wow! Thanks for this tutorial. This thing was driving me so crazy in my car that I had to jailbreak my iphone today. Luckily, jailbreaking is easy and adding this was just as easy. Got done in about 15 minutes and now bluetooth audio is disabled in my car. Now when I plug my Iphone into my car, I just have to tell it to go to USB and it starts working right away. Very nice. I will have to see if there is some kind of sync setting to default to USB automatically when something is plugged into it.

    Thanks again!

  20. Thank you, thank you! I’ve been searching for days for this. Apple should have implemented these options themselves, but I guess they’re worried about user confusion. :-\

    I’m not beyond editing plists myself by hand, but your app makes it super easy.

    Thanks again!

  21. Hi,

    Thanks for the utility I have been using it for month, happily.
    but I now updated my phone to iOS4 (iPhone 3G), and while the utility still appear to work fine, my car keeps trying to connect to the A2DP, even when it is disabled in your utility.
    Any idea of what was changed with iOS4 ?

    thanks

    marc

  22. After upgrading to iOS4 I too ran into the same problem as everyone else apparently. The Bluetooth Profile Selector no longer functions as it did is iOS3. Is there going to be an update to fix this as it is a real pain in the tail with my Alpine car stereo as it always takes the A2DP instead of the speaker. Drives me nuts and no one will fix this problem. Apple should at least provide a way to disable A2DP in the Bluetooth settings.

  23. I am undoubtedly not too familiar with this subject but I do prefer to visit blogs for layout suggestions and exciting subjects. You truly described a matter that I more often than not don’t care much about and built it quite fascinating. That is a wonderful weblog that I’ll pay attention to. I already bookmarked it for long term reference. Thank you

  24. Pingback: Wie heeft ervaring met aanpassen PLIST's (bluetooth profile)? - iPhone Forum - alles over de Apple iPhone, iPad en iPod touch

  25. Ramon, could you please check this with 4.3.2 firmware? The changes in PLIST (even if entered manually and not with BTPS) are resetting after reboot ;(

  26. اللي يعرف طريقة التشغيل لاني ثبته ولااشتغل قهرررررني

  27. Pingback: Iphone 4 en parrot Ck3100 - iCulture forum | iPhone, iPad, iPod touch, Apple TV en iOS

  28. After relying on this utility for years, then having Apple kill it with plist overwrites, I discovered something so simple, it’s stupid. The *last connection made* takes over bluetooth audio. I would get in my car, dock, turn it on, bluetooth paired, all audio went through bluetooth. Now I get in the car, turn it on, wait for it to pair THEN dock it… USB takes over and everything works as it should.

  29. Hey, this rule is really useful in daily use. I love to use my iphone to scan qr codes. Sometimes, I can buy discounted goods on a website. And my friends introduced some online qr code generators for different mobile divices, such as, iPhone, iPad, Android, Mac, etc.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>