EDIT August 19, 2009: Added information about server timeouts.
GameKit is a new feature in iPhone OS 3.0 that allows apps to easily exchange data over a Bluetooth Personal Area Networking (PAN). Apple did a great job making this functionality available, but there are a few issues users may see with these applications. If you are having problems connecting with a GameKit app such as PhotoBeamer and BeamCatcher, try the following steps to resolve the issue.
- Be sure you are using a supported device. The original iPhone (which has a silver back) and the original iPod Touch (which lacks hardware volume controls on the side) do not have the necessary hardware to support PhotoBeamer or other GameKit apps.
- Be sure Bluetooth is on. You should see a Bluetooth icon next to the battery icon like this:
. It’s OK if it’s grey, but it must be there.[1] - Turn off WiFi. The WiFi and Bluetooth radios operate on the same frequency band and share an antenna. Turning off WiFi ensures that the maximum bandwidth is available to the Bluetooth connection.[2]
- Be patient. The Bluetooth radio powers down if it has not been used for a while, and takes some time to start up. It can also take some time for two unpaired devices to synchronize and start to transfer data. Allow a minute or so before giving up on a connection. It’s often faster, but this is not something we have control over.
- (Added 8/19/09) If changing servers, be prepared to wait. Developers do not have direct control over the Bluetooth PAN. It is created automatically when a connection is made, and is torn down after it has been idle for some time. Unfortunately, each device can only have one outgoing (client mode) PAN active at a time. For PhotoBeamer, this means that if you are viewing photos from one friend, then try to disconnect and view another friend’s photos, it will take a long time for the second friend’s phone to show up. This can also happen when switching between different PAN apps.
- If all else fails, restart the app or even the device. Sometimes the resolver just stops seeing a particular device.[3] We expect this to improve with future iPhone OS updates as the technology matures.
Networking is easy in a perfect environment. It’s hard in the real world (at the OS level at least, modern operating systems shield the developer from much of this), and it’s even harder when it’s a decentralized, low-power wireless network like Bluetooth. I spent years working on this sort of thing at a very low level in very demanding environments. I definitely feel for the Apple engineers trying to make this a smooth, painless user experience, but it’s not quite there yet. Until it is, I’ll continue to look for new ways to improve the experience within the confines of the iPhone SDK.
—
- Apps that use the Apple-provided peer picker will offer to turn on Bluetooth for you. Apps such as PhotoBeamer which allow connections at any time or use a custom peer selection UI for another reason can warn you that Bluetooth is disabled but can not turn it on. You need to go to the Settings app and turn it on yourself. [BACK]
- See, you have to go to the Settings App anyway! [BACK]
- (Added 8/19/09) This is probably because of the limited number of outgoing PAN connections and idle timeout issue. [BACK]