Farzan Majdani Farzan Majdani - 1 month ago 18
Python Question

How to install either pybluez or LightBlue on OSX 10.9 (Mavericks‎)

I have tried to install both of pybluez and LightBlue on OSX10.9 but I am getting error.
Does anyone has managed to install any of these on Mavericks?

I am getting this error for LightBlue :

=== BUILD TARGET LightAquaBlue OF PROJECT LightAquaBlue WITH CONFIGURATION Release ===

Check dependencies
error: There is no SDK with the name or path '/Users/myname/Downloads/lightblue-0.4/src/mac/LightAquaBlue/macosx10.6'

** INSTALL FAILED **


The following build commands failed:
Check dependencies
(1 failure)





and I am getting this error for pyBluez :

osx/_osxbt.c:676:5: error: unknown type name 'IOBluetoothDeviceInquiryRef'; did you mean 'IOBluetoothDeviceRef'?

IOBluetoothDeviceInquiryRef inquiry;

^~~~~~~~~~~~~~~~~~~~~~~~~~~

IOBluetoothDeviceRef

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/IOBluetooth.framework/Headers/IOBluetoothUserLib.h:34:47: note: 'IOBluetoothDeviceRef' declared here

typedef struct OpaqueIOBluetoothObjectRef * IOBluetoothDeviceRef;

^

osx/_osxbt.c:688:17: error: unknown type name 'IOBluetoothDeviceInquiryRef'; did you mean 'IOBluetoothDeviceRef'?

IOBluetoothDeviceInquiryRef inquiryRef,

^~~~~~~~~~~~~~~~~~~~~~~~~~~

IOBluetoothDeviceRef

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/IOBluetooth.framework/Headers/IOBluetoothUserLib.h:34:47: note: 'IOBluetoothDeviceRef' declared here

typedef struct OpaqueIOBluetoothObjectRef * IOBluetoothDeviceRef;

^

osx/_osxbt.c:703:19: warning: implicit declaration of function 'IOBluetoothDeviceInquiryCreateWithCallbackRefCon' is invalid in C99 [-Wimplicit-function-declaration]

dd->inquiry = IOBluetoothDeviceInquiryCreateWithCallbackRefCon (&dd);

^

osx/_osxbt.c:703:17: warning: incompatible integer to pointer conversion assigning to 'IOBluetoothDeviceRef' (aka 'struct OpaqueIOBluetoothObjectRef *') from 'int' [-Wint-conversion]

dd->inquiry = IOBluetoothDeviceInquiryCreateWithCallbackRefCon (&dd);

^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

osx/_osxbt.c:705:5: warning: implicit declaration of function 'IOBluetoothDeviceInquirySetCompleteCallback' is invalid in C99 [-Wimplicit-function-declaration]

IOBluetoothDeviceInquirySetCompleteCallback (dd->inquiry,

^

osx/_osxbt.c:717:5: warning: implicit declaration of function 'IOBluetoothDeviceInquiryStart' is invalid in C99 [-Wimplicit-function-declaration]

IOBluetoothDeviceInquiryStart (dd->inquiry);

^

osx/_osxbt.c:721:5: warning: implicit declaration of function 'IOBluetoothDeviceInquiryDelete' is invalid in C99 [-Wimplicit-function-declaration]

IOBluetoothDeviceInquiryDelete (dd->inquiry);

^

5 warnings and 2 errors generated.

error: command 'gcc' failed with exit status 1

Ben Ben
Answer Source

PyBluez is windows only:

"PyBluez works on GNU/Linux and Windows XP (Microsoft and Widcomm Bluetooth stacks)." - pybluez homepage

It looks like you're installing the wrong version of LightBlue

Check dependencies 
error: There is no SDK with the name or path '/Users/myname/Downloads/lightblue-0.4/src/mac/LightAquaBlue/macosx10.6'

it's looking for a file for OSX 10.6.

Download and install the master distribution: https://github.com/postskolkovo/lightblue-0.4

If you get the error:

Check dependencies
No architectures to compile for (ARCHS=$(NATIVE_ARCH_ACTUAL), VALID_ARCHS=i386 x86_64).

** INSTALL FAILED **

you'll have to open up setup.py and change:

os.system("xcodebuild install -arch '$(NATIVE_ARCH_ACTUAL)' -target LightAquaBlue -configuration Release DSTROOT=/ INSTALL_PATH=/Library/Frameworks DEPLOYMENT_LOCATION=YES")

to:

os.system("xcodebuild install -arch 'i386' -target LightAquaBlue -configuration Release DSTROOT=/ INSTALL_PATH=/Library/Frameworks DEPLOYMENT_LOCATION=YES")

via this discussion

Edit
I actually got a ImportError: Bundle could not be loaded on Mavericks when I tried to import.
This seems to be the fix for 64 bit computers:

os.system("xcodebuild install -arch 'x86_64' -target LightAquaBlue -configuration Release DSTROOT=/ INSTALL_PATH=/Library/Frameworks DEPLOYMENT_LOCATION=YES")

Might be necessary if you come across the same thing.