Still issues with Adafruit_SPIDevice.h

I know this has almost been beaten to death, but I can’t compile with the Adafruit VS1053 library because it can’t find the SPIDevice.h.
==> .pio\libdeps\uno\Adafruit VS1053 Library/Adafruit_VS1053.h:20:10: fatal error: Adafruit_SPIDevice.h: No such file or directory

It does, however, compile with the newest Arduino IDE, 2.1.0. So, there’s something either I’m missing or PIO is missing.

I don’t want to cross over to the dark side and use their IDE. But…

Full platformio.ini and minimal src/main.cpp code that reproduces the problem?

Processing uno (platform: atmelavr; board: uno; framework: arduino)
-----------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
PLATFORM: Atmel AVR (3.4.0) > Arduino Uno
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
DEBUG: Current (avr-stub) On-board (avr-stub, simavr)
PACKAGES:
 - framework-arduino-avr @ 5.1.0
 - toolchain-atmelavr @ 1.70300.191015 (7.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 7 compatible libraries
Scanning dependencies...
Dependency Graph
|-- Adafruit VS1053 Library @ 1.3.0
Building in release mode
Compiling .pio\build\uno\lib669\Adafruit VS1053 Library\Adafruit_VS1053.cpp.o
In file included from .pio\libdeps\uno\Adafruit VS1053 Library\Adafruit_VS1053.cpp:26:0:
.pio\libdeps\uno\Adafruit VS1053 Library/Adafruit_VS1053.h:20:10: fatal error: Adafruit_SPIDevice.h: No such file or directory

****************************************************************************
* Looking for Adafruit_SPIDevice.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:Adafruit_SPIDevice.h"
* Web  > https://registry.platformio.org/search?q=header:Adafruit_SPIDevice.h
*
****************************************************************************

 #include <Adafruit_SPIDevice.h>
          ^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\uno\lib669\Adafruit VS1053 Library\Adafruit_VS1053.cpp.o] Error 1

===========================================

[env:uno]
platform = atmelavr
board = uno
framework = arduino
upload_port = COM12
monitor_speed = 19200
lib_deps = 
	adafruit/Adafruit VS1053 Library@^1.3.0
	arduino-libraries/SD@^1.2.4
	adafruit/Adafruit BusIO@^1.14.1

===========================================

The compiler fails almost immediately as shown in the first snippet. Showing any more code
isn’t necessary, is it? The issue seems to be within the VS1053.h file where it #includes SPIDevice.h

// include SPI, MP3 and SD libraries
// include SPI, MP3 and SD libraries
#include <SPI.h>
#include <SD.h>
#include <Adafruit_VS1053.h>
//#include <Adafruit_SPIDevice.h>
#include <Wire.h>

I’m using your exact platformio.ini and code (just added empty setup and loop functions) and it compiles perfecly fine.

CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
PLATFORM: Atmel AVR (4.2.0) > Arduino Uno
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
DEBUG: Current (avr-stub) External (avr-stub, simavr)
PACKAGES: 
 - framework-arduino-avr @ 5.1.0 
 - toolchain-atmelavr @ 1.70300.191015 (7.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 8 compatible libraries
Scanning dependencies...
Dependency Graph
|-- Adafruit VS1053 Library @ 1.3.0
|-- SD @ 1.2.4
|-- Adafruit BusIO @ 1.14.1
|-- SPI @ 1.0
|-- Wire @ 1.0
Building in release mode
Compiling .pio/build/uno/src/main.cpp.o
Compiling .pio/build/uno/lib918/SPI/SPI.cpp.o
Compiling .pio/build/uno/libbd1/Wire/Wire.cpp.o
Compiling .pio/build/uno/libbd1/Wire/utility/twi.c.o
Compiling .pio/build/uno/libb1b/Adafruit BusIO/Adafruit_BusIO_Register.cpp.o
Compiling .pio/build/uno/libb1b/Adafruit BusIO/Adafruit_I2CDevice.cpp.o
Compiling .pio/build/uno/libb1b/Adafruit BusIO/Adafruit_SPIDevice.cpp.o
Compiling .pio/build/uno/libefa/SD/File.cpp.o
Compiling .pio/build/uno/libefa/SD/SD.cpp.o
Compiling .pio/build/uno/libefa/SD/utility/Sd2Card.cpp.o
Compiling .pio/build/uno/libefa/SD/utility/SdFile.cpp.o
Compiling .pio/build/uno/libefa/SD/utility/SdVolume.cpp.o
Compiling .pio/build/uno/lib18a/Adafruit VS1053 Library/Adafruit_VS1053.cpp.o
Archiving .pio/build/uno/libFrameworkArduinoVariant.a
Indexing .pio/build/uno/libFrameworkArduinoVariant.a
Compiling .pio/build/uno/FrameworkArduino/CDC.cpp.o
Compiling .pio/build/uno/FrameworkArduino/HardwareSerial.cpp.o
Archiving .pio/build/uno/libbd1/libWire.a
Archiving .pio/build/uno/lib918/libSPI.a
Indexing .pio/build/uno/libbd1/libWire.a
Compiling .pio/build/uno/FrameworkArduino/HardwareSerial0.cpp.o
.pio/libdeps/uno/Adafruit VS1053 Library/Adafruit_VS1053.cpp: In member function 'boolean Adafruit_VS1053::prepareRecordOgg(char*)':
.pio/libdeps/uno/Adafruit VS1053 Library/Adafruit_VS1053.cpp:550:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (pluginStartAddr == 0xFFFF)
       ~~~~~~~~~~~~~~~~^~~~~~~~~
Indexing .pio/build/uno/lib918/libSPI.a
Compiling .pio/build/uno/FrameworkArduino/HardwareSerial1.cpp.o
Compiling .pio/build/uno/FrameworkArduino/HardwareSerial2.cpp.o
Compiling .pio/build/uno/FrameworkArduino/HardwareSerial3.cpp.o
Compiling .pio/build/uno/FrameworkArduino/IPAddress.cpp.o
Compiling .pio/build/uno/FrameworkArduino/PluggableUSB.cpp.o
Archiving .pio/build/uno/libb1b/libAdafruit BusIO.a
Indexing .pio/build/uno/libb1b/libAdafruit BusIO.a
Compiling .pio/build/uno/FrameworkArduino/Print.cpp.o
Compiling .pio/build/uno/FrameworkArduino/Stream.cpp.o
Compiling .pio/build/uno/FrameworkArduino/Tone.cpp.o
Compiling .pio/build/uno/FrameworkArduino/USBCore.cpp.o
Compiling .pio/build/uno/FrameworkArduino/WInterrupts.c.o
Compiling .pio/build/uno/FrameworkArduino/WMath.cpp.o
Compiling .pio/build/uno/FrameworkArduino/WString.cpp.o
Compiling .pio/build/uno/FrameworkArduino/abi.cpp.o
Compiling .pio/build/uno/FrameworkArduino/hooks.c.o
Compiling .pio/build/uno/FrameworkArduino/main.cpp.o
Archiving .pio/build/uno/libefa/libSD.a
Archiving .pio/build/uno/lib18a/libAdafruit VS1053 Library.a
Indexing .pio/build/uno/libefa/libSD.a
Compiling .pio/build/uno/FrameworkArduino/new.cpp.o
Indexing .pio/build/uno/lib18a/libAdafruit VS1053 Library.a
Compiling .pio/build/uno/FrameworkArduino/wiring.c.o
Compiling .pio/build/uno/FrameworkArduino/wiring_analog.c.o
Compiling .pio/build/uno/FrameworkArduino/wiring_digital.c.o
Compiling .pio/build/uno/FrameworkArduino/wiring_pulse.S.o
Compiling .pio/build/uno/FrameworkArduino/wiring_pulse.c.o
Compiling .pio/build/uno/FrameworkArduino/wiring_shift.c.o
Archiving .pio/build/uno/libFrameworkArduino.a
Indexing .pio/build/uno/libFrameworkArduino.a
Linking .pio/build/uno/firmware.elf
Checking size .pio/build/uno/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [          ]   0.4% (used 9 bytes from 2048 bytes)
Flash: [          ]   1.4% (used 444 bytes from 32256 bytes)
Building .pio/build/uno/firmware.hex
========================================== [SUCCESS] Took 1.94 seconds ==========================================

I see you’re using an outdated AtmelAVR platform and possibly with it an outdated core.

Please do the following: Open a PlatformIO CLI and execute

pio upgrade --dev
pio pkg update -g -p atmelavr

then, delete the .pio folder of the project and build again.

Ok. Success. Did what you said, plus I deleted the project and recreated it. Compiled with a few warnings, but generally ok. I don’t have the actual hardware yet - I was just getting a jump on the compilation.

Thanks again for your help.

1 Like