Code Monkey home page Code Monkey logo

arduino-audio-tools's Introduction

Arduino Audio Tools

Some basic header-only C++ classes that can be used for Audio Processing provided as Arduino and cmake C++ Library:

This functionality provides the glue which makes different audio processing components and libraries work together.

We also provide plenty of examples that demonstrate how to implement the different scenarios. The design philosophy is based on the Arduino conventions: we use the begin() and end() methods to start and stop the processing and we propagate the use of Streams.

We all know the Arduino Print and Stream classes: We usually use them to write out print messages and sometimes we use them to read the output from Serial, Files, Ethernet, etc. The same thing applies to “Audio Streams”: You can read audio data from “Audio Sources” and you write them to “Audio Sinks”.

Example

Here is an simple example which streams a file from the Flash Memory and writes it to I2S:

#include "AudioTools.h"
#include "StarWars30.h"

uint8_t channels = 2;
uint16_t sample_rate = 22050;

MemoryStream music(StarWars30_raw, StarWars30_raw_len);
I2SStream i2s;  // Output to I2S
StreamCopy copier(i2s, music); // copies sound into i2s

void setup(){
    Serial.begin(115200);

    auto config = i2s.defaultConfig(TX_MODE);
    config.sample_rate = sample_rate;
    config.channels = channels;
    config.bits_per_sample = 16;
    i2s.begin(config);

    music.begin();
}

void loop(){
    copier.copy();
}

Each stream has it's own configuration object that should be passed to the begin method. The defaultConfig() method is providing a default proposal which will usually "just work". Please consult the class documentation for the available configuration parameters. You can also easily adapt any provided examples: If you e.g. replace the I2SStream with the AnalogAudioStream class, you will get analog instead of digital output.

I suggest you continue to read the more detailed introduction.

Further examples can be found in the Wiki.

Dependent on the example you might need to install some addional libaries

AudioPlayer

The library also provides a versatile AudioPlayer. Further information can be found in the Wiki

Logging

The application uses a built in logger (see AudioLogger.h and AudioConfig.h). You can e.g. deactivate the logging by changing USE_AUDIO_LOGGING to false in the AudioConfig.h:

#define USE_AUDIO_LOGGING false
#define LOG_LEVEL AudioLogger::Warning
#define LOG_STREAM Serial

Per default we use the log level warning and the logging output is going to Serial. You can also change this in your sketch by calling AudioLogger begin with the output stream and the log level e.g:

AudioLogger::instance().begin(Serial, AudioLogger::Debug);

Show and Tell

Get some inspiration from projects that were using this library or share your projects with the community.

Documentation

Please use this before you raise any issue or start a discussion!

Support

I spent a lot of time to provide a comprehensive and complete documentation. So please read the documentation first and check the issues and discussions before posting any new ones on Github.

Open issues only for bugs and if it is not a bug, use a discussion: Provide enough information about

  • the selected scenario/sketch
  • what exactly you are trying to do
  • your hardware
  • your software version (from the Boards Manager) and library versions
  • what exactly your problem is

to enable others to understand and reproduce your issue.

Finally, don't send me any e-mails or post questions on my personal website!

Please note that discussions and issues which have already been answered before or where the answer can be found in the documentation may get deleted w/o reply.

Installation in Arduino

You can download the library as zip and call include Library -> zip library. Or you can git clone this project into the Arduino libraries folder e.g. with

cd  ~/Documents/Arduino/libraries
git clone https://github.com/pschatzmann/arduino-audio-tools.git

I recommend to use git because you can easily update to the latest version just by executing the git pull command in the project folder. If you want to use the library on other patforms, you can find further information in the Wiki.

Sponsor Me

This software is totally free, but you can make me happy by rewarding me with a treat

arduino-audio-tools's People

Contributors

alexus2033 avatar andysheen avatar asemy avatar chrissbarr avatar dl9sec avatar fehlfarbe avatar gary7530 avatar h3ndrik avatar jamesbaber avatar jeffiel avatar joba-1 avatar ksaye avatar kspotter avatar lbrutti avatar linusheu avatar manmasel1975 avatar mauikano avatar michielfromnl avatar norman-ritz avatar podaen avatar pschatzmann avatar roleroz avatar rw-donaldp avatar squix78 avatar thaaraak avatar tooxo avatar ut2uh avatar uutzinger avatar vinay0508 avatar vinesnts avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

arduino-audio-tools's Issues

Base-adc-a2dp has low audio on bletooth heaphones

Hello @pschatzmann

First of all, thank you for providing us with such beautiful work.

I used the example Base-adc-a2dp, it worked fine. But the audio level on my headphone is very low. I tried using set Volume to 255 as well but still the same audio.

Is there anything I can do?

2 ESP32 1. Streams-url_mp3-i2s --> 2. streams-i2s-a2dp

Hello Phil,

your sketches working like a charm, but unfortunately i get no signal on my BT-Speakers. should these examples working out of the box?

Because when i touch the pins of the a2dp source my BT speaker is scratching, but there is no dataflow between these two ESP32.

is it a wiring issue or is there any way to get it working?

thanks in advance

I2S Audio transmission between two ESP32s stuttering?

Hello everyone,

I am working on a project that receives audio inputs from multiple phones over bluetooth, performs some computation with that audio, and then transmits the output to multiple bluetooth speakers. Right now I am using the ESP32 module, and seeing as it can only connect to one A2DP audio device over bluetooth at a time, I am attempting to wire an I2S channel between two of them, so one can receive and one can send. Currently (just trying to stream one line of audio) my setup looks like this.

Phone -->A2DP Bluetooth --> ESP32 1 --> I2S --> ESP32 2--> A2DP Bluetooth --> Bluetooth Speaker

I have been able stream audio packets to the speaker, but the output is jitters and lags to the point where it is useless. I wanted to see if anyone had any advice as to better approach this problem, or recreate my current issue. I'll attach my code and wiring below, but I believe the issue has something to do with the I2S transmission, since I tested both sending and receiving a sin wave and the bluetooth side of things is perfect.

Bluetooth receiving end:

#define USE_A2DP

#include "AudioTools.h"

using namespace audio_tools;  

A2DPStream a2dpStream = A2DPStream::instance(); // access A2DP as stream
I2SStream i2sStream;                            // Access I2S as stream
StreamCopy copier(i2sStream, a2dpStream); // copy from A2DP to I2S
ConverterFillLeftAndRight<int16_t> filler(RightIsEmpty); // fill both channels

void setup(void) {
    Serial.begin(115200);
    AudioLogger::instance().begin(Serial, AudioLogger::Warning);

    i2sStream.begin(i2sStream.defaultConfig(TX_MODE));
    
    auto cfgA2DP = a2dpStream.defaultConfig(RX_MODE);
    a2dpStream.setVolume(3);
    a2dpStream.begin(RX_MODE, "RowUrBoat");
}

void loop() {
    copier.copy();
}

Bluetooth Sending end:

#define USE_A2DP

#include "AudioTools.h"

using namespace audio_tools;  

I2SStream i2sStream;                            // Access I2S as stream
A2DPStream a2dpStream = A2DPStream::instance(); // access A2DP as stream
StreamCopy copier(a2dpStream, i2sStream); // copy i2sStream to a2dpStream
ConverterFillLeftAndRight<int16_t> filler(RightIsEmpty); // fill both channels

void setup(void) {
    Serial.begin(115200);
    AudioLogger::instance().begin(Serial, AudioLogger::Info);
    
    auto cfgA2DP = a2dpStream.defaultConfig(TX_MODE);
    a2dpStream.setVolume(3);
    a2dpStream.begin(TX_MODE, "OontZ Angle 3 DS 7BA");
    
    a2dpStream.setNotifyAudioChange(i2sStream); // i2s is using the info from a2dp
    i2sStream.begin(i2sStream.defaultConfig(RX_MODE));

}

void loop() {
    copier.copy(filler);
}

Wiring:
ESP32 1 ESP32 2
D14 D14
D15 D15
D32 D22
D22 D32

Feature Request

Your libs are great I am using them in my new "Jukebox" music play biased on your file_mp3-a2dp.ino sketch. Is it possible to control the volume to the Bluetooth device? If it can be done please post an example. Thanks for the great work.

Getting two outputs I2S and Internal DAC from A2DP stream.

Hello @pschatzmann

Is it possible to get two outputs from ESP32?

Example 1 in sink mode
I am receiving audio from A2DP to my esp32 board. Now usually I can either pass it to internal DAC or External DAC using I2S. Is it possible to use both same times?

Example 2 in source mode
Receiving audio from I2S and passing it to A2DP stream, meanwhile also pass the I2S output to internal DAC too.

Please let me know your thoughts.

Thank You.

Stream data in the moment we choose

Hello there!! First of all thank you for all your work, because this repository helped me a lot.

I wanted to know if it is possible to make the out->read(data, len) out of the callback function.
For example, I would make a a2dp_source.start("Beats_Pablo"), without calling the callback and then I think there is another function that makes the WriteData(Data). So is it possible to do this, creating a data variable to use in the WritData()?
(The data variable could be written with *out->read (Channels Data, size_t len) but out of the callback).

Guru Mediation Error when attempting to open A2DP sink

Hello,
I have been using your ESP32-A2DP library without any issues.
Now I wanted to add some sound effects and for example a startup sound.
I figured using this library would be the thing I want, piping the A2DP stream into I2S and also joining in a generator/file stream.
First goal would be to migrate the project to just copy the A2DP stream to I2S.

However I'm failing at setting up the A2DP stream.
Here's my code:

#include <Arduino.h>
#define USE_A2DP
#include <AudioTools.h>

using namespace audio_tools;

A2DPStream a2dp = A2DPStream::instance();
// I2SStream i2s;
// StreamCopy copier(a2dp, i2s);

void setup() {
  // Serial.begin(115200);
  // AudioLogger::instance().begin(Serial, AudioLogger::Info);

  a2dp.begin(RX_MODE, "MyMusic");
  // a2dp.setVolume(0.5f);

  // auto config = i2s.defaultConfig(TX_MODE);
  // config.sample_rate = 44100;
  // config.channels = 2;
  // config.bits_per_sample = 16;
  // config.pin_bck = 32;
  // config.pin_data = 17;
  // config.pin_ws = 16;
  // i2s.begin(config);
}

void loop() {
  if (a2dp.sink().is_connected()) {
    // copier.copy();
  }
}

As you can see I got streamcopy and stuff setup, but it's all commented out because I was investigating following issue:

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
[I][BluetoothA2DPSink.cpp:1054] set_volume(): set_volume 100
[D][BluetoothA2DPSink.cpp:123] start(): start
[I][BluetoothA2DPCommon.cpp:207] log_free_heap(): Available Heap: 166280
[I][BluetoothA2DPSink.cpp:136] start(): Device name will be set to 'MyMusic'
[D][BluetoothA2DPSink.cpp:1006] init_nvs(): init_nvs
[D][BluetoothA2DPCommon.cpp:113] get_last_connection(): get_last_connection
[D][BluetoothA2DPCommon.cpp:137] get_last_connection(): => XX:XX:XX:XX:XX:XX
[I][BluetoothA2DPSink.cpp:184] init_i2s(): init_i2s
[D][BluetoothA2DPSink.cpp:266] init_bluetooth(): init_bluetooth
[I][BluetoothA2DPSink.cpp:271] init_bluetooth(): controller initialized
[I][BluetoothA2DPSink.cpp:280] init_bluetooth(): bluedroid initialized
[I][BluetoothA2DPSink.cpp:289] init_bluetooth(): bluedroid enabled
[D][BluetoothA2DPSink.cpp:387] app_task_start_up(): app_task_start_up
[D][BluetoothA2DPSink.cpp:310] app_work_dispatch(): app_work_dispatch event 0x0, param len 0
[D][BluetoothA2DPSink.cpp:342] app_send_msg(): app_send_msg
Guru Meditation Error: Core  1 panic'ed (StoreProhibited). Exception was unhandled.
Core 1 register dump:
PC      : 0x40090c42  PS      : 0x00060b33  A0      : 0x8008f77c  A1      : 0x3ffc8690  
A2      : 0xa5a5a5f1  A3      : 0x0000abab  A4      : 0xb33fffff  A5      : 0x00000001  
A6      : 0x00060b20  A7      : 0x0000cdcd  A8      : 0x0000abab  A9      : 0x3ffc8690  
A10     : 0x00000003  A11     : 0x00060b23  A12     : 0x00060b20  A13     : 0x3f400e54  
A14     : 0x3ffc8500  A15     : 0x00000006  SAR     : 0x00000004  EXCCAUSE: 0x0000001d  
EXCVADDR: 0xa5a5a5f1  LBEG    : 0x400014fd  LEND    : 0x4000150d  LCOUNT  : 0xfffffffd  

ELF file SHA256: 0000000000000000

Backtrace: 0x40090c42:0x3ffc8690 0x4008f779:0x3ffc86c0 0x400d3f67:0x3ffc8700 0x400d324a:0x3ffc8730 0x400d3185:0x3ffc8770 0x400d1f5a:0x3ffc87b0 0x400d207d:0x3ffc87f0 0x400d62da:0x3ffc8830 0x4008fe16:0x3ffc8850
  #0  0x40090c42:0x3ffc8690 in uxPortCompareSet at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/tasks.c:4560
      (inlined by) vPortCPUAcquireMutexIntsDisabledInternal at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/portmux_impl.inc.h:86
      (inlined by) vPortCPUAcquireMutexIntsDisabled at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/portmux_impl.h:98
      (inlined by) vTaskEnterCritical at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/tasks.c:4201
  #1  0x4008f779:0x3ffc86c0 in xQueueGenericSend at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/queue.c:2520
  #2  0x400d3f67:0x3ffc8700 in BluetoothA2DPSink::app_send_msg(app_msg_t*) at .pio/libdeps/wemos_d1_mini32/ESP32-A2DP/src/BluetoothA2DPSink.cpp:348
  #3  0x400d324a:0x3ffc8730 in BluetoothA2DPSink::app_work_dispatch(void (*)(unsigned short, void*), unsigned short, void*, int) at .pio/libdeps/wemos_d1_mini32/ESP32-A2DP/src/BluetoothA2DPSink.cpp:324
  #4  0x400d3185:0x3ffc8770 in BluetoothA2DPSink::start(char const*) at .pio/libdeps/wemos_d1_mini32/ESP32-A2DP/src/BluetoothA2DPSink.cpp:154
  #5  0x400d1f5a:0x3ffc87b0 in audio_tools::A2DPStream::begin(audio_tools::A2DPConfig) at /home/user/.platformio/packages/framework-arduinoespressif32/cores/esp32/Print.h:80
  #6  0x400d207d:0x3ffc87f0 in audio_tools::A2DPStream::begin(audio_tools::RxTxMode, char const*) at /home/user/.platformio/packages/framework-arduinoespressif32/cores/esp32/Print.h:80
      (inlined by) setup() at src/main.cpp:15
  #7  0x400d62da:0x3ffc8830 in loopTask(void*) at /home/user/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:18
  #8  0x4008fe16:0x3ffc8850 in vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c:355 (discriminator 1)

Rebooting...
ets Jun  8 2016 00:22:57

I'm currently using a Wemos D1 Mini, but i guess that doesn't matter, it's a ESP32 afterall.

This is my lib_deps, but is including ESP32-A2DP even necessary or is it automatically included by arduino-audio-tools?

lib_deps =
  https://github.com/pschatzmann/arduino-audio-tools
  https://github.com/pschatzmann/ESP32-A2DP

I'm on platformio's default platform, using the git variant didn't work, it just wouldn't let me compile it.

platform = espressif32
;platform = https://github.com/platformio/platform-espressif32.git # feature/arduino-upstream
;platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git # master

Also I'd really appreciate if you could add any example for A2DP-Sink with this library, A2DP-Source is well documented, but I didn't any example implementing A2DP-Sink properly using the Streams API of this library, that I could have transferred over to my project.

player sd a2dp

for an installation i need to send mp3 from sd card to a bluetoothspeaker/receiver. the code compiles so far but the programm seems to stop at one point. the console shows:

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4

(stops here, not working)

when i use streams-generator a2dp, it says:

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
[W] AudioA2DP.h : 292 - ==> state: Connecting
[W] AudioA2DP.h : 292 - ==> state: Connected
A2DP is connected now...
[W] AudioA2DP.h : 201 - is_a2dp_active -> true with 63488 bytes

( this works)

the libs are all latest from git repo...arduino 11.8.16 expressive 2.0.1

any hints?

cannot declare variable 'music' to be of abstract type 'audio_tools::MemoryStream'

Hi. pschatzmann

IDE:PlatfromIO
arduino-esp32: 1.0.6
arduino-audio-tool: v0.8

I detected a compile error when I was building streams-memory_raw-i2s sample code.

src\main.cpp:9:14: error: cannot declare variable 'music' to be of abstract type 'audio_tools::MemoryStream'
MemoryStream music(StarWars30_raw, StarWars30_raw_len);

I modified AudioStreams.h.

151

  virtual size_t readBytes(char *buffer, size_t length) {
    size_t count = 0;
    while (count < length) {
      int c = read();
      if (c < 0) break;
      *buffer++ = (char)c;
      count++;
    }
    return count;
  }

  virtual size_t readBytes(uint8_t *buffer, size_t length) {
    size_t count = 0;
    while (count < length) {
      int c = read();
      if (c < 0) break;
      *buffer++ = (char)c;
      count++;
    }
    return count;
  }

You can fix it if you like.👍

streams-sd_mp3-i2s

Nothing comes out of the spreakers

#define USE_HELIX 
#include <FS.h>
#include <SPI.h>
#include <SD.h>
#include "AudioTools.h"
#include "AudioCodecs/CodecMP3Helix.h"

using namespace audio_tools;

const int chipSelect = SS;//5;// 
I2SStream i2s; // final output of decoded stream
VolumeOutput volume(i2s);
LogarithmicVolumeControl lvc(0.1);
//EncodedAudioStream decoder(i2s, new MP3DecoderHelix()); // Decoding stream
EncodedAudioStream dec(&volume, new MP3DecoderHelix()); // Decoding stream
StreamCopy copier;

void setup() {
	Serial.begin(115200);
	AudioLogger::instance().begin(Serial, AudioLogger::Info);

	Serial.println("Initializing SD card...");

	if (!SD.begin(chipSelect)) {
		Serial.println("initialization failed. Things to check:");
		Serial.println("1. is a card inserted?");
		Serial.println("2. is your wiring correct?");
		Serial.println("3. did you change the chipSelect pin to match your shield or module?");
		Serial.println("Note: press reset or reopen this Serial Monitor after fixing your issue!");
		while (true);
	}
	Serial.println("initialization done.");
	File audioFile;
	if (SD.exists("/001.mp3")) {
		Serial.println("001.mp3 exists.");
		audioFile = SD.open("/001.mp3");
	}
	else {
		Serial.println("001.mp3 doesn't exist.");
	}

	// setup i2s
	auto config = i2s.defaultConfig(TX_MODE);
	i2s.begin(config);

	// setup I2S based on sampling rate provided by decoder
	dec.setNotifyAudioChange(i2s);
	dec.begin();

	// begin copy
	copier.begin(dec, audioFile);

}

void loop() {
	if (!copier.copy()) {
		stop();
	}
}

Initializing SD card...
initialization done.
001.mp3 exists.
[I] I2SESP32.h : 244 - rx/tx mode: TX
[I] I2SESP32.h : 245 - sample rate: 48000
[I] I2SESP32.h : 246 - bits per sample: 16
[I] I2SESP32.h : 247 - number of channels: 2
[I] I2SESP32.h : 248 - is_master: Master
[I] I2SESP32.h : 249 - mode: 0
[I] I2SESP32.h : 253 - pin bck_io_num: 26
[I] I2SESP32.h : 254 - pin ws_io_num: 25
[I] I2SESP32.h : 255 - pin data_num: 22

Flush method undefined

Trying to compile any example for ESP32, i get this error:

arduino-audio-tools/src/AudioCodecs/CodecWAV.h:497:33: error: 'class Print' has no member named 'flush':

if (size_limit<=0){
LOGI("The defined size was written - so we close the WAVEncoder now");
stream_ptr->flush();
is_open = false;
}

To let the compilation work I commented out that line (I saw that the flush method is empty

virtual void flush() { /* Empty implementation for backward compatibility */ }
).

Is there a cleaner way to cope with this error?

Thanks

Print metadata from the sd player

Soo we have the metadata from the url player working with icy... Now I tried to recieving data in the player-sd-i2s example from printMetaData, but nothing so far.

Switch SD player <-> Url player

I am going to create the AudioConfigLocal.h, with my personal settings. see #27

How could I switch between the sd player and the url player?

SD player

AudioSourceSdFat source(startFilePath, ext, SD_CS_PIN,5);//16

Url player

URLStream urlStream(wifi, password);
AudioSourceIcyUrl source(urlStream, urls, "audio/mp3");

Error compiling base-file_mp3-a2dp

Hello,

By compiling, I get following error:
T result= 0;
Buffers.h Error: conversion from 'int' to Non-scalar type 'channels' requested.

My Target is to send and play some Sound file, e.g. as mp3 using esp32 Bluetooth and a headset.

Regards,
Reza

ID3v2 metadata: len parameter incorrect in callback ?

The len parameter in the callbacks seems to have an incorrect value. The output below shows the value of str and len passed into the callback. The len values should be 17, 28 and 12 respectively. I had a look at the underlying binary data in the MP3 file, and there the length is correct (it is 18, 29 and 13, presumably that includes the encoding byte).

Love Songs [Sony]� (LEN = 18)
What a Diff'rence a Day Made|��? (LEN = 32)
Soul and R&Brence a Day Made|��? (LEN = 32)

I think the issue is caused because LEN is determined from the underlying string, but that string is not initialized with zeros. I was able to work-around it by modifying your source code as follows:
ADD METHOD:
void clearResult() {
for (int i = 0; i < 256; i++) {
result[i] = 0;
}
}

CALL clearResult() from existing Begin(...) and from processNotify()

I am brand-spanking new to C++ and arduino/esp32, so I apologize if this seems like amateur-hour.

Here's the first few hundred bytes of the MP3
mp3 hex data

arduino-audio-tools-main\src/AudioA2DP.h:37:34: error: 'Channels' has not been declared void convert(T src[][2], Channels* channels, size_t size)

I trying the example of streams-generator-a2dp and I had to add all the libraries to sketch. it is error when compiling.

1.below is the code:

`/**

*/
#include "AudioTools.h"
#include "AudioA2DP.h"

using namespace audio_tools;

typedef int16_t sound_t; // sound will be represented as int16_t (with 2 bytes)
uint16_t sample_rate=44100;
uint8_t channels = 2; // The stream will have 2 channels
SineWaveGenerator<sound_t> sineWave(32000); // subclass of SoundGenerator with max amplitude of 32000
GeneratedSoundStream<sound_t> in(sineWave); // Stream generated from sine wave
A2DPStream out = A2DPStream::instance() ; // A2DP input - A2DPStream is a singleton!
StreamCopy copier(out, in); // copy in to out

// Arduino Setup
void setup(void) {
Serial.begin(115200);

// We send the test signal via A2DP - so we conect to the MyMusic Bluetooth Speaker
out.begin(TX_MODE, "MyMusic");

Serial.println("A2DP is connected now...");

// Setup sine wave
sineWave.begin(channels, sample_rate, N_B4);

}

// Arduino loop
void loop() {
if (out)
copier.copy();
}`

  1. error information:
    `Arduino: 1.8.16 (Windows 10), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, Core 1, Core 1, None"

In file included from D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioI2S/AudioI2S.h:8,

             from D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioTools.h:17,

             from D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\examples\streams-generator-a2dp\streams-generator-a2dp.ino:10:

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioI2S/I2SESP32.h: In member function 'void audio_tools::I2SBase::begin(audio_tools::I2SConfig)':

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioI2S/I2SESP32.h:44:32: warning: narrowing conversion of 'cfg.audio_tools::I2SConfig::.audio_tools::AudioBaseInfo::sample_rate' from 'int' to 'uint32_t' {aka 'unsigned int'} inside { } [-Wnarrowing]

         .sample_rate = cfg.sample_rate,

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

In file included from D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioAnalog/AnalogAudio.h:3,

             from D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioTools.h:19,

             from D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\examples\streams-generator-a2dp\streams-generator-a2dp.ino:10:

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioAnalog/AnalogAudioESP32.h: In member function 'void audio_tools::AnalogAudio::begin(audio_tools::AnalogConfig)':

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioAnalog/AnalogAudioESP32.h:196:30: warning: narrowing conversion of 'cfg.audio_tools::AnalogConfig::.audio_tools::AudioBaseInfo::sample_rate' from 'int' to 'uint32_t' {aka 'unsigned int'} inside { } [-Wnarrowing]

       .sample_rate = cfg.sample_rate,

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

In file included from D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\examples\streams-generator-a2dp\streams-generator-a2dp.ino:11:

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioA2DP.h: At global scope:

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioA2DP.h:37:34: error: 'Channels' has not been declared

     void convert(T src[][2], Channels* channels, size_t size) {

                              ^~~~~~~~

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioA2DP.h: In member function 'void audio_tools::ChannelConverter::convert(T ()[2], int, size_t)':

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioA2DP.h:39:29: error: request for member 'channel1' in 'channels[i]', which is of non-class type 'int'

             channels[i].channel1 = (*convert_ptr)(src[i][0]);

                         ^~~~~~~~

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioA2DP.h:40:29: error: request for member 'channel2' in 'channels[i]', which is of non-class type 'int'

             channels[i].channel2 = (*convert_ptr)(src[i][1]);

                         ^~~~~~~~

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioA2DP.h: At global scope:

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioA2DP.h:56:39: error: 'Channels' was not declared in this scope

int32_t a2dp_stream_source_sound_data(Channels* data, int32_t len) {

                                   ^~~~~~~~

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioA2DP.h:56:39: note: suggested alternative: 'ChannelInfo'

int32_t a2dp_stream_source_sound_data(Channels* data, int32_t len) {

                                   ^~~~~~~~

                                   ChannelInfo

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioA2DP.h:56:49: error: 'data' was not declared in this scope

int32_t a2dp_stream_source_sound_data(Channels* data, int32_t len) {

                                             ^~~~

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioA2DP.h:56:49: note: suggested alternative: 'atan'

int32_t a2dp_stream_source_sound_data(Channels* data, int32_t len) {

                                             ^~~~

                                             atan

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioA2DP.h:56:63: error: expected primary-expression before 'len'

int32_t a2dp_stream_source_sound_data(Channels* data, int32_t len) {

                                                           ^~~

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioA2DP.h:56:66: error: expression list treated as compound expression in initializer [-fpermissive]

int32_t a2dp_stream_source_sound_data(Channels* data, int32_t len) {

                                                              ^

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioA2DP.h: In member function 'void audio_tools::A2DPStream::begin(audio_tools::RxTxMode, const char*)':

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioA2DP.h:148:53: error: invalid conversion from 'int32_t' {aka 'int'} to 'music_data_channels_cb_t' {aka 'int ()(Frame, int)'} [-fpermissive]

                 a2dp_source->start((char*)name, a2dp_stream_source_sound_data);

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

In file included from D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\src/AudioA2DP.h:17,

             from D:\arduino-1.8.16\hardware\espressif\esp32\libraries\arduino-audio-tools-main\examples\streams-generator-a2dp\streams-generator-a2dp.ino:11:

D:\arduino-1.8.16\hardware\espressif\esp32\libraries\ESP32-A2DP-main\src/BluetoothA2DPSource.h:72:67: note: initializing argument 2 of 'virtual void BluetoothA2DPSource::start(const char*, music_data_channels_cb_t, bool)'

 virtual void start(const char* name, music_data_channels_cb_t callback = NULL, bool is_ssp_enabled = false);

                                                               ^

Multiple libraries were found for "WiFi.h"

Used: D:\arduino-1.8.16\hardware\espressif\esp32\libraries\WiFi

Not used: D:\arduino-1.8.16\libraries\WiFi

exit status 1

Error compiling for board ESP32 Dev Module.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
`

Switch between SD-Player and ESP32-A2DP with tasks

I want to switch between the player and the a2dp by turning of the player like this. I think I closed evrything, still I get stuck by starting the a2dp.

void A2DPOnOFF(bool BlnOn) {
	if (BlnOn == true) {
		player.stop();
		player.end();
		i2s.end();
		Serial.println("activate A2DP");       //here it stops!!!
		a2dp_sink.start("BluetoothSpreaker");
		Serial.println("A2DP active");
	}
	else
	{
		a2dp_sink.stop();
		a2dp_sink.end();
		auto cfg = i2s.defaultConfig(TX_MODE);
		cfg.i2s_format = I2S_LEFT_JUSTIFIED_FORMAT;
		i2s.begin(cfg);
		player.begin(0, false);
		player.setAutoNext(false);
		volume.setVolume(0.1);
	}
}

[D] AudioPlayer.h : 665 - virtual void audio_tools::AudioPlayer::stop()
[D] AudioPlayer.h : 638 - virtual void audio_tools::AudioPlayer::end()
[D] AudioOutput.h : 323 - void audio_tools::EncodedAudioStream::end()
[D] CodecMP3Helix.h : 85 - virtual void audio_tools::MP3DecoderHelix::end()
[I] MetaDataID3.h : 551 - virtual void audio_tools::MetaDataID3::end()
[D] I2SStream.h : 96 - void audio_tools::I2SStream::end()
[D] I2SESP32.h : 58 - void audio_tools::I2SBase::end()
activate A2DP
Guru Meditation Error: Core 0 panic'ed (StoreProhibited). Exception was unhandled.

Decoder exception

Exception:Error:
0x4000c46c: ?? ??:0
0x4000c477: ?? ??:0
/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/stack/gatt/gatt_main.c:102:::0x4010be8d:gatt_init
/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/stack/btu/btu_init.c:97:::0x4010b440:btu_init_core
/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/stack/btu/btu_task.c:278:::0x4010b0d7:btu_task_start_up
/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/stack/btu/btu_task.c:226:::0x4010b117:btu_task_thread_handler
/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c:355 (discriminator 1):::0x400901de:vPortTaskWrapper
0x40078000: ?? ??:0
0x40080400: ?? ??:0
0x400806a8: ?? ??:0

esp rebooting

[W] AudioA2DP.h : 291 - ==> state: Disconnected
[W] AudioA2DP.h : 291 - ==> state: Connecting
[W] AudioA2DP.h : 291 - ==> state: Connected
[E] AudioPlayer.h : 324 - '/LEMON TREE ANIMATION WITH LYRICS.mp3' is not a directory!
[W] AudioPlayer.h : 223 - -> selectStream: 0 ''
[W] AudioPlayer.h : 625 - -> begin: no data found
Guru Meditation Error: Core 1 panicked (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x400d56e0 PS : 0x00060330 A0 : 0x800d5803 A1 : 0x3ffcf930
A2 : 0x00000000 A3 : 0x3ffc438c A4 : 0x000000ff A5 : 0x0000ff00
A6 : 0x00ff0000 A7 : 0xff000000 A8 : 0x800d56a2 A9 : 0x3ffcf910
A10 : 0x00000000 A11 : 0x00000017 A12 : 0x0000000a A13 : 0x00000000
A14 : 0x3ffc46d8 A15 : 0x001e8480 SAR : 0x0000001b EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000000 LBEG : 0x400014fd LEND : 0x4000150d LCOUNT : 0xffffffff

ELF file SHA256: 0000000000000000

Backtrace: 0x400d56e0:0x3ffcf930 0x400d5800:0x3ffcf970 0x400d592e:0x3ffcf990 0x400dea34:0x3ffcf9b0 0x4009016a:0x3ffcf9d0

Rebooting...

Support of PCM1808 ?

Hi, I like to use the streams-i2s-webserver_wav example, but I do not know how to set the configuration right. As my pcm1808 board has no clock generator, I need to use the Master mode (Slave mode for pcm1808) and the clock for mclk at PIN 0.

The ADC provide a 24 bit pcm output and additional I need it to be converted to 16bit wav

Thanks for helping
Frank

Feature Request

Hi!
Thank you for the very interesting library.
Could you add TimerAlarmRepeating-based stream class?
It would be a great addition for processing low frequency (infrasonic) data from I2C differential pressure sensor like Sensirion SDP32 or SDP810.

Reassigne output pins

The default analog output pins are GPIO25 and GPIO26. Can these pins be reassigned?

streams-generator-a2dp.ino - not working

I finally got back to this project and was hoping that the recent changes to the library would fix the noisy output I was getting from the bluetooth connection. Instead, now, I cannot get bluetooth to work at all. My code didn't work at all so I brought up this example program to see if it would work. I only changed 2 things in the example.

  1. The name of my bluetooth amplifier to "KD-240WF"
  2. I had to change #include "AudioA2DP.h" to #include "AudioLibs/AudioA2dp.h" to get the code to compile

Here is the logging info which indicates the bluetooth connection was made but I don't hear anything from my speaker.

[I] AudioA2DP.h : 129 - Connecting to KD-240WF
[I] AudioA2DP.h : 136 - Starting a2dp_source...
[W] AudioA2DP.h : 292 - ==> state: Connecting
[W] AudioA2DP.h : 292 - ==> state: Disconnected
[W] AudioA2DP.h : 292 - ==> state: Connecting
[W] AudioA2DP.h : 292 - ==> state: Connected
[I] AudioA2DP.h : 145 - a2dp_source is connected...
A2DP is connected now...
[I] AudioTypes.h : 33 - sample_rate: 44100
[I] AudioTypes.h : 34 - channels: 2
[I] AudioTypes.h : 35 - bits_per_sample: 16

and no sound is produced at all; not a click or a pop or noise or anything. And yes the volume is turned up.

I have not idea what the issue is.

Difficulties with intellisense

I am using visual studio with the Visual Micro Extension and have a long time difficulties within this library with Intellisense.

What I think is... that it has something to do with the compiler.

I see changes when I comment or change these.

AudioLogger::instance().begin(Serial, AudioLogger::Info);

OR

Visual Micro in the menu-> Core Debug level

Include Not Capitalized

arduino-audio-tools/src/AudioHttp/AudioServer.h

The include:

#include "AudioCodecs/CodecWav.h"

I think should be:

#include "AudioCodecs/CodecWAV.h"

New DAC for your wiki

Hi Phil. I just connected the Hiletgo DAC module to my ESP32, and have it working with your library. I made a branch of your wiki and updated the page, but since I'm not a collaborator, I can't push it up to make a PR. Are you interested in including it, and if so, how should we proceed.

which MCU can we use with this library ?

Sorry, not really an issue, but which MCU can we use with this library ?
Can I use it on the SAMD21, or it's only for the ESP32?

I want to run the SAM text to speech on the Feather M0
Thanks

A2DP source - set_auto_reconnect option

Hello,

Thanks for the works on library.

I use both ESP32-A2DP and arduino audio tools.

I want to use a command from ESP32-A2DP in an example from arduino audio tools library :

set_auto_reconnect

I want to set it to false.

Is there a way ?

Best regards

SD card reader and multiple spi devices

The sd board of the example is made to use on an Arduino. This board need a power supply of 5v and since the exp32 is 3.3v... the miso line needs a resistor of 1k to make the reset work with multieple spi devices. Also the spi speed needs to be lowerd. PS: The 5v pin of the esp32 is not regulated by the esp32. There for I would not recommend it.

https://github.com/pschatzmann/arduino-audio-tools/tree/main/examples/examples-player/player-sd-i2s#sd-car

Below is a 3.3v SD reader that's direct compatable with the esp32

2021-12-27_112211

Simultaneous tasks (BT Transmitting/Receiving + Recording)

Hi, thank you very much for this amazing library!

I'm planning to use the base-i2s-a2dp code for my project which also requires a recording feature. I would like to ask if it is feasible to add a function at the said base code to record for a certain time that will be saved as a WAV file to an SD card (triggered by push button) while transmitting data through Bluetooth at the same time? Is this do-able? Do I need to use the 2 cores of ESP32 for this (freeRTOS)?

Thank you very much!
Warm regards,
Rmond

A2DP to PWM help needed

Hi,

I've got a ESP32 project where I read audio from a source (right now it's a simple WAV file located in flash) and then send it to a PWM ouput via the ESP32's ledc module.

So its 8bit unisigned WAV data TO 150kHz PWM who's duty cycle is updated at the sample rate of the audio file (40kHz).

This is to play clear audio on a tesla coil. I got it working pretty well right now via my own simple code. I now want to upgrade this so I can stream audio from bluetooth as the audio source via A2DP using your libraries.

I believe the audio-tools stream functions should do the job but I can't quite figure out how to connect the A2DP input stream to my own output PWM module. Or better yet, do it all from your libraries.

I'm aware there's a AudioPWM example but I can't get this work for ESP32 because I believe it's only support the Rpi Pico at the moment. The other output streams are only things like I2S and CSV/Serial.

How to do I get access to the A2DP data to then send to the PWM module OR better yet how do I simply stream the data as it comes in using your libraries? Something akin to a simple memcopy - even via a callback would do.

Any help would be appreciated.

Arduino compiling error streams-i2s-a2dp

Hello,

when i want to compile your example I get following issue:
Mehrere Bibliotheken wurden für "WiFi.h" gefunden In file included from C:\Users\guido\Documents\Arduino\libraries\arduino-audio-tools-main\src/AudioEffects/AudioEffects.h:7:0, Benutzt: C:\Users\guido\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi from C:\Users\guido\Documents\Arduino\libraries\arduino-audio-tools-main\src/AudioTools.h:29, Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\WiFi from C:\Users\guido\Documents\Arduino\libraries\arduino-audio-tools-main\examples\examples-stream\streams-i2s-a2dp\streams-i2s-a2dp.ino:13: C:\Users\guido\Documents\Arduino\libraries\arduino-audio-tools-main\src/AudioEffects/STKEffects.h:5:20: fatal error: Effect.h: No such file or directory compilation terminated. exit status 1
What am i doing wrong?
The way I see it Arduino doesn't really handle the folder structure? Because all the files are there.

I use Arduino 1.8.16 in Windows 10

Question about Esp32 using WIFI and BLUETOOTH at same time

Hello, your tools are really interesting and useful!!

I trying to develop a esp32 webradio bluetooth sender, so my question is:
Is it possible to receive mp3 stream from internet and retransmit it with the a2dp lib?

I tried to change base-file_mp3-a2dp, but I got some errors with T result = 0;
I'm using the lastest esp32 version (arduino IDE).

Thanks ;)

Testing example player-sd-i2s

if I comment #define USE_URL_ARDUINO in the AudioConfig I get these issues

AudioHttp.h:3: In file included from
AudioTools.h:27: from
player-sd-i2s.ino:66: from

URLStreamESP32.h: 169:72: error: 'MethodID' has not been declared
void begin(const char* urlStr, const char* acceptMime=nullptr, MethodID action=GET, const char* reqMime="", const char*reqData="") {

URLStreamESP32.h: 207:9: error: 'HttpRequest' does not name a type
HttpRequest &httpRequest(){

URLStreamESP32.h: 213:9: error: 'URLStreamDefault' does not name a type
URLStreamDefault* p_urlStream=nullptr

URLStreamESP32.h: 169:88: error: 'GET' was not declared in this scope
void begin(const char* urlStr, const char* acceptMime=nullptr, MethodID action=GET, const char* reqMime="", const char*reqData="") {
URLStreamESP32.h: In constructor audio_tools::URLStream::URLStream(int)

URLStreamESP32.h: 148:13: error: 'p_urlStream' was not declared in this scope
p_urlStream = new URLStreamDefault(readBufferSize)

URLStreamESP32.h: 148:31: error: expected type-specifier before 'URLStreamDefault
p_urlStream = new URLStreamDefault(readBufferSize)
URLStreamESP32.h: In constructor audio_tools::URLStream::URLStream(Client&, int)

URLStreamESP32.h: 154:13: error: 'p_urlStream' was not declared in this scope
p_urlStream = new URLStreamDefault(clientPar, readBufferSize)

URLStreamESP32.h: 154:31: error: expected type-specifier before 'URLStreamDefault
p_urlStream = new URLStreamDefault(clientPar, readBufferSize)
URLStreamESP32.h: In constructor audio_tools::URLStream::URLStream(const char*, const char*, int)

URLStreamESP32.h: 160:13: error: 'p_urlStream' was not declared in this scope
p_urlStream = new URLStreamDefault(network, password, readBufferSize)

URLStreamESP32.h: 160:31: error: expected type-specifier before 'URLStreamDefault
p_urlStream = new URLStreamDefault(network, password, readBufferSize)
URLStreamESP32.h: In destructor virtual audio_tools::URLStream::~URLStream()

URLStreamESP32.h: 166:17: error: 'p_urlStream' was not declared in this scope
if (p_urlStream!=nullptr) delete p_urlStream

URLStreamESP32.h: 166:46: error: type '' argument given to 'delete', expected pointer
if (p_urlStream!=nullptr) delete p_urlStream
URLStreamESP32.h: In member function void audio_tools::URLStream::begin(const char*, const char*, int, const char*, const char*)

URLStreamESP32.h: 171:13: error: 'p_urlStream' was not declared in this scope
p_urlStream->begin(urlStr, acceptMime, action,reqMime, reqData )
URLStreamESP32.h: In member function void audio_tools::URLStream::end()

URLStreamESP32.h: 203:13: error: 'p_urlStream' was not declared in this scope
p_urlStream->end()

AudioTools.h:28: In file included from
player-sd-i2s.ino:66: from
AudioPlayer.h: In member function virtual Stream* audio_tools::AudioSourceURL::selectStream(int)

AudioPlayer.h: 307:44: error: call to 'void audio_tools::URLStream::begin(const char*, const char*, int, const char*, const char*)' uses the default argument for parameter 3, which is not yet defined
actual_stream->begin(urlArray[pos], mime)
Error compiling project sources
Debug build failed for project 'player-sd-i2s'

I think I will make a pull to work arround this in the player

streams-url_mp3-i2s

I trying the example of streams-url_mp3-i2s and I had to add all the libarys to schetch before it was reqoinized. Maybe it something in my config but it is compiling now. I have also the a2dp working and maybe want to switch to the webradio.

/**
 * @file streams-url_mp3-i2s.ino
 * @author Phil Schatzmann
 * @brief decode MP3 stream from url and output it on I2S
 * @version 0.1
 * @date 2021-96-25
 *
 * @copyright Copyright (c) 2021

 */

#include <sdios.h>
#include <SdFatConfig.h>
#include <SdFat.h>
#include <RingBuf.h>
#include <MinimumSerial.h>
#include <FreeStack.h>
#include <BufferedPrint.h>
//#include <mainpage.h>
#include <SPI.h>
#include <WiFiClientSecure.h>
#include <ssl_client.h>
#include <WiFiUdp.h>
#include <WiFiType.h>
#include <WiFiSTA.h>
#include <WiFiServer.h>
#include <WiFiScan.h>
#include <WiFiMulti.h>
#include <WiFiGeneric.h>
#include <WiFiClient.h>
#include <WiFiAP.h>
#include <WiFi.h>
#include <ETH.h>
#include <MP3DecoderHelix.h>
#include <helix_pgm.h>
#include <helix_log.h>
#include <CommonHelix.h>
#include <AACDecoderHelix.h>

#include "AudioTools.h"
#include "AudioCodecs/CodecMP3Helix.h"

using namespace audio_tools;

URLStream url("myssid", "key");
I2SStream i2s; // final output of decoded stream
EncodedAudioStream deco(i2s, new MP3DecoderHelix()); // Decoding stream
StreamCopy copier(deco, url); // copy url to decoder

void setup() {
	Serial.begin(115200);
	AudioLogger::instance().begin(Serial, AudioLogger::Debug);

	////default see below (can be changed)
	//i2s_pin_config_t my_pin_config = {
	//	.bck_io_num = 26,//dac
	//	.ws_io_num = 25,//dac
	//	.data_out_num = 22,//clk
	//	.data_in_num = I2S_PIN_NO_CHANGE//sda
	//};

	//a2dp_sink.set_pin_config(my_pin_config);
	//i2s.

	//static const i2s_config_t i2s_config = {
	//.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX),
	//.sample_rate = 44100, // corrected by info from bluetooth
	//.bits_per_sample = (i2s_bits_per_sample_t)16, /* the DAC module will only take the 8bits from MSB */
	//.channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
	//.communication_format = I2S_COMM_FORMAT_I2S_MSB,
	//.intr_alloc_flags = 0, // default interrupt priority
	//.dma_buf_count = 8,
	//.dma_buf_len = 64,
	//.use_apll = false
	//};
	
	// setup i2s
	auto config = i2s.defaultConfig(TX_MODE);
	i2s.begin(config);

	// setup I2S based on sampling rate provided by decoder
	deco.setNotifyAudioChange(i2s);
	deco.begin();

	// mp3 radio
	url.begin("https://centralcharts.ice.infomaniak.ch/centralcharts-128.mp3", "audio/mp3");

}
void loop() {

}

here is my log

Opening port
Port open
�[D] AudioI2S.h : 86 - void audio_tools::I2SStream::begin(audio_tools::I2SConfig)
[D] I2SESP32.h : 35 - void audio_tools::I2SBase::begin(audio_tools::I2SConfig)
[I] I2SESP32.h : 242 - rx/tx mode: TX
[I] I2SESP32.h : 243 - sample rate: 44100
[I] I2SESP32.h : 244 - bits per sample: 16
[I] I2SESP32.h : 245 - number of channels: 2
[I] I2SESP32.h : 246 - is_master: Master
[I] I2SESP32.h : 247 - mode: 0
[I] I2SESP32.h : 251 - pin bck_io_num: 14
[I] I2SESP32.h : 252 - pin ws_io_num: 15
[I] I2SESP32.h : 253 - pin data_num: 22
[D] I2SESP32.h : 96 - begin - started
[D] Streams.h : 708 - void audio_tools::EncodedAudioStream::setNotifyAudioChange(audio_tools::AudioBa
[D] CodecMP3Helix.h : 111 - virtual void audio_tools::MP3DecoderHelix::setNotifyAudioChange(audio_tools::Au
[D] Streams.h : 714 - void audio_tools::EncodedAudioStream::begin()
[D] CodecMP3Helix.h : 67 - virtual void audio_tools::MP3DecoderHelix::begin()
[I] URLStream.h : 54 - URLStream.begin https://centralcharts.ice.infomaniak.ch/centralcharts-128.mp3
[D] Url.h : 59 - setUrl https://centralcharts.ice.infomaniak.ch/centralcharts-128.mp3
[D] StrExt.h : 109 - StrExt::grow(61)
[I] Url.h : 73 - Url::parse
[D] StrExt.h : 109 - StrExt::grow(5)
[D] StrExt.h : 109 - StrExt::grow(31)
[D] StrExt.h : 109 - StrExt::grow(22)
[D] StrExt.h : 109 - StrExt::grow(39)
[I] Url.h : 109 - url->https://centralcharts.ice.infomaniak.ch/centralcharts-128.mp3
[I] Url.h : 110 - host->centralcharts.ice.infomaniak.ch
[I] Url.h : 111 - protocol->https
[I] Url.h : 112 - path->/centralcharts-128.mp3
[I] Url.h : 113 - port->443
[D] URLStream.h : 189 - connectWiFi
.....
[I] URLStream.h : 165 - WiFiClientSecure
[I] HttpRequest.h : 171 - process connecting to host centralcharts.ice.infomaniak.ch port 443
[I] HttpRequest.h : 160 - connect centralcharts.ice.infomaniak.ch
[I] HttpRequest.h : 182 - Free heap: 179040
[I] HttpHeader.h : 348 - HttpRequestHeader::setValues - path: /centralcharts-128.mp3
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for Host
[D] StrExt.h : 109 - StrExt::grow(4)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'Host' : 'centralcharts.ice.infomaniak.ch'
[D] StrExt.h : 109 - StrExt::grow(31)
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for Connection
[D] StrExt.h : 109 - StrExt::grow(10)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'Connection' : 'close'
[D] StrExt.h : 109 - StrExt::grow(5)
[D] HttpHeader.h : 106 - HttpHeader::put - value ignored because it is null for User-Agent
[D] HttpHeader.h : 106 - HttpHeader::put - value ignored because it is null for Accept-Encoding
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for Accept
[D] StrExt.h : 109 - StrExt::grow(6)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'Accept' : 'audio/mp3'
[D] StrExt.h : 109 - StrExt::grow(9)
[D] HttpHeader.h : 106 - HttpHeader::put - value ignored because it is null for Content-Type
[I] HttpHeader.h : 249 - HttpHeader::write
[I] HttpHeader.h : 357 - HttpRequestHeader::write1stLine
[I] HttpHeader.h : 372 - -> GET /centralcharts-128.mp3 HTTP/1.1
[D] HttpHeader.h : 164 - HttpHeader::writeHeaderLine: Host
[I] HttpHeader.h : 185 - -> Host: centralcharts.ice.infomaniak.ch
[D] HttpHeader.h : 164 - HttpHeader::writeHeaderLine: Connection
[I] HttpHeader.h : 185 - -> Connection: close
[D] HttpHeader.h : 164 - HttpHeader::writeHeaderLine: Accept
[I] HttpHeader.h : 185 - -> Accept: audio/mp3
[I] HttpHeader.h : 288 - ->
[I] HttpRequest.h : 206 - Request written ... waiting for reply
[I] HttpHeader.h : 219 - HttpHeader::read
[W] HttpHeader.h : 226 - Waiting for data...
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> HTTP/1.0 200 OK
[I] HttpHeader.h : 443 - HttpReplyHeader::parse1stLine: HTTP/1.0 200 OK
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> P3P: CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PS
[D] HttpHeader.h : 129 - HttpHeader::put -> P3P: CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for P3P
[D] StrExt.h : 109 - StrExt::grow(3)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'P3P' : 'CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA
[D] StrExt.h : 109 - StrExt::grow(110)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> icy-br: 128
[D] HttpHeader.h : 129 - HttpHeader::put -> icy-br: 128
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for icy-br
[D] StrExt.h : 109 - StrExt::grow(6)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'icy-br' : '128'
[D] StrExt.h : 109 - StrExt::grow(3)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> icy-pub: 1
[D] HttpHeader.h : 129 - HttpHeader::put -> icy-pub: 1
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for icy-pub
[D] StrExt.h : 109 - StrExt::grow(7)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'icy-pub' : '1'
[D] StrExt.h : 109 - StrExt::grow(1)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> icy-description: Liquidsoap Radio!
[D] HttpHeader.h : 129 - HttpHeader::put -> icy-description: Liquidsoap Radio!
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for icy-description
[D] StrExt.h : 109 - StrExt::grow(15)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'icy-description' : 'Liquidsoap Radio!'
[D] StrExt.h : 109 - StrExt::grow(17)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> icy-audio-info: channels=2;samplerate=44100;bitrate=128
[D] HttpHeader.h : 129 - HttpHeader::put -> icy-audio-info: channels=2;samplerate=44100;bitrate=128
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for icy-audio-info
[D] StrExt.h : 109 - StrExt::grow(14)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'icy-audio-info' : 'channels=2;samplerate=44100;bitrate=128'
[D] StrExt.h : 109 - StrExt::grow(39)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> Access-Control-Allow-Origin: *
[D] HttpHeader.h : 129 - HttpHeader::put -> Access-Control-Allow-Origin: *
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for Access-Control-Allow-Origin
[D] StrExt.h : 109 - StrExt::grow(27)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'Access-Control-Allow-Origin' : '*'
[D] StrExt.h : 109 - StrExt::grow(1)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> icy-url: http://savonet.sf.net
[D] HttpHeader.h : 129 - HttpHeader::put -> icy-url: http://savonet.sf.net
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for icy-url
[D] StrExt.h : 109 - StrExt::grow(7)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'icy-url' : 'http://savonet.sf.net'
[D] StrExt.h : 109 - StrExt::grow(21)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> Instance-id: 5f1ab84746325b7a729b24aa5727f6b7
[D] HttpHeader.h : 129 - HttpHeader::put -> Instance-id: 5f1ab84746325b7a729b24aa5727f6b7
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for Instance-id
[D] StrExt.h : 109 - StrExt::grow(11)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'Instance-id' : '5f1ab84746325b7a729b24aa5727f6b7'
[D] StrExt.h : 109 - StrExt::grow(32)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> Cache-Control: no-cache
[D] HttpHeader.h : 129 - HttpHeader::put -> Cache-Control: no-cache
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for Cache-Control
[D] StrExt.h : 109 - StrExt::grow(13)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'Cache-Control' : 'no-cache'
[D] StrExt.h : 109 - StrExt::grow(8)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> Server: AIS aise12.infomaniak.ch Streaming Server 8.5.6
[D] HttpHeader.h : 129 - HttpHeader::put -> Server: AIS aise12.infomaniak.ch Streaming Server 8.5.6
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for Server
[D] StrExt.h : 109 - StrExt::grow(6)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'Server' : 'AIS aise12.infomaniak.ch Streaming Server 8.5.6'
[D] StrExt.h : 109 - StrExt::grow(47)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> icy-genre: Misc
[D] HttpHeader.h : 129 - HttpHeader::put -> icy-genre: Misc
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for icy-genre
[D] StrExt.h : 109 - StrExt::grow(9)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'icy-genre' : 'Misc'
[D] StrExt.h : 109 - StrExt::grow(4)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> Expires: Mon, 26 Jul 1997 05:00:00 GMT
[D] HttpHeader.h : 129 - HttpHeader::put -> Expires: Mon, 26 Jul 1997 05:00:00 GMT
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for Expires
[D] StrExt.h : 109 - StrExt::grow(7)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'Expires' : 'Mon, 26 Jul 1997 05:00:00 GMT'
[D] StrExt.h : 109 - StrExt::grow(29)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> icy-metaint: 0
[D] HttpHeader.h : 129 - HttpHeader::put -> icy-metaint: 0
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for icy-metaint
[D] StrExt.h : 109 - StrExt::grow(11)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'icy-metaint' : '0'
[D] StrExt.h : 109 - StrExt::grow(1)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> Access-Control-Allow-Headers: Content-Type, Icy-Metadat
[D] HttpHeader.h : 129 - HttpHeader::put -> Access-Control-Allow-Headers: Content-Type, Icy-Metadata
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for Access-Control-Allow-Headers
[D] StrExt.h : 109 - StrExt::grow(28)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'Access-Control-Allow-Headers' : 'Content-Type, Icy-Metadata
[D] StrExt.h : 109 - StrExt::grow(26)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> Pragma: no-cache
[D] HttpHeader.h : 129 - HttpHeader::put -> Pragma: no-cache
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for Pragma
[D] StrExt.h : 109 - StrExt::grow(6)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'Pragma' : 'no-cache'
[D] StrExt.h : 109 - StrExt::grow(8)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> icy-name: Central Charts
[D] HttpHeader.h : 129 - HttpHeader::put -> icy-name: Central Charts
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for icy-name
[D] StrExt.h : 109 - StrExt::grow(8)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'icy-name' : 'Central Charts'
[D] StrExt.h : 109 - StrExt::grow(14)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> Connection: close
[D] HttpHeader.h : 129 - HttpHeader::put -> Connection: close
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for Connection
[D] StrExt.h : 109 - StrExt::grow(10)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'Connection' : 'close'
[D] StrExt.h : 109 - StrExt::grow(5)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> Content-Type: audio/mpeg
[D] HttpHeader.h : 129 - HttpHeader::put -> Content-Type: audio/mpeg
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for Content-Type
[D] StrExt.h : 109 - StrExt::grow(12)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'Content-Type' : 'audio/mpeg'
[D] StrExt.h : 109 - StrExt::grow(10)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine -> Set-Cookie: AISSessionId=6055bc48056672a1_18344947_xtra
[D] HttpHeader.h : 129 - HttpHeader::put -> Set-Cookie: AISSessionId=6055bc48056672a1_18344947_xtraTqVN_
[D] HttpHeader.h : 305 - HttpHeader::headerLine - new line created for Set-Cookie
[D] StrExt.h : 109 - StrExt::grow(10)
[I] HttpHeader.h : 96 - HttpHeader::put -> 'Set-Cookie' : 'AISSessionId=6055bc48056672a1_18344947_xtraT
[D] StrExt.h : 109 - StrExt::grow(177)
[D] HttpLineReader.h : 20 - HttpLineReader readlnInternal
[I] HttpHeader.h : 155 - HttpHeader::readLine ->
[W] HttpRequest.h : 141 - no CONTENT_LENGTH found in reply
[I] URLStream.h : 69 - size: 0
[I] URLStream.h : 203 - Request written ... waiting for reply

What I notest in this log is that this

[I] I2SESP32.h : 251 - pin bck_io_num: 14
[I] I2SESP32.h : 252 - pin ws_io_num: 15
[I] I2SESP32.h : 253 - pin data_num: 22

is not coresponding with my a2dp config

and the connection is closed and not playing my stream.

player-url-i2s

The player-url-i2s works for changing from one to next. After that it stays on the second channel. It is trying to change to next but for one reason it keeps taking the second url.

AudioKit.h : 183 - begin faild: please verify your AUDIOKIT_BOARD setting: 5

Hello! First of all awesome work with all these wonderful audio libs !

I am trying my hand at the esp32 AI tinker v2.2 example and have modified it to work for my platformio setup. It compiles okay, but I get the following error. As far as I understand from the library, setting AUDIOKIT_BOARD to 5 will make it work with the ai tinker v2.2 board, but it seems to disagree:

[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfefc
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba908
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba990 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbaafc
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba96c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error:   ->Wire.endTransmission: 4
Error:   codec init failed!
Error:   audio_hal_init
[E] AudioKit.h : 183 - begin faild: please verify your AUDIOKIT_BOARD
setting: 5

Here is the main.cpp file from my project:

/**
 * @file basic-a2dp-audiokit.ino
 * @brief see https://github.com/pschatzmann/arduino-audio-tools/blob/main/examples/examples-audiokit/basic-a2dp-audiokit/README.md
 *
 * @author Phil Schatzmann
 * @copyright GPLv3
 */

#define USE_A2DP
#define AUDIOKIT_BOARD 5 // ai tinker v2.2
#define AUDIOKIT_USE_WIRE 0 // use esp32 wire lib

#include "Arduino.h"
#include "AudioTools.h"
#include "AudioLibs/AudioKit.h"

BluetoothA2DPSink a2dp_sink;
AudioKitStream kit;

// Write data to AudioKit in callback
void read_data_stream(const uint8_t *data, uint32_t length) {
    kit.write(data, length);
}

void setup() {
  Serial.begin(115200);
  AudioLogger::instance().begin(Serial, AudioLogger::Debug);

  // setup output
  auto cfg = kit.defaultConfig(TX_MODE);
  kit.begin(cfg);

  // register callback
  a2dp_sink.set_stream_reader(read_data_stream, false);
  a2dp_sink.start("AudioKit");
}

void loop() {
  kit.processActions();
}

And the platformio.ini:

[platformio]
description = A2DP Example
default_envs = esp32dev

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps = Wire, https://github.com/pschatzmann/ESP32-A2DP, https://github.com/pschatzmann/arduino-audio-tools, https://github.com/pschatzmann/arduino-audiokit, https://github.com/pschatzmann/arduino-libhelix
build_flags = -DCORE_DEBUG_LEVEL=5
monitor_speed = 115200

Any pointers on what to do? THANKS!

Update base-file_mp3-a2dp.ino

Fantastic library I would suggest one change to "base-file_mp3-a2dp.ino".
I was not able to connect to my M5Stack Core 2 SD drive. I added this code

Added code:
int SPI_MOSI = 23;
int SPI_MISO = 38;
int SPI_SCK = 18;

SPI.begin(SPI_SCK, SPI_MISO, SPI_MOSI);

Just above the code below:

// Open MP3 file and play it
SD.begin(sd_ss_pin);

Thanks for a great project!

Building errors

HI,

https://github.com/pschatzmann/arduino-audio-tools/blob/main/examples-basic-api/base-file_mp3-a2dp/base-file_mp3-a2dp.ino
I added "#define USE_ESP8266_AUDIO 1" in "base-file_mp3-a2dp.ino".
And tried to build the file in Arduino IDE, but got the errors:

`In file included from D:\Code_Source\Arduino_NodeMCU32\Sample_A2DP\base-file_mp3-a2dp_sd\base-file_mp3-a2dp_sd.ino:16:0:
C:\D:\CUsers\myname\Documents\Arduino\libraries\arduino-audio-tools-main\src/AudioESP8266.h:11:74: error: expected template-name before '<' token
class AudioOutputWithCallback : public AudioOutput, public CallbackStream {
^
C:\D:\CUsers\myname\Documents\Arduino\libraries\arduino-audio-tools-main\src/AudioESP8266.h:11:74: error: expected '{' before '<' token
C:\D:\CUsers\myname\Documents\Arduino\libraries\arduino-audio-tools-main\src/AudioESP8266.h:11:74: error: expected unqualified-id before '<' token

exit status 1
開發板 ESP32 Wrover Module 編譯錯誤。`

Do you have any ideas?

My environment:
Arduino IDE with ESP32.
Installed the three libraries.
https://github.com/earlephilhower/ESP8266Audio
https://github.com/pschatzmann/ESP32-A2DP
https://github.com/pschatzmann/arduino-audio-tools

Thank you very much.
B.R.
Hartman

Trying to establish a Stream from i2s to a2dp.

Hello,
first of all, thanks for those awesome tools!
As the title says, I'm trying to establish a stream between i2s (in) and a2dp (out).
In the folder sandbox, there already is an example that won't work, at least not for me. With help of the working example, which is the other way round, I was able to build it.
As I was trying to understand the code, what does what, and so on, I stumbled over one thing I don't understand.
In the Class I2SStream and the object that calls ".begin" is just installing the drivers and configurations for the I2S.
The Class A2DPStream an the object that calls ".begin" is connecting to the Bluetooth device and opens a useable connection.
The copier in the loop is doing two channels out of one from the Streams I defined as input and output.
The question I got is, where happens the "read" of the actual data from the I2S. I have to read the data at some point, with something like "i2s.read()", which I could find in some classes, but I didn't get if the code is already using the i2s.read somewhere and the problem is actually a different one.

I'll put my sketch in as a reference so that you know what I'm talking about. :)

#include "Arduino.h"
#include "AudioTools.h"
#include "AudioA2DP.h"

using namespace audio_tools;

// I2S<int32_t> i2s;
I2SStream i2sStream;                            // Access I2S as stream
A2DPStream a2dpStream = A2DPStream::instance(); // access A2DP as stream
// ChannelConverter<int32_t> converter(&convertFrom32To16);
// ConverterFillLeftAndRight<int32_t> bothChannels;
StreamCopy copier(a2dpStream, i2sStream); // copy i2sStream to a2dpStream

// Arduino Setup
void setup(void)
{
    Serial.begin(115200);

    // start bluetooth
    a2dpStream.begin(TX_MODE, "Mpow M30");
    Serial.println("A2DP is connected now...");

    // start i2s input with default configuration
    Serial.println("starting I2S...");
    I2SConfig config = i2sStream.defaultConfig(RX_MODE);
    config.sample_rate = 44100;
    config.channels = 2;
    config.bits_per_sample = 16;
    i2sStream.begin(config);

    Serial.println("I'm at the end of SETUP");
}

// Arduino loop - copy data
void loop()
{
    if (a2dpStream)
    {
        Serial.println("I'm in the LOOP");
        copier.copy();
    }
}

problems with getting basic-a2dp-audiokit and player-sd-audiokit running

Hello @pschatzmann

I have some troubles with running basic-a2dp-audiokit and player-sd-audiokit from arduino-audio-tools. I use PlatformIO. I have cloned all necessary libraries and I am able to build and upload both examples successfully. However, when I try to run the uploaded code serial monitor output shows many errors which are i2c related, as well as codec init failure and SD init failure and there is no sound. The hardware I use is ESP32-A1S AI-Thinker Audiokit. BTW, I have used two audiokit boards and the result is the same on each of them. I want to use built-in DAC.

Below I attach output from basic-a2dp-audiokit and player-sd-audiokit

basic-a2dp-audiokit:

Rebooting...
ets Jun 8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x1f (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[D][esp32-hal-i2c.c:1353] i2cProcQueue(): Gross Timeout Dead start=0x12, end=0x44, =50, max=50 error=0
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=0
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=0
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=0
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=1
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 3
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[D][esp32-hal-i2c.c:1353] i2cProcQueue(): Gross Timeout Dead start=0x1c5, end=0x1f7, =50, max=50 error=5
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=100
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=0
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=1
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 3
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[D][esp32-hal-i2c.c:1353] i2cProcQueue(): Gross Timeout Dead start=0x599, end=0x5cb, =50, max=50 error=5
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=100
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=0
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=1
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 3
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbfeec
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffba738
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffba7c0 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffbdb10
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffba79c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=0
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=1
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
Error: codec init failed!
Error: audio_hal_init
Error: audio_hal handle is null
[D][BluetoothA2DPSink.cpp:123] start(): start
[I][BluetoothA2DPCommon.cpp:207] log_free_heap(): Available Heap: 227608
[I][BluetoothA2DPSink.cpp:136] start(): Device name will be set to 'AudioKit'
[D][BluetoothA2DPSink.cpp:1006] init_nvs(): init_nvs
[D][BluetoothA2DPCommon.cpp:113] get_last_connection(): get_last_connection
[D][BluetoothA2DPCommon.cpp:137] get_last_connection(): => 38:65:b2:80:0a:fe
[I][BluetoothA2DPSink.cpp:184] init_i2s(): init_i2s
[D][BluetoothA2DPSink.cpp:266] init_bluetooth(): init_bluetooth
[I][BluetoothA2DPSink.cpp:271] init_bluetooth(): controller initialized
[I][BluetoothA2DPSink.cpp:280] init_bluetooth(): bluedroid initialized
[I][BluetoothA2DPSink.cpp:289] init_bluetooth(): bluedroid enabled
[D][BluetoothA2DPSink.cpp:387] app_task_start_up(): app_task_start_up
[D][BluetoothA2DPSink.cpp:1112] ccall_app_task_handler(): ccall_app_task_handler
[D][BluetoothA2DPSink.cpp:358] app_task_handler(): app_task_handler
[D][BluetoothA2DPSink.cpp:310] app_work_dispatch(): app_work_dispatch event 0x0, param len 0
[D][BluetoothA2DPSink.cpp:342] app_send_msg(): app_send_msg
[D][BluetoothA2DPSink.cpp:365] app_task_handler(): app_task_handler, sig 0x1, 0x0
[I][BluetoothA2DPSink.cpp:368] app_task_handler(): app_task_handler, APP_SIG_WORK_DISPATCH sig: 1
[D][BluetoothA2DPSink.cpp:333] app_work_dispatched(): app_work_dispatched
[D][BluetoothA2DPSink.cpp:1142] ccall_av_hdl_stack_evt(): ccall_av_hdl_stack_evt
[D][BluetoothA2DPSink.cpp:834] av_hdl_stack_evt(): av_hdl_stack_evt evt 0
[D][BluetoothA2DPSink.cpp:839] av_hdl_stack_evt(): av_hdl_stack_evt av_hdl_stack_evt BT_APP_EVT_STACK_UP
[D][BluetoothA2DPSink.cpp:848] av_hdl_stack_evt(): AVRCP controller initialized!
[D][BluetoothA2DPSink.cpp:883] av_hdl_stack_evt(): connect_to_last_device
[D][BluetoothA2DPCommon.cpp:177] connect_to_last_device(): connect_to_last_device
[D][BluetoothA2DPSink.cpp:888] av_hdl_stack_evt(): set_scan_mode_connD]talue(orte)2
P[I][.lcpt:o1hA] PCammo_.app:2a5] cel_saan_mo):_ ocnectabpe(2d_sat_scak_mo[e][onleetoblh 2rPe
nk.cIp[Blu4t ophA2aPCommol.bpc:20: alog_2rec_llapck: A[aDlaBlu teop:A1D936Si
k.cpp:908] app_a2d_callback(): app_a2d_callback ESP_A2D_CONNECTION_STATE_EVT
[D][BluetoothA2DPSink.cpp:310] app_work_dispatch(): app_work_dispatch event 0x0, param len 16
[D][BluetoothA2DPSink.cpp:342] app_send_msg(): app_send_msg
[D][BluetoothA2DPSink.cpp:365] app_task_handler(): app_task_handler, sig 0x1, 0x0
[I][BluetoothA2DPSink.cpp:368] app_task_handler(): app_task_handler, APP_SIG_WORK_DISPATCH sig: 1
[D][BluetoothA2DPSink.cpp:333] app_work_dispatched(): app_work_dispatched
[D][BluetoothA2DPSink.cpp:1156] ccall_av_hdl_a2d_evt(): ccall_av_hdl_a2d_evt
[D][BluetoothA2DPSink.cpp:536] av_hdl_a2d_evt(): av_hdl_a2d_evt evt 0
[D][BluetoothA2DPSink.cpp:540] av_hdl_a2d_evt(): av_hdl_a2d_evt ESP_A2D_CONNECTION_STATE_EVT
[D][BluetoothA2DPSink.cpp:641] handle_connection_state(): handle_connection_state evt 0
[I][BluetoothA2DPSink.cpp:646] handle_connection_state(): partner address: 38:65:b2:80:0a:fe
[I][BluetoothA2DPSink.cpp:654] handle_connection_state(): A2DP connection state: Connecting, [38:65:b2:80:0a:fe]
[I][BluetoothA2DPSink.cpp:726] handle_connection_state(): ESP_A2D_CONNECTION_STATE_CONNECTING
[D][BluetoothA2DPSink.cpp:1124] ccall_app_a2d_callback(): ccall_app_a2d_callback
[D][BluetoothA2DPSink.cpp:904] app_a2d_callback(): app_a2d_callback
[D][BluetoothA2DPSink.cpp:917] app_a2d_callback(): app_a2d_callback ESP_A2D_AUDIO_CFG_EVT
[D][BluetoothA2DPSink.cpp:310] app_work_dispatch(): app_work_dispatch event 0x2, param len 16
[D][BluetoothA2DPSink.cpp:342] app_send_msg(): app_send_msg
[D][BluetoothA2DPSink.cpp:365] app_task_handler(): app_task_handler, sig 0x1, 0x2
[I][BluetoothA2DPSink.cpp:368] app_task_handler(): app_task_handler, APP_SIG_WORK_DISPATCH sig: 1
[D][BluetoothA2DPSink.cpp:333] app_work_dispatched(): app_work_dispatched
[D][BluetoothA2DPSink.cpp:1156] ccall_av_hdl_a2d_evt(): ccall_av_hdl_a2d_evt
[D][BluetoothA2DPSink.cpp:536] av_hdl_a2d_evt(): av_hdl_a2d_evt evt 2
[D][BluetoothA2DPSink.cpp:550] av_hdl_a2d_evt(): av_hdl_a2d_evt ESP_A2D_AUDIO_CFG_EVT
[D][BluetoothA2DPSink.cpp:575] handle_audio_cfg(): handle_audio_cfg evt 2
[I][BluetoothA2DPSink.cpp:578] handle_audio_cfg(): a2dp audio_cfg_cb , codec type 0
[I][BluetoothA2DPSink.cpp:590] handle_audio_cfg(): a2dp audio_cfg_cb , sample_rate 44100
[D][BluetoothA2DPSink.cpp:1124] ccall_app_a2d_callback(): ccall_app_a2d_callback
[D][BluetoothA2DPSink.cpp:904] app_a2d_callback(): app_a2d_callback
[D][BluetoothA2DPSink.cpp:908] app_a2d_callback(): app_a2d_callback ESP_A2D_CONNECTION_STATE_EVT
[D][BluetoothA2DPSink.cpp:310] app_work_dispatch(): app_work_dispatch event 0x0, p

player-sd-audiokit
ts Jun 8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x1f (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
[I] I2SConfig.h : 66 - rx/tx mode: TX
[I] I2SConfig.h : 67 - port_no: 0
[I] I2SConfig.h : 68 - is_master: Master
[I] I2SConfig.h : 69 - sample rate: 44100
[I] I2SConfig.h : 70 - bits per sample: 16
[I] I2SConfig.h : 71 - number of channels: 2
[I] I2SConfig.h : 72 - i2s_format: I2S_STD_FORMAT
[I] I2SConfig.h : 80 - pin_bck: 14
[I] I2SConfig.h : 81 - pin_ws: 15
[I] I2SConfig.h : 82 - pin_data: 22
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
[I][esp32-hal-i2c.c:1138] i2cProcQueue(): Bus busy, reinit
[W][esp32-hal-i2c.c:1419] i2cCheckLineState(): invalid state sda(18)=1, scl(23)=0
[D][esp32-hal-i2c.c:1427] i2cCheckLineState(): Recovered after 1 Cycles
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbf5ac
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb8480
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=5
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8508 bits=112
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb853c
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb84e4
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=-1
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
Error: ->Wire.endTransmission: 4
Error: codec init failed!
Error: audio_hal_init
[I] AudioKit.h : 188 - Channels 2->2
[I] AudioOutput.h : 737 - void audio_tools::FormatConverterStream::setup()
[I] AudioOutput.h : 750 - FormatConverterStream: no conversion
[I] AudioKit.h : 480 - void audio_tools::AudioKitStream::setupActions()
[I] AudioActions.h : 36 - ActionLogic::add pin: 19
[I] AudioActions.h : 52 - pin 19 -> INPUT_PULLUP
[I] AudioActions.h : 36 - ActionLogic::add pin: 13
[I] AudioActions.h : 52 - pin 13 -> INPUT_PULLUP
[I] AudioActions.h : 36 - ActionLogic::add pin: 27
[I] AudioActions.h : 52 - pin 27 -> INPUT_PULLUP
Error: audio_hal handle is null
[I] AudioKit.h : 269 - void audio_tools::AudioKitStream::addAction(int, void ()(bool, int, void), audio_tools::AudioActions::ActiveLogic, void*)
[I] AudioActions.h : 36 - ActionLogic::add pin: 32
[I] AudioActions.h : 52 - pin 32 -> INPUT_PULLUP
[I] AudioKit.h : 269 - void audio_tools::AudioKitStream::addAction(int, void ()(bool, int, void), audio_tools::AudioActions::ActiveLogic, void*)
[I] AudioActions.h : 36 - ActionLogic::add pin: 33
[I] AudioActions.h : 52 - pin 33 -> INPUT_PULLUP
[I] AudioPlayer.h : 733 - setVolume(0.700000)
[I] AudioOutput.h : 450 - setVolume: 0.700000
[E] AudioPlayer.h : 209 - SD.begin failed!

--- exit ---

Please write if some additional information on the issue is necessary.

Thanks in advance.

Reset last Bluetooth connection like set_auto_reconnect(false);

Hello @pschatzmann

I worked with examples for streaming audio from ADC to A2DP.
https://github.com/pschatzmann/arduino-audio-tools/tree/main/examples/examples-basic-api/base-adc-a2dp

Here when I wanted to reset last Bluetooth connection i used this line.
a2dp_source.set_auto_reconnect(false);

Then I switched to I2S on this, which worked well for me.
https://github.com/pschatzmann/arduino-audio-tools/tree/main/examples/examples-stream/streams-i2s-a2dp

But here I don't have the option to stop auto reconnection.

Can you suggest how should I do it?

Thank you.

url_mp3 to a2dp

Hi, Can we use the tool to stream mp3 URL to Bluetooth speaker? I am thinking of building a radio receiver playing to Bluetooth speakers or headphones?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.