ArduinoBLE for Nicla Sense ME

I get a warning and a lot error messages:

Arduino: 1.8.15 (Windows 10), Board: "Nicla Sense ME"

WARNING: library ArduinoBLE claims to run on samd, megaavr, mbed architecture(s) and may be incompatible with your current board which runs on mbed_nicla architecture(s).

Where can I find the right BLE library?

arm-none-eabi-g++: error: sketch\sketch_nov09b.ino.cpp: No such file or directory

arm-none-eabi-g++: warning: '-x c++' after last input file has no effect

arm-none-eabi-g++: fatal error: no input files

compilation terminated.

Multiple libraries were found for "ArduinoBLE.h"

Used: D:\ArduinoSketches\libraries\ArduinoBLE

Not used: D:\ArduinoSketches\libraries\arduino_933146

exit status 1

Error compiling for board Nicla Sense ME.

WARNING: library ArduinoBLE claims to run on samd, megaavr, mbed architecture(s) and may be incompatible with your current board which runs on mbed_nicla architecture(s).

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:45:13: error: 'vendor' in namespace 'ble' does not name a type

extern ble::vendor::cordio::CordioHCIDriver& ble_cordio_get_hci_driver();

         ^~~~~~

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp: In static member function 'static ble::CordioHCIDriver& ble::vendor::cordio::CordioHCIHook::getDriver()':

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:52:22: error: 'ble_cordio_get_hci_driver' was not declared in this scope

           return ble_cordio_get_hci_driver();

                  ^~~~~~~~~~~~~~~~~~~~~~~~~

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp: In static member function 'static ble::CordioHCITransportDriver& ble::vendor::cordio::CordioHCIHook::getTransportDriver()':

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:56:34: error: 'ble::CordioHCITransportDriver& ble::CordioHCIDriver::_transport_driver' is private within this context

           return getDriver()._transport_driver;

                              ^~~~~~~~~~~~~~~~~

In file included from D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:23:0:

C:\Users\info\AppData\Local\Arduino15\packages\arduino\hardware\mbed_nicla\2.9.9\cores\arduino/mbed/connectivity/FEATURE_BLE/include/ble/driver/CordioHCIDriver.h:230:31: note: declared private here

 CordioHCITransportDriver& _transport_driver;

                           ^~~~~~~~~~~~~~~~~

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp: In static member function 'static void ble::vendor::cordio::CordioHCIHook::setDataReceivedHandler(void ()(uint8_t, uint8_t))':

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:60:36: error: 'static void ble::CordioHCITransportDriver::set_data_received_handler(ble::CordioHCITransportDriver::data_received_handler_t)' is private within this context

           getTransportDriver().set_data_received_handler(handler);

                                ^~~~~~~~~~~~~~~~~~~~~~~~~

In file included from D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:22:0:

C:\Users\info\AppData\Local\Arduino15\packages\arduino\hardware\mbed_nicla\2.9.9\cores\arduino/mbed/connectivity/FEATURE_BLE/include/ble/driver/CordioHCITransportDriver.h:77:17: note: declared private here

 static void set_data_received_handler(data_received_handler_t handler);

             ^~~~~~~~~~~~~~~~~~~~~~~~~

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:60:69: error: 'static void ble::CordioHCITransportDriver::set_data_received_handler(ble::CordioHCITransportDriver::data_received_handler_t)' is private within this context

           getTransportDriver().set_data_received_handler(handler);

                                                                 ^

In file included from D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:22:0:

C:\Users\info\AppData\Local\Arduino15\packages\arduino\hardware\mbed_nicla\2.9.9\cores\arduino/mbed/connectivity/FEATURE_BLE/include/ble/driver/CordioHCITransportDriver.h:77:17: note: declared private here

 static void set_data_received_handler(data_received_handler_t handler);

             ^~~~~~~~~~~~~~~~~~~~~~~~~

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp: At global scope:

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:73:36: error: variable or field 'init_wsf' declared void

void init_wsf(ble::vendor::cordio::buf_pool_desc_t& buf_pool_desc) {

                                ^~~~~~~~~~~~~~~

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:73:36: error: 'buf_pool_desc_t' is not a member of 'ble::vendor::cordio'

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:73:36: note: suggested alternative:

In file included from D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:23:0:

C:\Users\info\AppData\Local\Arduino15\packages\arduino\hardware\mbed_nicla\2.9.9\cores\arduino/mbed/connectivity/FEATURE_BLE/include/ble/driver/CordioHCIDriver.h:36:8: note: 'ble::buf_pool_desc_t'

struct buf_pool_desc_t {

    ^~~~~~~~~~~~~~~

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:73:53: error: 'buf_pool_desc' was not declared in this scope

void init_wsf(ble::vendor::cordio::buf_pool_desc_t& buf_pool_desc) {

                                                 ^~~~~~~~~~~~~

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:73:53: note: suggested alternative: 'os_pool_def'

void init_wsf(ble::vendor::cordio::buf_pool_desc_t& buf_pool_desc) {

                                                 ^~~~~~~~~~~~~

                                                 os_pool_def

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp: In member function 'virtual int HCICordioTransportClass::begin()':

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:182:24: error: 'buf_pool_desc_t' is not a member of 'ble::vendor::cordio'

ble::vendor::cordio::buf_pool_desc_t bufPoolDesc = CordioHCIHook::getDriver().get_buffer_pool_description();

                    ^~~~~~~~~~~~~~~

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:182:24: note: suggested alternative:

In file included from D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:23:0:

C:\Users\info\AppData\Local\Arduino15\packages\arduino\hardware\mbed_nicla\2.9.9\cores\arduino/mbed/connectivity/FEATURE_BLE/include/ble/driver/CordioHCIDriver.h:36:8: note: 'ble::buf_pool_desc_t'

struct buf_pool_desc_t {

    ^~~~~~~~~~~~~~~

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:183:12: error: 'bufPoolDesc' was not declared in this scope

init_wsf(bufPoolDesc);

        ^~~~~~~~~~~

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:183:12: note: suggested alternative: 'osPoolDef'

init_wsf(bufPoolDesc);

        ^~~~~~~~~~~

        osPoolDef

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:183:3: error: 'init_wsf' was not declared in this scope

init_wsf(bufPoolDesc);

^~~~~~~~

D:\ArduinoSketches\libraries\ArduinoBLE\src\utility\HCICordioTransport.cpp:183:3: note: suggested alternative: 'wait_ns'

init_wsf(bufPoolDesc);

^~~~~~~~

wait_ns

Multiple libraries were found for "ArduinoBLE.h"

Used: D:\ArduinoSketches\libraries\ArduinoBLE

Not used: D:\ArduinoSketches\libraries\arduino_933146

exit status 1

Error compiling for board Nicla Sense ME.

Hi @ckuehnel

You can ignore this. The warning is only because the library's metadata didn't specify compatibility with the architecture of the Nicla, but it is the right library. This metadata deficiency has already been resolved, but there just hasn't been a release since that time. So it will no longer be displayed after the next release comes out.

From this error, I can see you are using a very outdated version of the ArduinoBLE library.

It looks like maybe you tried to update it but the update failed leaving the library in this temporary "arduino_933146" folder:

Please try this:

  1. Delete this folder from your computer:
    D:\ArduinoSketches\libraries\ArduinoBLE
    
    :warning: Please be very careful when deleting files from your computer. When in doubt, back up!
  2. Delete this folder from your computer:
    D:\ArduinoSketches\libraries\arduino_933146
    
  3. Select Sketch > Include Library > Manage Libraries... from the Arduino IDE menus.
  4. Wait for the update to finish.
  5. In the "Filter your search" field, type arduinoble.
  6. Press Enter.
  7. Scroll down through the list of libraries until you see "ArduinoBLE by Arduino". Click on it.
  8. Click the Install button.
  9. Wait for the installation to finish.
  10. Click the Close button.

Now try compiling your sketch again. You will still get that architecture warning, but hopefully the errors will be fixed.

Hi @in0

Thanks for fast feedback. I sounds understandable.
I try this tommorow.

Best regards, Claus

Hi @in0

It works now.
Thanks for support.

Claus

You're welcome. I'm very glad to hear it is working now!
Enjoy that shiny new Nicla Sense ME!

Hi! I have been trying to troubleshoot my Nicla board + sketch but I cannot get over this hurdle and it's been almost a month (I'm still new and learning). This is the error when trying to upload, I think relating to something with ArduinoBLE, OpenOCD, and/or nrf52 but would be so grateful for ANY guidance!

/usr/local/bin/arduino-cli compile --fqbn arduino:mbed_nicla:nicla_sense --libraries /home/builder/opt/libraries/latest --build-cache-path /tmp --output-dir /tmp/195926306/build --build-path /tmp/arduino-build-1EA3969377BE21294FB471A7E44F88E8 --library /mnt/create-efs/webide/c6/cc/c6ccea5204f12d3333d38b05a13c6026:willyconcarne12/libraries_v2/ArduinoStreaming --library /mnt/create-efs/webide/c6/cc/c6ccea5204f12d3333d38b05a13c6026:willyconcarne12/libraries_v2/Arduino_BHY2 --library /mnt/create-efs/webide/c6/cc/c6ccea5204f12d3333d38b05a13c6026:willyconcarne12/libraries_v2/Arduino_BHY2_HOST --library /mnt/create-efs/webide/c6/cc/c6ccea5204f12d3333d38b05a13c6026:willyconcarne12/libraries_v2/Arduino_LSM9DS1 --library /mnt/create-efs/webide/c6/cc/c6ccea5204f12d3333d38b05a13c6026:willyconcarne12/libraries_v2/BNO055 --library /mnt/create-efs/webide/c6/cc/c6ccea5204f12d3333d38b05a13c6026:willyconcarne12/libraries_v2/EEPROM --library /mnt/create-efs/webide/c6/cc/c6ccea5204f12d3333d38b05a13c6026:willyconcarne12/libraries_v2/Encoder_NEW --library /mnt/create-efs/webide/c6/cc/c6ccea5204f12d3333d38b05a13c6026:willyconcarne12/libraries_v2/HID --library /mnt/create-efs/webide/c6/cc/c6ccea5204f12d3333d38b05a13c6026:willyconcarne12/libraries_v2/I2Cdev --library /mnt/create-efs/webide/c6/cc/c6ccea5204f12d3333d38b05a13c6026:willyconcarne12/libraries_v2/SPI --library /mnt/create-efs/webide/c6/cc/c6ccea5204f12d3333d38b05a13c6026:willyconcarne12/libraries_v2/SensorFusion --library /mnt/create-efs/webide/c6/cc/c6ccea5204f12d3333d38b05a13c6026:willyconcarne12/libraries_v2/SoftwareSerial --library /mnt/create-efs/webide/c6/cc/c6ccea5204f12d3333d38b05a13c6026:willyconcarne12/libraries_v2/Uduino --library /mnt/create-efs/webide/c6/cc/c6ccea5204f12d3333d38b05a13c6026:willyconcarne12/libraries_v2/Wire --library /mnt/create-efs/webide/c6/cc/c6ccea5204f12d3333d38b05a13c6026:willyconcarne12/libraries_v2/pfodParser /tmp/195926306/Nicla_Quaternions_BLE

WARNING: library arduinoble_1_2_1 claims to run on samd, megaavr, mbed, apollo3, mbed_nano, mbed_portenta architecture(s) and may be incompatible with your current board which runs on mbed_nicla architecture(s).

Sketch uses 286768 bytes (54%) of program storage space. Maximum is 527616 bytes.

Global variables use 40632 bytes (63%) of dynamic memory, leaving 23656 bytes for local variables. Maximum is 64288 bytes.

Upload started

Programming with: Serial

Flashing with command:/Users/chris/.arduino-create/arduino/openocd/0.11.0-arduino2/bin/openocd -d2 -s /Users/chris/.arduino-create/arduino/openocd/0.11.0-arduino2/share/openocd/scripts/ -f interface/cmsis-dap.cfg -c transport select swd; adapter speed 1000 -f target/nrf52.cfg -c telnet_port disabled; init; reset init; halt; adapter speed 10000; program {/var/folders/_f/jddvg7192l9_96d9my9xjkx00000gn/T/arduino-create-agent675762433/Nicla_Quaternions_BLE.elf}; reset run; shutdown

Open On-Chip Debugger 0.11.0+dev-gab95bac57-dirty (2021-05-11-10:57)

Licensed under GNU GPL v2

For bug reports, read

http://openocd.org/doc/doxygen/bugs.html

debug_level: 2

adapter speed: 1000 kHz

Info : CMSIS-DAP: SWD Supported

Info : CMSIS-DAP: FW Version = v1.0

Info : CMSIS-DAP: Serial# = 841136AC

Info : CMSIS-DAP: Interface Initialised (SWD)

Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1

Info : CMSIS-DAP: Interface ready

Info : clock speed 1000 kHz

Info : SWD DPIDR 0x2ba01477

Info : nrf52.cpu: hardware has 6 breakpoints, 4 watchpoints

Info : starting gdb server for nrf52.cpu on 3333

Info : Listening on port 3333 for gdb connections

target halted due to debug-request, current mode: Thread

xPSR: 0x01000000 pc: 0x00006e0c msp: 0x20010000

target halted due to debug-request, current mode: Thread

xPSR: 0x01000000 pc: 0x00006e0c msp: 0x20010000

** Programming Started **

Info : nRF52832-CIAA(build code: E0) 512kB Flash, 64kB RAM

Warn : Adding extra erase range, 0x00056038 .. 0x00056fff

** Programming Finished **

shutdown command invoked

I don't see any error. It just looks like the output from a successful upload.

Please provide a detailed description of what makes you think there is something wrong.

Ah, hmmm then it is as if my Nicla boards are in a locked up state or frozen (but not bricked). I plug each in and it is recognized via usb, board info available, etc, but zero functionality after uploading. The LED does not blink/turn on, it doesn’t send anything over serial or BLE, etc (yet is the same code that is working on my very first Nicla board).

I have tried a myriad of things and it keeps spitting out the same upload message.

What happens if you upload the example sketch that is available from File > Examples > Nicla_System > Blink_Nicla in the Arduino IDE menus?

Do the LEDs blink with that sketch?

Even when uploading the example Blink sketch, the LEDs do not blink. It's almost like it is in a sleep state.

I did solder 2 wires for an external LiPo battery onto the GRND and VBAT pins of one of the boards (picture attached

. The solder was very quick and clean, but still...

  •      The LED light is not turning on/blinking at all, but IDE is recognizing the boards via the USB port so it seems they are functional but maybe I’m missing a step
    
  •      LED did blink the first time plugging it in, but not anymore
    
  •      I did successfully upload the sketch to 1 of the boards before soldering on two wires (picture attached) that I use to connect to a small LiPo battery, but ever since soldering I cannot upload anything to the new boards due to the error described above.
    
  •      I don’t believe I bricked the unit(s) because they are still recognized as the board selected via USB port in Arduino creator when I plug it in…
    

I have no idea what is going on so any guidance is MUCH appreciated!

Was this problem sorted?

I have the same error. The IDE says "Done uploading" when I tried to upload, but nothing happens. No LEDs, no serial communication nothing.

Note: Board gets recognized when I plug it into the system

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.