Compile error when trying to use MEMS sensor on RoboBoard X4

I’m trying to use the RoboBoard X4 to stream accelerometer data over OSC.

I followed the instructions at the MEMS sensor control page for my version of the board (1.1), installing the ICM20689 library. However, I get compilation errors when trying to run the Basic_I2C example (or any other example from that folder):

Compiling library "ICM20689"
/home/fdb/.arduino15/packages/totemmaker/tools/xtensa-esp32-elf-gcc/1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-g++ -DESP_PLATFORM "-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/config -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/app_trace -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/app_update -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/asio -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/bootloader_support -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/bt -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/coap -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/console -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/driver -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/efuse -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/esp-tls -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/esp32 -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/esp_adc_cal -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/esp_event -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/esp_http_client -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/esp_http_server -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/esp_https_ota -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/esp_https_server -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/esp_ringbuf -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/esp_websocket_client -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/espcoredump -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/ethernet -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/expat -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/fatfs -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/freemodbus -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/freertos -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/heap -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/idf_test -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/jsmn -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/json -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/libsodium -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/log -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/lwip -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/mbedtls -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/mdns -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/micro-ecc -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/mqtt -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/newlib -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/nghttp -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/nvs_flash -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/openssl -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/protobuf-c -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/protocomm -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/pthread -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/sdmmc -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/smartconfig_ack -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/soc -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/spi_flash -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/spiffs -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/tcp_transport -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/tcpip_adapter -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/ulp -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/unity -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/vfs -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/wear_levelling -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/wifi_provisioning -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/wpa_supplicant -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/xtensa-debug-module -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/esp-face -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/esp32-camera -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/esp-face -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/tools/sdk/include/fb_gfx -DTOTEMMAKER_PLATFORM -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/libraries/TotemBUS/include -std=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -w -Wno-error=maybe-uninitialized -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -MMD -c -DF_CPU=240000000L -DARDUINO=10819 -DARDUINO_ROBOBOARD_X4 -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"ROBOBOARD_X4\"" "-DARDUINO_VARIANT=\"roboboard_x4\"" -DROBOBOARD_X4_APP_CONTROL_DISABLED -DESP32 -DCORE_DEBUG_LEVEL=0 -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/cores/esp32 -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/variants/roboboard_x4 -I/home/fdb/Arduino/libraries/ICM20689/src -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/libraries/Wire/src -I/home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/libraries/SPI/src /home/fdb/Arduino/libraries/ICM20689/src/ICM20689.cpp -o /tmp/arduino_build_43990/libraries/ICM20689/ICM20689.cpp.o
/home/fdb/Arduino/libraries/ICM20689/src/ICM20689.cpp:473:5: error: 'ICM20689sFIFO' has not been declared
 int ICM20689sFIFO::enableFifo(bool accel,bool gyro,bool temp) {
     ^
/home/fdb/Arduino/libraries/ICM20689/src/ICM20689.cpp: In function 'int enableFifo(bool, bool, bool)':
/home/fdb/Arduino/libraries/ICM20689/src/ICM20689.cpp:475:3: error: '_useSPIHS' was not declared in this scope
   _useSPIHS = false;
   ^
/home/fdb/Arduino/libraries/ICM20689/src/ICM20689.cpp:476:20: error: 'FIFO_EN' was not declared in this scope
   if(writeRegister(FIFO_EN,(accel*FIFO_ACCEL)|(gyro*FIFO_GYRO)|(temp*FIFO_TEMP)) < 0){
                    ^
/home/fdb/Arduino/libraries/ICM20689/src/ICM20689.cpp:476:35: error: 'FIFO_ACCEL' was not declared in this scope
   if(writeRegister(FIFO_EN,(accel*FIFO_ACCEL)|(gyro*FIFO_GYRO)|(temp*FIFO_TEMP)) < 0){
                                   ^
/home/fdb/Arduino/libraries/ICM20689/src/ICM20689.cpp:476:53: error: 'FIFO_GYRO' was not declared in this scope
   if(writeRegister(FIFO_EN,(accel*FIFO_ACCEL)|(gyro*FIFO_GYRO)|(temp*FIFO_TEMP)) < 0){
                                                     ^
/home/fdb/Arduino/libraries/ICM20689/src/ICM20689.cpp:476:70: error: 'FIFO_TEMP' was not declared in this scope
   if(writeRegister(FIFO_EN,(accel*FIFO_ACCEL)|(gyro*FIFO_GYRO)|(temp*FIFO_TEMP)) < 0){
                                                                      ^
/home/fdb/Arduino/libraries/ICM20689/src/ICM20689.cpp:476:80: error: 'writeRegister' was not declared in this scope
   if(writeRegister(FIFO_EN,(accel*FIFO_ACCEL)|(gyro*FIFO_GYRO)|(temp*FIFO_TEMP)) < 0){
                                                                                ^
/home/fdb/Arduino/libraries/ICM20689/src/ICM20689.cpp:479:3: error: '_enFifoAccel' was not declared in this scope
   _enFifoAccel = accel;
   ^
/home/fdb/Arduino/libraries/ICM20689/src/ICM20689.cpp:480:3: error: '_enFifoGyro' was not declared in this scope
   _enFifoGyro = gyro;
   ^
/home/fdb/Arduino/libraries/ICM20689/src/ICM20689.cpp:481:3: error: '_enFifoTemp' was not declared in this scope
   _enFifoTemp = temp;
   ^
/home/fdb/Arduino/libraries/ICM20689/src/ICM20689.cpp:482:3: error: '_fifoFrameSize' was not declared in this scope
   _fifoFrameSize = accel*6 + gyro*6 + temp*2;
   ^
Using library ICM20689 at version 1.1.2 in folder: /home/fdb/Arduino/libraries/ICM20689 
Using library Wire at version 1.0.1 in folder: /home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/libraries/Wire 
Using library SPI at version 1.0 in folder: /home/fdb/.arduino15/packages/totemmaker/hardware/esp32/1.0.0/libraries/SPI 
exit status 1
Error compiling for board RoboBoard X4.

Any help would be appreciated.

Thanks,

Frederik

1 Like

Hi, library author released new version (1.1.2) with a mistake in it and haven’t updated since then.

Install older version (1.0.0):
image

Or, if you want latest (fixed) version, remove ICM20689 directory from /home/fdb/Arduino/libraries and install using Add .ZIP Library menu option.
https://github.com/finani/ICM20689/archive/refs/heads/master.zip

2 Likes

Using the master version from GitHub works perfectly!

Thanks!