Update docs to provide more details

This commit is contained in:
Norman ALIE
2023-10-30 11:52:12 +01:00
Unverified
parent 00bde7e7ec
commit a1cd3cf052
2 changed files with 92 additions and 21 deletions

View File

@@ -91,6 +91,8 @@ sample manipulation needed.
### Hardware
You will need an ESP32 or ESP32-S2 and an I2S DAC. We recommend using a Lyrat board. For pinout see the config options.
- ESP pinout MA12070P
------------------------------------------------------
-> I2S_BCK Audio Clock 3.072 MHz
@@ -105,28 +107,67 @@ sample manipulation needed.
-> NMUTE Amplifier Mute active low
## Build
## Installation
Clone this repo:
git clone https://github.com/CarlosDerSeher/snapclient
```
git clone https://github.com/CarlosDerSeher/snapclient
cd snapclient
```
Update third party code (opus, flac and esp-dsp):
```
git submodule update --init
```
git submodule update --init
### ESP-IDF environnement configuration
- <b>If you're on Windows :</b> Install ESP-IDF v4.3.5 locally [https://github.com/espressif/esp-idf/releases/tag/v4.3.5](https://github.com/espressif/esp-idf/releases/tag/v4.3.5). More info: [https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/windows-setup-update.html](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/windows-setup-update.html)
- <b>If you're on Linux :</b> Use the docker image for ESP-IDF by following [docker build](doc/docker_build.md) doc.
<a name="config"></a>
### Snapcast ESP Configuration
Configure your platform:
```
idf.py menuconfig
```
Configure to match your setup
- Wifi network name and password
- Audio codec/board setup
- <b>Audio HAL :</b> Choose your audio board
- Lyrat (4.3, 4.2)
- Lyrat TD (2.2, 2.1)
- Lyrat Mini (1.1)
- KORVO DU1906
- ESP32-S2 Kaluga (1.2)
- Or a custom board
- <b>Custom Audio Board :</b> Configure your DAC and GPIO
- DAC Chip :
- TI PCM51XX/TAS57XX DAC (PCM51XX are stereo DAC in TSSOP package and TAS57XX are class-D amp in HTSSOP package. Both have i2s input and i2c control)
- TI PCM5102A DAC (Very basic stereo DAC WITHOUT i2c control. Use this option if you only want i2s out like for a MAX98357)
- Infineon MA120X0 (High power class-D amp in QFN package)
- Analog Devices ADAU1961 (Stereo DAC with multiple analog inputs in LFCSP package)
- DAC I2C control interface : Choose GPIO pin of your I2C line and address of the DAC. If your DAC doesn't support I2C (PCM5102A or equivalent), put unused GPIO values.
- I2C master interface : GPIO pin of your DAC I2S bus.
- DAC interface configuration : Configure specific GPIO for your DAC functionnalities. If you use a MAX98357 with PCM5102A config, don't connect the SD pin to master mute. (PCM5102A logic is inverted)
- <b>ESP32 DSP processor config :</b>
- DSP flow : Choose between Stereo, Bassboost, Bi-amp or Bass/Treble EQ. You can further configure it on the ESP web interface/
- Use asm version of Biquad_f32 : Optimized version of the DSP algorithm only for ESP32. Don't work on ESP32-S2
- Use software volume : Handle snapcast volume in the ESP. Activate this if your DAC do not provide a volume control (no I2C like PCM5102A or MAX98357)
- <b>WiFi Configuration :</b>
- WiFi Provisioning : Use the Espressif "ESP SoftAP Prov" APP to configure your wifi network.
- SSID : The SSID to connect to or the provisioning SSID.
- Password : The password of your WiFi network or the provisioning netword.
- Maximum retry: Use 0 for no limit.
- <b>Snapclient configuration :</b>
- Use mDNS : The client will search on the network for the snapserver automatically. Your network must support mDNS.
- Snapserver host : IP or URL of the server if mDNS is disabled or the mDNS resolution fail.
- Snapserver port : Port of your snapserver, default is 1704.
- Snapclient name : The name under wich your ESP will appear on the Snapserver.
- HTTP Server Setting : The ESP create a basic webpage. You can configure the port to view this page and configure the DSP.
Use [docker](doc/docker_build.md) or local IDF installation
idf.py menuconfig
Build, compile and flash:
idf.py build flash monitor
### Compile and flash
```
idf.py build flash monitor
```
## Test
Setup a snapcast server on your network

View File

@@ -2,22 +2,50 @@
# Building in Docker
### Prerequisities
- only Docker
- Linux platform
- Docker
- Repository clone (refer to [README.md](/README.md))
No need to install ESP-IDF or anything else. All commands should be run in a project root.
No need to install ESP-IDF or anything else. All commands should be run in project root folder.
## menuconfig
## Configure, Build and Flash
### Start an interactive IDF environnement
In this interactive shell you can run menuconfig, build, flash and monitor command.
```
docker run --rm -it -v .:/project -w /project espressif/idf:v4.3.1 idf.py menuconfig
docker run --rm -it -v .:/project -w /project -v /dev:/dev --privileged espressif/idf:v4.3.5
```
## Build
### Configure
Then in your docker interactive shell, start by configuring for your platform. More info about the config in [README.md](/README.md#config).
```
docker run --rm -it -v .:/project -w /project espressif/idf:v4.3.1 idf.py build
idf.py menuconfig
```
Save with `<s>` and exit with `<q>`.
### Build, flash and monitor:
```
idf.py build flash monitor
```
<span style="color: orange">If idf.py can't access to USB devices, try to restart your docker interactive shell in sudo.</span>
### Exit
Exit IDF monitor mode: `<Ctrl+]>`
Exit docker interactive shell: `exit`
## Specific actions
If you want to execute a specific command or to generate a reusable .bin file.
### menuconfig
```
docker run --rm -it -v .:/project -w /project espressif/idf:v4.3.5 idf.py menuconfig
```
## Flash
### Build
```
docker run --rm -it -v .:/project -w /project espressif/idf:v4.3.5 idf.py build
```
### Flash
Mapping of serial port to container is not simple in windows but you can merge all generated `bin` files into single firmware and flash the firmware manually using some windows tool.
- [ESP Tool web flasher](https://espressif.github.io/esptool-js/)
- [ESP32 Flash Download tool](https://www.espressif.com/en/support/download/other-tools)
@@ -42,6 +70,8 @@ docker run
-it // runs interactive terminal
-v .:/project // maps current directory to /project in container
-w /project // sets working directory inside a container to /project
-v /dev:/dev // maps devices directory to acces USB and Serial devices inside docker
--privileged // grants docker rights to acces host devices
espressif/idf:v4.3.5 // image name + version
idf.py menuconfig // run menuconfig
```