|
5 years ago | |
---|---|---|
.settings | 5 years ago | |
build-scripts | 5 years ago | |
components | 5 years ago | |
idf-patch | 5 years ago | |
main | 5 years ago | |
server_certs | 5 years ago | |
.cproject | 5 years ago | |
.gitattributes | 5 years ago | |
.gitignore | 5 years ago | |
.gitmodules | 5 years ago | |
.project | 5 years ago | |
CMakeLists.txt | 5 years ago | |
Dockerfile | 5 years ago | |
Makefile | 5 years ago | |
Makefile_std.mk | 5 years ago | |
README.md | 5 years ago | |
alltags.txt | 5 years ago | |
full_squeezelite.bin | 5 years ago | |
github.pem | 5 years ago | |
makeBuildDocs.sh | 5 years ago | |
non-ota-partitions.csv | 5 years ago | |
partitions.csv | 5 years ago |
Works with the SqueezeAMP see here and here
Use the squeezelite-esp32-SqueezeAmp-sdkconfig.defaults
configuration file.
Squeezelite-esp32 requires esp32 chipset and 4MB PSRAM. ESP32-WROVER meets these requirements.
To get an audio output an I2S DAC can be used. Cheap PCM5102 I2S DACs work others may also work. PCM5012 DACs can be hooked up via:
I2S - WROVER
VCC - 3.3V
3.3V - 3.3V
GND - GND
FLT - GND
DMP - GND
SCL - GND
BCK - 26
DIN - 22
LCK - 25
FMT - GND
XMT - 3.3V
Use the squeezelite-esp32-I2S-4MFlash-sdkconfig.defaults
configuration file.
You can use docker to build squeezelite-esp32
First you need to build the Docker container:
docker build -t esp-idf .
Then you need to run the container:
docker run -i -t -v `pwd`:/workspace/squeezelite-esp32 esp-idf
The above command will mount this repo into the docker container and start a bash terminal for you to then follow the below build steps
Currently this project requires a specific combination of IDF 4 with gcc 5.2. You'll have to implement the gcc 5.2 toolchain from an IDF 3.2 install into the IDF 4 directory in order to successfully compile it
You can install IDF manually on Linux or Windows (using the Subsystem for Linux) following the instructions at: https://www.instructables.com/id/ESP32-Development-on-Windows-Subsystem-for-Linux/ And then copying the i2s.c patch file from this repo over to the esp-idf folder
MOST IMPORTANT: create the right default config file
make menuconfig Then
# Build recovery.bin, bootloader.bin, ota_data_initial.bin, partitions.bin
# force appropriate rebuild by touching all the files which may have a RECOVERY_APPLICATION specific source compile logic
find . \( -name "*.cpp" -o -name "*.c" -o -name "*.h" \) -type f -print0 | xargs -0 grep -l "RECOVERY_APPLICATION" | xargs touch
export PROJECT_NAME="recovery"
make -j4 all EXTRA_CPPFLAGS='-DRECOVERY_APPLICATION=1'
make flash
#
# Build squeezelite.bin
# Now force a rebuild by touching all the files which may have a RECOVERY_APPLICATION specific source compile logic
find . \( -name "*.cpp" -o -name "*.c" -o -name "*.h" \) -type f -print0 | xargs -0 grep -l "RECOVERY_APPLICATION" | xargs touch
export PROJECT_NAME="squeezelite"
make -j4 app EXTRA_CPPFLAGS='-DRECOVERY_APPLICATION=0'
python ${IDF_PATH}/components/esptool_py/esptool/esptool.py --chip esp32 --port ${ESPPORT} --baud ${ESPBAUD} --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0x150000 ./build/squeezelite.bin
# monitor serial output
make monitor
1/ setup WiFi
2/ setup squeezelite command line (optional)
At this point, the device should have disabled its built-in access point and should be connected to a known WiFi network.
3/ Updating Squeezelite
3/ Recovery
The squeezelite options are very similar to the regular Linux ones. Differences are :
- the output is -o ["BT -n '<sinkname>' "] | [I2S]
- if you've compiled with RESAMPLE option, normal soxr options are available using -R [-u <options>]. Note that anything above LQ or MQ will overload the CPU
- if you've used RESAMPLE16, <options> are (b|l|m)[:i], with b = basic linear interpolation, l = 13 taps, m = 21 taps, i = interpolate filter coefficients
For example, so use a BT speaker named MySpeaker, accept audio up to 192kHz and resample everything to 44100 and use 16 bits resample with medium quality, the command line is:
squeezelite -o "BT -n 'BT <sinkname>'" -b 500:2000 -R -u m -Z 192000 -r "44100-44100"
See squeezlite command line, but keys options are
- Z <rate> : tell LMS what is the max sample rate supported before LMS resamples
- R (see above)
- r "<minrate>-<maxrate>"