Core 2.0.2 released!

Hi everyone!

We just released version 2.0.2 of Curie core :o !

This version is a big step forward towards leveraging the whole potential of your Arduino 101.
The mayor number change reflects this, and while you can take a look at the whole changelog, I'll try to summarize what's new and how it can affect your (present and future) sketches.

First of all, we are introducing the BLE Central role. This opens a world of possibilities (proximity tracking, to name one) but comes at a cost:

  • sketches are bigger since a lot of code has been moved from the x86 firmware to the Arduino core. This problem will be solved with the upcoming core release, when we'll also update the RTOS to make it smaller and faster
  • RAM usage has increased a bit (this too will be solved with the x86 FW update) but shouldn't affect any existing sketch
  • BLE firmware is being updated silently if not in sync with the library. This happens on both Java IDE and Arduino Create. If you want to restore the previous one (for example, if you need for any reason to downgrade the core) you must reinstall 1.0.7 and "burn the bootloader" again to restore the old firmware, otherwise your sketches using BLE won't work. The UI will tell you what to do so there is no need to worry.

Said that, we are excited to make this new APIs available and we're sure you will push these new capabilities to the limit!

But this release is not only BLE-centric! There are a lot of fixes everywhere, some of which has been kindly contributed by the vibrant 101 community via github.

Power management is now a first-class citizen and the upcoming "companion" library will allow you to make your battery-powered projects last longer at no cost.

IMU APIs have been expanded to handle precise synchronisation with the underlying readings, so it is now possible to avoid a lot of pitfalls arising from fusion algorithms being fed with out-of-sync data.

So, fire up your Board Manager, upload the core and show everyone what you can do with this tiny powerful board!

Happy hacking!

Core 2.0.2 continues to fail loading the 101 with "exit status 74" error; see related thread

https://forum.arduino.cc/index.php?topic=467201.msg3205748#msg3205748

Just reporting in on core 2.

Have had a lot of issues with my 101 especially with CREATE.

After chasing my tail over drivers and many supposed fixes I got down and dirty with the problems last night.

Was given the impression that just uploading a sketch would also swap out the core but that didn't seem to be the case under windows 7 x64 pro.

Ended up uninstalling the 101 and its associated com ports using admin device manager showing hidden devices with the 101 connected until I had deleted its associated hardware.

Disconnected the 101 and re-boot.
re-connect once re-boot was complete.

101 showed up properly so opened DESKTOP ide 1.8.2 and did the Programmer "Arduino/Genuino 101 Firmware Updater"

First attempt failed so re did the delete hardware section above again.
This time the firmware went up just fine.

Tried the "blink" example and that worked
Tried the same one again but it failed.

Another computer re-boot

Three sketches went up no problem.
Swapped to CREATE which has always been a NO GO here for the 101.

YAY the 101 is now working in CREATE.
It had always failed at the "touching com port" before but not any more.

My many thanks for the release of these cores to all concerned as they have fixed so many issues I had with my 101.

IMPORTANT NOTE. Also TURN OFF your anti virus or other software security until the UPDATE has gone up to the board as I am pretty sure that was part of the update failures problem I had.

Where can we find information about "Power management is now a first-class citizen and the upcoming "companion" library will allow you to make your battery-powered projects last longer at no cost."

@Jack1728, the relevant commits are 29daefb64 and cd3215bd5 which allow using GitHub - bigdinotech/Arduino101Power: Low Power Library for Arduino101 out of the box. This library still needs to be reviewed, though, but it should be almost ok

Unfortunately it seems that updating the core somehow destroyed my 101. Updated via the board manager and flashed the new BLE firmware. Then i realized my recent sketch stopped working properly. So i tried to rewind the whole process by downgrading the firmware via the process described above (reinstalling 1.07 and burning the bootloader). Now i'm not able to upload a sketch anymore. The error message says to press the Master reset button but this doesn't help. Any tip how to revive my 101?

@ rgb3

which method did you use ?

This is they one they recommend

If you used my method then it was only meant as to how I did it.

Somebody else asked me and I wrote up a slightly better step through that I did on a basis that I wrote as I did it again to make sure I was correct.

Upgrading the cores also saw the drivers re-do themselves with the intel drivers offering themselves each time.
You must say yes to those if they come up.

Also what OS which IDE etc etc etc.

@rgb3,
there's 0% chance that the "burn bootloader" feature bricks a board because the bootloader is untouched and it starts every time you connect a board via USB. Try completely unconnecting the board, launch the upload and then connect the board as soon as the flasher writes "Press MASTER_RESET" . Let me know if it works or not so we can setup a debugging session, thanks!

Can you talk about this:

"- sketches are bigger since a lot of code has been moved from the x86 firmware to the Arduino core. This problem will be solved with the upcoming core release, when we'll also update the RTOS to make it smaller and faster"

A sketch of mine went from 60% ->95% when is the upcoming core release and what changes do I have to make to get it?

Jack

Thanks so much for the work on the new version - working pretty good thus far in my testing.

The examples are nice and simple - AND - I am trying to figure out how to do have the central device use a setEventHandler for notifications on when a peripheral updates a value.

Setup:
Arduino 101 - running in peripheral mode. Advertising two services and two characteristics per service, set to Read and Notify.
Arduino 101 - running in central mode. Successfully connects, reads services and the corresponding characteristics and sets notification to true.

I can manually loop and check if the characteristic value has changed - but this is really limiting. Would much rather have an event handler to pick up the value and trigger activity instead.

Any suggestions?

Cheers,

facchinm:
@rgb3,
there's 0% chance that the "burn bootloader" feature bricks a board because the bootloader is untouched and it starts every time you connect a board via USB. Try completely unconnecting the board, launch the upload and then connect the board as soon as the flasher writes "Press MASTER_RESET" . Let me know if it works or not so we can setup a debugging session, thanks!

Thank you very much for your help! After some more attempts it worked and all seems to be fine again. I realized that i have to manually switch the programmer to "Arduino 101 firmware updater" everytime i want to upload a sketch. Then it works. Strange thing is, my other (not updated) 101 Boards (and UNOs) work with the default AVRII programmer. Anyway, thanks a lot, glad my 101 didn't brick :slight_smile:

Ah - my previous message about having to downgrade to 1.07 was inaccurate. The actual issue was having to run the IDE in administrator (sudo) mode.
Without sudo I get the "Flashing is taking longer than expected" message. Even in administrator mode, it's flaky - sometimes have to press the Master Reset, sometimes the regular Reset. Eventually works, but a bit unpredictable.

I have found V2.0.2 drops connections and does not recover

!!! 1495144473353 Connecting to: 101 !!!

< 1495144473471 {.}

1495144473615 0.144sec {,~`2000~V36|+X-~x|+B-~b|+P-~p|+C-~c|+D-~d|+A~z}

< 1495144473823 0.208sec {z`0}

1495144474146 0.323sec {+152927V36|z~27.5~1.5~0.75|C516~4~1.8~~|t517~15~?|xc515~Z~3.6~3.6~~256|X~Z~RR518~12~30~8~-35~-1|X~Z~t519~15~<-2>Drag red box
to zoom in on the controls~-20~3|z|h516|h517|h~Z|x~x~29~27~~`512|d~a~~~}

< 1495144474472 0.326sec {a`0}

1495144474942 0.47sec {+152927~m~V36|z~5~2|R~26~21~25.5~-1~-1.5|R~7~4.7~6.3~11.5~-4|R~0~3.5~5.3~0.5~-2.5|z~8.15~1.15|Rc~7~2.3~2.3~~|C~12~0.65~~|z|z~17.95~1.15|Rc~7~2.3~2.3~~|C~12~0.65~~|z|R~215~9~3~-1~21|R~0~3.1~4.3~8.5~13|t~15~<-3>Arduino~9~5|z~9~8|Rc~15~7~4~~|t~26~<+4>101~~|z|t832~15~<-3><i><b>Loading~9~12|t831~15~<-3>Board Layout~9~14|z~9~15.5|t`830~15~<-3>.........~~|z}

< 1495144475328 0.386sec {a`1}

!!! 1495144486540 11.598sec Reconnecting to: 101 !!!

!!! 1495144502668 27.726sec Reconnecting to: 101 !!!

!!! 1495144518787 43.846sec Reconnecting to: 101 !!!

!!! 1495144521190 46.248sec Sending Close Connection {!} to: 101 !!!

Did extensive testing with V1.0.7 before moving to V2.0.2. After these failures using V2.0.2 I went back to IDE V1.6.8 and Curie V1.0.7 and the connection problems dissapeared.

I am using this config
BLEService uartService = BLEService("6E400001-B5A3-F393-E0A9-E50E24DCCA9E");
BLEDescriptor uartNameDescriptor = BLEDescriptor("2901", localName);
BLECharacteristic rxCharacteristic = BLECharacteristic("6E400002-B5A3-F393-E0A9-E50E24DCCA9E", BLEWrite, BLE_MAX_LENGTH);
BLEDescriptor rxNameDescriptor = BLEDescriptor("2901", "RX - (Write)");
BLECharacteristic txCharacteristic = BLECharacteristic("6E400003-B5A3-F393-E0A9-E50E24DCCA9E", BLENotify, BLE_MAX_LENGTH); // was BLEIndicate
BLEDescriptor txNameDescriptor = BLEDescriptor("2901", "TX - (Indicate)");

Hi,

I found these lines in the release notifications:

  • Central can scan for a particular Peripheral using its MAC address.
  • Central can filter out discovered Peripherals during the scanning process.

Is it now possible to set up a communication between two 101's via BLE?
Or is the 101 still not able to work as a central device?

@ leo900,
the 101 can absolutely communicate with another 101 since 2.0.2 :slight_smile:

@drmpf,
have you already opened an issue on the 101 github? We are collecting a series of "difficult" sketches to improve our regression test suite, if you could post a sketch exposing the problem it would be a great help! Thanks

Thanks so much for the work on the new version - working pretty good thus far in my testing.

Hi all,

I tried to install Core 2.0.2 via board manager of arduino IDE 1.8.5., but it always fails, saying "CRC doesn't match, file is corrupted". The error occurs on two different computers, various versions of arduino IDE and Curie core.

Is there a way to get it outside the arduino IDE?

Any help is highly appreciated
Genki

@andy_g
What OS ?

Not seen that msg myself for any of the cores for board manager but have seen it under windows in other circumstances...Compromised systems and systems with over zealous security.

In the former case the system needs to be clean and in the latter temporarily turning off the security would fix the message and then adding the file location to the white list / exclusions.

If it is the former I have a step through for obtaining a clean system again, just ask and I will post it.

Thanks ballscrewbob!

OSs are Windows 10 Version 1703 and 1607. I can install other boards via board manager -no hassle. So i ruled out compromised OSs or security software.
However, i had success using the JSON "description" for 2.0.2 version from "Releases · arduino/ArduinoCore-arc32 · GitHub". I have no idea of any differences between this version and the arduino IDE "built-in".
Fun thing: Again the CRC error occurs when using the JSON for 2.2.0 version from the same site.

For now it seems to work somehow, but i have to check this with the board now.

Genki

Never rule out security...It is one of the more common issues with Arduino things not working under windows.

Norton and a few others have been shown to cause problems on occasion.

Win 8 through 10 also pose thier own issues too but that's usually in the driver department but you seem to be OK on that aspect.