X

BTServer may cause CPU spikes for some iOS developers

For some people who develop iOS applications, slowdowns or hangs on their Macs may be attributable to a faulty BTServer process.

Topher Kessler MacFixIt Editor
Topher, an avid Mac user for the past 15 years, has been a contributing author to MacFixIt since the spring of 2008. One of his passions is troubleshooting Mac problems and making the best use of Macs and Apple hardware at home and in the workplace.
Topher Kessler
2 min read

If you develop applications for Apple's iPhone or iPad, you may run into an issue where the Mac you're working on may start lagging or even lock up. If this happens, checking Activity Monitor may show the process BTServer running in the background.

For some people experiencing this problem, their Macs start running slower with the fans blaring at high speed, but for others the system crawls to a halt, requiring a forced reset of the system.

In order to properly test iOS applications, Apple includes an iOS simulator in its XCode package that is regularly used to launch and test code. This simulator tries to mimic every component of the iOS device, including the OS environment as well as the hardware components of the device.

iOS Simulator
The iOS Simulator mimics the iPhone and iPad hardware so developers can test their applications. Screenshot by Topher Kessler

The BTServer process is supposed to mimic Bluetooth hardware for the iOS simulator, and may have a bug or two, or otherwise be affected by the code that certain developers are using in their applications.

This problem happens on a number of different setups, but in a recent Apple discussion on the topic it appears to happen most for people running XCode 4.2 (the latest version) on Snow Leopard 10.6.8.

If the BTServer process causes repeated issues for you, then there are several approaches you can take:

  1. Kill the process
    In the immediate event of a hang or slowdown, you can use Activity Monitor to force the BTServer process to quit. Alternatively you can enter "killall BTServer" in the Terminal if that is faster.

  2. Disable the Bluetooth server
    If your coding project does not require Bluetooth connectivity, then you can disable the server for the iOS Simulator. To do this, enter the following command in the Terminal (copy and paste the entire command to one line in the Terminal):
    sudo defaults write `locate com.apple.BTServer.plist` Disabled -bool true

    If this does not work, then you may have multiple instances of the XCode developer tools installed, in which case you will need to specify the file to edit. Go to the Macintosh HD > Developer > Platforms > iPhoneSimulator.platform > Developer > SDKs > iPhoneSimulator5.0.sdk > System > Library > LaunchDaemons directory and then open the plist file from there. Locate the "Disabled" key and change its value from "false" to "true."


Questions? Comments? Have a fix? Post them below or e-mail us!
Be sure to check us out on Twitter and the CNET Mac forums.