Group Group Group Group Group Group Group Group Group Forums

Arduino Tutorial: Integrating Bluetooth LE and iOS

Learn how to control a servo wirelessly from your iPhone in this tutorial with Arduino, Bluetooth LE (low energy) and iOS.

This is a companion discussion topic for the original entry at

Hi Ray,

Thanks for this useful article. Would the iOS code, work with any Xcode version, or does it require a specific OS X version and Xcode version.

I have mostly coded android apps and am new to iOS.

Please suggest.


My apologies, I got the name of the author wrong in my previous post. My question is directed to Owen.


Hello Tejanshu,
This tutorial was originally written in Objective C. If you would like to see a much more up to date tutorial checkout the Swift version at:
It uses the latest Xcode & Swift version.

Hi , do you now how to open connection bluetooth between OBD dongle and IOS device?

How do I find the UUID for a different Bluetooth device?
I have a generic HC-06. Is UUID required?

I’m not familiar with an OBD dongle. Is it BLE or Classic?
If BLE then you must use CoreBluetooth framework similar to this tutorial.
If Bluetooth Classic, then use the External Accessories framework.

The HC-06 is Bluetooth Classic, therefore you won’t be discovering its UUID like in BLE devices. If you want to use this module then you need to use the External Accessories framework.

Yes , i found a CorBluetooth Framework but i didn’t find a terminal to configure dongle

Do you have more information on the dongle you are trying to connect to? i.e. datasheet, mfg, part number.
Since I’m not familiar with your specific device, I’d have to take a peek at the datasheet before I can be of any help.

It’s a CAR OBD simulator

Hi brahimkr,
Sorry but still not enough info to help you. Communicating with Bluetooth hardware is very specific to the device. Again, without a datasheet/tech data to reference it is like trying to translate English into another language, but no one told you what is the other language. If you have a part number & mfg name, I’m willing to take a peek at it.

Hello Owenb,
I am new to the arduino and Ble shield. In my project, I am using arduino uno and ble shield 2.1 and an android app. I want to send data from the arduino to the mobile app through ble shield. So my main doubt is as this is the one way communication from ble shield to mobile app, I need to set only the Tx pin to pin 5 just like you said in the example…right? I mean no need of setting a Rx pin as the mobile app is not sending any data. Please provide a clarification on this. Thank you in advance.

Hello user111,
Its true that RX doesn’t have to be connected if no data is expected to be received on the Arduino. It doesn’t ‘hurt’ to connect it in case you need bi-directional comms later, but maybe you need the extra I/O pin for something else. For the application as you explained it, yes you are right that the RX pin isn’t needed.

Thanks for this great Tutorial.
BLE-Shield v2.0.0 is sold out, can I use BLE-Shield v3.0.0 ?

Thanks :slight_smile:

I took a quick peek at the v3 Shield you mentioned. With a couple code changes to the iOS app it should work fine. It uses 1 ‘Data’ characteristic instead of 2 (TX & RX).

Also, a newer version of this tutorial in Swift 3 is available at:
It uses the Black Widow BLE Shield which has a long range Bluetooth module.



I got an AdaFruit Bluefruit LE board and having fun with similar projects. An app that I would like to control with a remote device using tactile buttons and sliders would mean sending Mfi code to the iPhone. So rather than using the LE controller from the phone it would be the other way around. Is there public domain code to do this?


Hi neilerick,
MFi is only required when using Bluetooth Classic (External Accessories Framework) devices with iOS, not BLE (Core Bluetooth Framework).
And for buttons and sliders, I would definitely use BLE to prevent the MFi requirement :smile:


Thanks Owen:

I have been trying to interface with a commercial app that responds to a game controller but cannot figure out the corresponding keyboard commands. Perhaps there are specific game control commands that have no correlation to a keyboard. Have others made their own game controller? Time to browse some more!


Anytime I have to interface with another product, I try to get info directly from that company. You never know what obscure protocols they may use.
It may be worthwhile to shoot an email to the commercial app company and request an SDK. They may have one for game controller integration.