[CALL FOR TESTERS] Core 2.0.0 RC is now available!

Dear all,
the long awaited core 2.0.0 is almost landing on all Arduno and Genuino 101, but before rolling out the release we'd love you to test it and report your impressions.

The changelog is huge, with BLE Central role representing the most important feature. If you have sketches using BLE Peripheral functionalities, please test them with the new core and report any breakage, since one of the main objectives is preserving API compatibility with v1.0.7

To "enter the beta", simply add

~~ ~~https://github.com/01org/corelibs-arduino101/releases/download/2.0.0/package_2.0.0-rc4_index.json~~ ~~
(will upload an updated version really soon) to "Additional board manager URLs " in you IDE's Preferences, open the Board Manager and install the "Intel Curie Boards (test)" package.

Once 2.0.0 RC is installed, you'll be prompted to change the BLE FW every time you switch between 1.0.7 and 2.0.0. A lean and easy way to accomplish it is:

  • Connect the board
  • Try an upload; if the FW is wrong, it will fail
  • Click "Burn Bootloader" (should start automatically)
  • Unplug the board from the PC -> this ensures a complete power cycle
  • Reattach the board
  • Upload the sketch

Happy hacking, and thanks for your help!

Win 7 X64 PRO AMD platform

Added URL to IDE 1.8.0.

Shut down IDE and restart.

Unplugged 101.

RE- plugged 101.

Went to Boards, Board Manager, nothing listed in UPDATABLE.

Selected 101 as board and set appropriate COM. (8 in my case)

Set bare minimum sketch as the one to upload.

Compiled first as a check no problem.

Set VERBOSE for upload.

Hit the UPLOAD button.

Arduino: 1.8.0 (Windows 7), Board: "Arduino/Genuino 101"

Sketch uses 17168 bytes (11%) of program storage space. Maximum is 155648 bytes.
Forcing reset using 1200bps open/close on port COM8
d:\Users\Bob\AppData\Local\Arduino15\packages\Intel\tools\arduino101load\1.6.9+1.28/arduino101load/arduino101load d:\Users\Bob\AppData\Local\Arduino15\packages\Intel\tools\arduino101load\1.6.9+1.28/x86/bin d:\Users\Bob\AppData\Local\Temp\arduino_build_567021/sketch_dec24a.ino.bin COM8 verbose ATP1BLE000-1541C5635 141312 
Starting download script...
Args to shell: [d:\Users\Bob\AppData\Local\Arduino15\packages\Intel\tools\arduino101load\1.6.9+1.28/x86/bin d:\Users\Bob\AppData\Local\Temp\arduino_build_567021/sketch_dec24a.ino.bin COM8 verbose ATP1BLE000-1541C5635 141312]
Serial Port: COM8
BIN FILE d:\Users\Bob\AppData\Local\Temp\arduino_build_567021/sketch_dec24a.ino.bin
Waiting for device...
Waiting for device...
Waiting for device...
An error occurred while uploading the sketch

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Try again but hit Master reset

Sketch uses 17168 bytes (11%) of program storage space. Maximum is 155648 bytes.
Forcing reset using 1200bps open/close on port COM8
d:\Users\Bob\AppData\Local\Arduino15\packages\Intel\tools\arduino101load\1.6.9+1.28/arduino101load/arduino101load d:\Users\Bob\AppData\Local\Arduino15\packages\Intel\tools\arduino101load\1.6.9+1.28/x86/bin d:\Users\Bob\AppData\Local\Temp\arduino_build_567021/sketch_dec24a.ino.bin COM8 verbose ATP1BLE000-1541C5635 141312 
Starting download script...
Args to shell: [d:\Users\Bob\AppData\Local\Arduino15\packages\Intel\tools\arduino101load\1.6.9+1.28/x86/bin d:\Users\Bob\AppData\Local\Temp\arduino_build_567021/sketch_dec24a.ino.bin COM8 verbose ATP1BLE000-1541C5635 141312]
Serial Port: COM8
BIN FILE d:\Users\Bob\AppData\Local\Temp\arduino_build_567021/sketch_dec24a.ino.bin
Waiting for device...
Device found!
Verifying BLE version: ATP1BLE000-1541C5635
BLE version: verified
Invalid DFU suffix signature
A valid DFU suffix will be required in a future dfu-util release!!!
can't detach
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Opening DFU capable USB device...
ID 8087:0aba
Run-time device DFU version 0011
Claiming USB DFU Interface...
Setting Alternate Setting #7 ...
Determining device status: state = dfuDNLOAD-IDLE, status = 0
aborting previous incomplete transfer
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0011
Device returned transfer size 2048
Copying data from PC to DFU device

Download [                         ]   0%            0 bytes
Download [==                       ]  10%         2048 bytes
Download [=====                    ]  21%         4096 bytes
Download [=======                  ]  31%         6144 bytes
Download [==========               ]  42%         8192 bytes
Download [=============            ]  53%        10240 bytes
Download [===============          ]  63%        12288 bytes
Download [==================       ]  74%        14336 bytes
Download [=====================    ]  85%        16384 bytes
Download [=======================  ]  95%        17168 bytes
Download [=========================] 100%        17168 bytes
Download done.
Sent a total of 17168 bytes
state(2) = dfuIDLE, status(0) = No error condition is present
Done!
Resetting USB to switch back to runtime mode
SUCCESS: Sketch will execute in about 5 seconds.

Select 101 firmware updater as programmer.

Hit Burn Bootloader

Hit RESET on board as per lower console instruction. (If this should be MASTER RESET then the text in the IDE needs updating)

d:\Users\Bob\AppData\Local\Arduino15\packages\Intel\tools\flashpack\1.0.0/flash_dfu.bat 

Reset the board before proceeding...
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
find: sensor: No such file or directory
Error while burning bootloader.
find: sensor: No such file or directory

Try again but used MASTER RESET.

Eventual timeout as per above.

Boards manager lists the Curie as 1.0.7

Upload BLINK example to re-check board works basic.

I've made the update for 2.0.0 RC.
Updated the BLE Firmware.

Sketch upload and everything seem to work.
thx

I noticed that when I perform a setValue on a BLECharacteristic that it causes the BLECharacteristic.written() method to return true on the next check, so it's setting the written event again.

For my application this causes a bit of an issue because I have characteristic that is both read and written to and I don't want the written flag to be set to true when I set the value.

Is there anyway in the 2.0.0 version that you can set the value of a BLECharacteristic without causing it's written flag to go off?

This is not the current behavior in version 1.0.7. You can call setValue without it causing it to trigger the written flag to be true.

[UPDATE]
So I found the solution, if you simply call the written() command right after you setValue this will clear the flag.

Could the corelib-2.0RC supports CODK-M firmware fused arduino 101???
I want to use this version of the corelib with CODK-M firmware fused arduino 101!!!!!!

visoft:
Could the corelib-2.0RC supports CODK-M firmware fused arduino 101???
I want to use this version of the corelib with CODK-M firmware fused arduino 101!!!!!!

I found that CODK-M is compatible with corelib-2.0.0RC4!!!!!!!!!

The 1.0.7 has a serious performance issue. The Core 2.0.0 RC fixed it and everything is fine now.

Here is my project:

Hey

I am currently working on BLE and we are very interested in the nRF Chip which is implemented on the Genuino 101. For our application we are looking for the best BLE Chip to track beacons (We just want to know the beacons address and the RSSI value).
During the last months we compared the onboard BLE Chip of the Raspberry Pi 3 with severel different BLE USB Dongles. For our last comparison we want some data from the nRF51822 Chip. To get Data from this we bought the Genuino 101.
To simply scan for beacons I uploaded the ble_scan.ino sketch from the 2.0.0 library to my Genuino 101.

#include <CurieBLE.h>

void setup() {
  Serial.begin(115200);

  // initialize the BLE hardware
  BLE.begin();

  Serial.println("BLE Central scan");

  // start scanning for peripheral
  BLE.scan();
}

void loop() {
  // check if a peripheral has been discovered
  BLEDevice peripheral = BLE.available();

  if (peripheral) 
  {
       // discovered a peripheral
     
      // print address
      Serial.print(peripheral.address()+";");

      // print the local name, if present
      if (peripheral.hasLocalName()) 
      {
        Serial.print("Local Name: ");
        Serial.print(peripheral.localName()+";");
      }

      // print the advertised service UUID's, if present
      /*if (peripheral.hasAdvertisedServiceUuid()) 
      {
        Serial.print("Service UUID's: ");
        for (int i = 0; i < peripheral.advertisedServiceUuidCount(); i++) 
        {
          Serial.print(peripheral.advertisedServiceUuid(i));
          Serial.print(" ");
        }
        Serial.println();
      }*/

      // print the RSSI
      Serial.print(peripheral.rssi());

      Serial.println();
    }
}

To summarize my collected data from the Genuino 101 (nRF51822), I can say that the there is much less noise in comparison with the data from the onboard Raspberry Pi Chip or USB Dongles.

But now I want to mention my current problem with the Genuino.
When I scan for beacons and my beacons advertising interval is set to 100ms I usually should receive 10 advertising packets per second with my Genuino. And for a 500ms ad-interval I should receive 2 packets per second. But at this time I only receive half of the amount of packets. So at a 100ms ad-interval I receive about 5 Packs/sec, and so on.
Does anyone of you know why this happens or is it possible to increase the ?scan-intervall? or something like that so I get every Packet which is transmitted by the beacon?

I would be really grateful If someone of you could help me.

Hi @kgillespieanaren,

There is an open issue on Github to track the item you discussed: CurieBLE: switchCharacteristic.written() returns incorrect value after first connect · Issue #380 · arduino/ArduinoCore-arc32 · GitHub

Hi @FirnkranzCH,

Could you please open an issue on Github to track your observation? Issues · arduino/ArduinoCore-arc32 · GitHub

Thanks.

sandeepmistry:
Hi @FirnkranzCH,

Could you please open an issue on Github to track your observation? Issues · arduino/ArduinoCore-arc32 · GitHub

Thanks.

Hi @sandeepmistry,

thank you for your advice.
Do you know, how long it takes to get an answer on github?

Thanks.

Wow! you guys have been busy. A blank sketch went from using 11% of storage space to 30% of storage space. I really like many of the changes and my BLE functions work great.

As my program grow closer and closer to 100% usage of storage space though, I am wandering what I should do if I exceed 100% usage.

So I have noticed a minor bug.

With Windows 7 or 10 if your trying to flash the bootloader using the flash_dfu.bat script it cannot handle the flash_dfu.bat having any spaces in the path to the folder it's located in. For example

If I were to have flash_dfu.bat in the folder
C:\This has spaces\flashpack\2.0.0\flash_dfu.bat <-- Doesn't run says it can execute "C:\This"

C:\This_doesnt_have_spaces\flashpack\2.0.0\flash_dfu.bat <-- This works.

I figure this is just something to do with the batch file handling path variables.

Hi kgillespieanaren,
thanks a lot for spotting this bug. We are completely rewriting the firmware updater code to make it more robust and we'll triple check that the "paths with spaces" issues are not inherited :slight_smile: Another RC will be published soon with this new tool and a couple of other goodies!

Thanks for the update facchinm!

Hey was wondering if you are aware of another issue where the device crashes when it tries to start advertising if there is more than 7 characteristics in a service?

All the characteristics and the service are in the 128-bit UUID range. I can send you an example if that help.

Hi @kgillespieanaren,

Hey was wondering if you are aware of another issue where the device crashes when it tries to start advertising if there is more than 7 characteristics in a service?

All the characteristics and the service are in the 128-bit UUID range. I can send you an example if that help.

Yes please! It would be great if you can open an issue with a sample sketch for this problem on Github: Issues · arduino/ArduinoCore-arc32 · GitHub

I have filed a ticket. Hopefully I have given enough information for you guys, thanks for the help!

So I am not a mac user and I currently have an issue with an associate trying to install this version on their Mac book. They have added the link, and checked that it was the correct link in preferences, but the 2.0.0 version does not show up in their board manager.

We'll publish an updated version really soon, to handle automatic FW update when switching between versions.
Thanks for your reports, they've been really useful!