At WWDC last year I went to a pretty interesting Core Bluetooth 101 session (link requires an Apple Developer account) that covered the Bluetooth Low Energy capabilities of iOS. Prior to the session, I had no idea that newer iOS devices can communicate with other devices and systems via Bluetooth LE without requiring an MFI license from Apple. The iPhone 4S, iPad 3 and all newer devices ship with a Bluetooth 4.0 radio that supports BLE.
Since then, I’ve been mulling over some ideas for projects with Arduino or Raspberry Pi communicating with iOS so I bought a Bluegiga BLED112 Bluetooth “integrated stack” dongle for $35 from Mouser to experiment with BLE in iOS.
The dongle is not a regular Bluetooth dongle - it doesn’t support talking to keyboards, mice and other regular Bluetooth devices - but it does provide a fully integrated Bluetooth LE stack on the chip itself. Basically, the dongle will appear as a serial device on your PC / Mac / Linux / Raspberry Pi and it provides a built-in API for working with BLE via a standard UART interface. The dongle also has a scripting capability where you can run scripts on the dongle itself rather than requiring an external CPU - I’m less interested in this feature but it’s pretty cool nonetheless.
The BLED112 is pretty small and feels a little fragile - its also a tight fit in most USB slots that I tried so I use mine by connecting it to an old Apple Keyboard USB extension cord. You can get similar small USB extension cords on Monoprice for less than a dollar and I’d recommend it as you will have to reboot the dongle during development (lots of plugging and unplugging).
My dongle shipped with a “thermometer” profile built in and was running v1.0.3 of the Bluegiga API (BGAPI). A quick dig around the Bluegiga forum (free registration required) and I upgraded to the latest “beta 2” build v1.1.0 which offers improved speed and stability.
Installing the BLED112 drivers in Windows
Although the BLED112 acts as a serial port when connected to Mac / Linux etc. it will require you to install drivers to interact with the dongle on Windows if you want to upgrade the firmware or install your own BLE GATT profile. I followed the following process on a Windows XP VMWare instance on my Mac to get the tools up and running:
- Download the Bluetooth Smart v.1.1.0 beta 2 Software Development Kit from Bluegiga and unzip the SDK to your C: drive - it will create a directory structure starting at C:\ble\
- Connect the BLED112 dongle to your USB port
- Windows will detect the new hardware and will prompt to install drivers - the regular dongle drivers are here: C:\ble\windrv\
- Once installed, the dongle will appear as a COM port called “Bluegiga Bluetooth Low Energy (COM X)” under Windows Device Manager.
Upgrading the BLED112
The docs on Bluegiga are pretty extensive but I found them a little tricky to navigate, so I’ve outlined the steps I followed here to upgrade my v1.0.3 dongle to the latest v1.1.0 (beta):
Note: these instructions require Windows and this kind of firmware update can brick the dongle - follow at your own risk!
- Install the dongle under Windows as above
- Launch the Bluegiga BLEGUI application from: C:\ble\bin\blegui2.exe
- In the BLEGUI main window, select “Bluegiga Bluetooth Low Energy (COM)” from the drop down at the top of the screen
- Click the “Attach” button to attach BLEGUI to the dongle
- Now we need to put the dongle into Firmware Update mode - in the BLEGUI menubar select “Commands -> DFU” which will reboot the dongle in DFU mode
- Windows will now detect the dongle as a new kind of USB device (it’ll show as a libusb (WinUSB) device in Device Manager) and will prompt you again for drivers - the DFU drivers are in the same location as the Windows drivers above: C:\ble\windrv\
- Once the drivers are installed, we now need the USB Vendor ID (VID) and Product ID (PID) of the dongle in DFU mode - this should be the same for you as it was for me, but to be sure navigate to the “libusb (WinUSB)” section of Device Manager and double-click the dongle. Under the description tab you should see a string that looks like “USB\VID_2458&PID_FFFE\1234” - this would give you a VID of 2458 and a PID of FFFE:
- We’re now ready to flash the new firmware from the Windows command line so launch a cmd window (Start -> Run… -> cmd)
- The v1.1.0 firmware file will be in the following location: C:\ble\example\usbcdc\out.hex
- From the command line type the following to navigate to the firmware and flash to the dongle:
The new firmware will be written to BLED112 and if all goes well once the write hits 100%, the dongle will reboot in regular COM mode and Device Manager will refresh to show the dongle under the COM / LPT Ports section.