LightAquaBlue: a supplementary Bluetooth Objective-C framework

Bea Lam <>

This project is no longer maintained.

LightAquaBlue is an Objective-C framework included in the Python LightBlue library, as part of the Mac OS X implementation. You can use it to:

Of course, all of this functionality is already available in Apple's IOBluetooth framework; however, LightAquaBlue wraps IOBluetooth to provide a simpler API. The BBBluetoothOBEXClient and BBBluetoothOBEXServer enable the implementation of OBEX client and server sessions without the low-level request and response handling that is required when using IOBluetooth's OBEXSession class.

To get LightAquaBlue, download the LightBlue source package and look inside src/mac/LightAquaBlue/ for the XCode project file and accompanying sources.

Header files

The significant header files of the LightAquaBlue framework can be viewed online:


The source distribution for LightBlue includes two example applications for using the LightAquaBlue framework, inside the examples/LightAquaBlue directory:

Screenshot of SimpleOBEXClient example application Screenshot of SimpleOBEXServer example application

Brief code example

To use BBBluetoothOBEXClient to send an OBEX Connect request, for example, from within your awakeFromNib method:

    - (void)awakeFromNib
        NSString *address = @"aa:bb:cc:dd:ee:ff";
        int rfcommChannel = 15;
        BluetoothDeviceAddress deviceAddress;
        IOBluetoothNSStringToDeviceAddress(address, &deviceAddress);
        BBBluetoothOBEXClient *client = [[BBBluetoothOBEXClient alloc] initWithRemoteDeviceAddress:&deviceAddress
        OBEXError status = [client sendConnectRequestWithHeaders:nil];
        if (status == kOBEXSuccess) {
            NSLog(@"Sent 'Connect' request, waiting for response...");

And implement the accompanying delegate method to be notified when the Connect request has finished:

    - (void)client:(BBBluetoothOBEXClient *)client
          response:(BBOBEXResponse *)response
        if ([response responseCode] == kOBEXResponseCodeSuccessWithFinalBit)
            NSLog(@"Connect request refused (%@)", [response responseCodeDescription]);