Arduino 101 + BLE + Windows 10 + Python/C app

Can someone point me to a reference that uses BLE, a Bluetooth USB dongle (which manufacturer/model #) and a Windows 10 application in C or Python? I'd really like to learn about BLE, and this seems like a from the ground up way of doing it?

Any clues would be really helpful.

In answer to a question that I'm sure will be floated, my Android tablet is BLE-stupid and we have mongrel smartphones [Lumia-very cheap and not a bit standard :-( ].

Thank you in advance for any tidbits. Incomplete answers are always helpful as well. I'm not expecting a miracle.


take a look at Gatt example.

The option I am playing around with as time permits is as follows:

Bluegiga BLED112 dongle

Jeff Rowberg's BGAPI - Python and C++ BGLIB JAVA wrapper for BGAPI

Bluegiga dongle has the option to be set up with a cable replacement service so you can receive data like it is a serial port.

Thank you Ijardo and Merlin513. I spotted the top two references in Merlin513's post, and those looked very promising. I've put the dongle on order.

Merlin513, please keep us/me informed of your success. The cable replacement approach certainly looks interesting and hopefully more straightforward (nothing is straightforward). Have you figured out how to have an Arduino sketch do a serial write to Bluethooth?

Thank you again!

Here is where I am in getting this to work.

I started with a example sketch that transmits IMU ax, ay, az data that you can find somewhere on this board but can also be found at just scroll down to the Arduino 101 section. The sketch I used from the site was Arduino101_led_control.ino .

You can try a few of the other sketches as well. To use the tie the Bluegiga CRP service to the sketch you have to change the following lines:

// ====  create Nordic UART service =========
BLEService               uartService          = BLEService("6E400001B5A3F393E0A9E50E24DCCA9E");
// create characteristic
BLECharacteristic    txCharacteristic = BLECharacteristic("6E400003B5A3F393E0A9E50E24DCCA9E", BLENotify , 20); // == RX on central (android app)
BLECharacteristic    rxCharacteristic = BLECharacteristic("6E400002B5A3F393E0A9E50E24DCCA9E", BLEWriteWithoutResponse, 20);  // == TX on central (android app)


// ====  create Nordic UART service =========
BLEService uartService = BLEService("0bd51666e7cb469b8e4d2742f1ba77cc");
// create characteristic
BLECharacteristic txCharacteristic = BLECharacteristic("e7add780b0424876aae1112855353cc1", BLENotify, 20); // == RX on central (android app)
BLECharacteristic rxCharacteristic = BLECharacteristic("e7add780b0424876aae1112855353cc1", BLEWriteWithoutResponse, 20);  // == TX on central (android app)

Get a hold of Jeff Rowberg's library and run theBluegiga BGAPI/BGLib demo: Bluegiga "Cable Replacement Profile" collector python program ( and you see the data streaming from the dongle. The python program is pretty straight forward but when I tried to use the JAVA versrion I referenced it got more confusing on how to get it work. Had to take a break to work a couple of other projects.

Merlin513: Thank you. I really appreciate this. Your references and suggestions will surely keep me busy. Please let us/me know when you have reached a level of success putting it all together.

The 101 is a pretty cool board in a lot of respects - price and apparent capabilities. Mine was easy to get. I just went into Fry’s Electronics (Northern California) and they had a stack of them at MSRP with no weird markup.

Again, many thanks.

Merlin513, As a first step to running Jeff Rowberg's Python script you used PIP to install from Github, right? I've not used PIP before because everything I've wanted is in Pypi. What is the easiest and safest way to do the PIP install? Any recommendations? (I'm definitely new at this!) Thank you in advance.


Did have to do any sort of install. Just unzip and put it somewhere then then run the CRP program. I typically use idle as my editor.

Make sure you download the Bluegiga SDK and flash the dongle with the CRP Script.


If anyone is interested I made a simple Windows 10 Universal Platform app with Visual Studio written in Javascript/HTML that uses the new GATT api. I uploaded the LED BLE sketch that you can find on Github and control that LED from the app.

Hi Fred

I would be very interested. Its one of the things on my to do list which is getting longer since I picked up the Arduino101. The reason I am very interested in getting the Bluegiga API working in JAVA is so that it could be interfaced with Processing. Besides its the challenge of getting something done :)

Thanks Mike

Mike, Sorry to be a dunce. The Bluegiga SDK came from here and is shown in the attached image. I’m not clear on how to flash the dongle with the CRP script using the tool. What did you do? CRP wasn’t one of the options in the Tools or Command pull-down. Can you provide a little more explanation, please?

Hi vdolcourt

Ok lets see if I can do this:

  • Do an Alt-d, this will bring up the DFU menu
  • From the USB Bootloader tab click on the Browse button
  • Browse to C:\Bluegiga\ble-1.4.1-128\example\dkble112\cable_replacement (starting where you put the Blugiga SDK.
  • Select the out-ble112.hex file (should be the only file available)
  • Click the Upload button

You will get a comment that the upload finished and that its.

By the way I finally got BGLIB-GUI in the the JAVA version of the BGLIB working so it reads the values streamed from the dongle. One step closer to integrating it with processing.


I created a really bare bones sample program that works with the LED sample for the 101. The project is a Windows 10 UWP program, because I have not found a way to get this to work with regular win32 code. -- I would be really interested if anyone could point me in the right direction!

To get it to work you first need to pair the LED device in the bluetooth settings for windows 10. I'm using a Surface Pro 3 with in-built bluetooth which works fine.

and a direct link to where the relevant code is

Hi wouthor

You might want to start at the Windows IoT web site. Here is a link for remote Arduino but you can look around the site for other info as well. Check out this post as well on BLE over Serial - scroll down and you will a bunch of links for windows.

Here are the links for reference:

Approach for serial over BLE?

Powering up with BLE in Windows 8.1

BLE for developers in Windows 8.1 Part I

BLE for developers in Windows 8.1 Part II


Hi vdolcourt and all others following this thread. Just got the JAVA BGLIB-GUI working with Bluegiga replacement service and a slightly modified sketch. See this thread for more info and summary of where I am in the process.

I created a really bare bones sample program that works with the LED sample for the 101. The project is a Windows 10 UWP program, because I have not found a way to get this to work with regular win32 code. – I would be really interested if anyone could point me in the right direction!

The GATT API does not seem to be implemented in WIN32. It looks like it is Windows Runtime Only (UWP). See here :
Windows Bluetooth Support