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!
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."
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?
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.
@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!
"- 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?
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.
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
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.
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~~~}
!!! 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)");
@ leo900,
the 101 can absolutely communicate with another 101 since 2.0.2
@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
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.
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.
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.