sle118 / squeezelite-esp32

ESP32 Music streaming based on Squeezelite, with support for multi-room sync, AirPlay, Bluetooth, Hardware buttons, display and more
1.26k stars 115 forks source link

Louder ESP32 (TAS5805M) configuration #327

Closed DerPicknicker closed 1 year ago

DerPicknicker commented 1 year ago

Hi guys,

I am planing to build a device with this great software. But I am not sure if the software supports that specific i2s dac (TAS5805M)... I am planning to buy one of these: https://www.tindie.com/products/sonocotta/louder-esp32/

Another question: The central unit is the LMS. The multiroom-sync is done on the LMS, right? So if I stream to LMS I can select the device inside the webUI, the esp32 is not involved in that right? How long does it take to start the stream in LMS and the esp32 starts playing?

Best regards

sle118 commented 1 year ago

Hi guys,

I am planing to build a device with this great software. But I am not sure if the software supports that specific i2s dac (TAS5805M)... I am planning to buy one of these: https://www.tindie.com/products/sonocotta/louder-esp32/ @philippe44 added the ability to send commands to DAC for models that aren't supported or of the box. So it is definitely doable with a bit of configuration. Alternatively, I think @philippe44 still has some SqueezeAmp in stock, which he sells at cost.

Another question: The central unit is the LMS. The multiroom-sync is done on the LMS, right? So if I stream to LMS I can select the device inside the webUI, the esp32 is not involved in that right? How long does it take to start the stream in LMS and the esp32 starts playing? You are correct. When LMS is used to stream audio, you can either use LMS web UI or one of the excellent control applications for Android or Apple devices. Our firmware boots in under 7 seconds and is ready to playback from there. The delay for playback from LMS is short but depends on your source. Local playback is relatively quick with very little delay. Streaming from Spotify involves a couple more things on the server but not a lot more delay.

It is possible to synchronize several players and LMS sends corrections when needed. Personally, I sync 3 zones on a regular basis, 2 of which are in the same space and you could swear that they are hard wired together.

DerPicknicker commented 1 year ago

Hi @sle118 ...

thank you for the response.. I want to know if I buy one if you would support me to get this thing running.

Do you know how much the SqueezeAmp is?

Do you think I can build a 2.1 System wirelessly? So that I can group a subwoofer, two smaller speakers as one group and the sub is playing the lower frequencies and the other speaker are playing the other frequencies?

@philippe44 Is this board pre-soldered? How much are them and does it have an external antenna?

sle118 commented 1 year ago

thank you for the response.. I want to know if I buy one if you would support me to get this thing running.

Since we don't have one of these devices, we can't really help, but we can certainly provide some guidance, although the Logitech forums are probably a better place to get some support. Others have configured different DAC themselves.

Do you know how much the SqueezeAmp is?

Can't remember. You should have a read here: https://forums.slimdevices.com/forum/user-forums/3rd-party-hardware/108002-announce-the-squeezeamp-next-generation-squeezeboxen-amplifier-receiver

I think there are some infos towards the end.

Do you think I can build a 2.1 System wirelessly? So that I can group a subwoofer, two smaller speakers as one group and the sub is playing the lower frequencies and the other speaker are playing the other frequencies?

I have not tried that and not sure how cross over would work, but I suspect it's possible. @philippe44?

@philippe44 Is this board pre-soldered? How much are them and does it have an external antenna?

They are pre soldered, yes, but no external antenna. They are also perfect for turning a pair of old speakers into a battery powered portable wireless speakers (I built two of these for my own usage). You can stream Bluetooth, AirPlay and Spotify (in addition to LMS of course)

DerPicknicker commented 1 year ago

I will buy one of the tindy ones.. It's quite cheap and for my usecase it's ideal. Should I create an GitHub issue or post it in the linked forum?

philippe44 commented 1 year ago

The SqueezeAMP is fully assembled and comes with a case https://github.com/philippe44/SqueezeAMP

DerPicknicker commented 1 year ago

The SqueezeAMP is fully assembled and comes with a case https://github.com/philippe44/SqueezeAMP

Could you give me a figure how much is anSquerzeAMP? I found a old number in the thread (around 60$) is that still valid?

Do you think a wireless 2.1 System is possible? I am still thinking about the Tindie Offer for me the shipment is quite low and the price 20€ incl. esp32 seems fair. Do you have an link where I can check the manual config? I searched here in the GitHub but I found only something for tested hardware... Thank you in advance!

philippe44 commented 1 year ago

I just did a batch a few weeks ago. It cost me 58USD per unit, that include a casing. Shipment is usually USD12. It's a non-profit thing, means I'm just passing the cost the PCB assembly house is charging me + taxes. You could do a 2.1 but that needs more one device. The TI chip on SqueezeAMP is not 2.1

DerPicknicker commented 1 year ago

Hi @philippe44 ...

Thank you for the response.. I will think about. For now I will test it first with a cheaper one. I meant that the 2.1 system is controlled by LMS so that LMS sends the Bass-Channel to a different esp32 than the 2 speaker channels.

DerPicknicker commented 1 year ago

@sle118 ..

I found a max98357a in my electronics box. Can I use this for testing it out?

sle118 commented 1 year ago

@sle118 ..

I found a max98357a in my electronics box. Can I use this for testing it out?

Most definitely yes. These i2s boards don't have an active i2c communication interface and therefore don't require commands to be sent for them to work. Just hook it up to a WROVER and you're good to go. Since i2s is a one way protocol, you could also probably just wire up these in parallel (e.g. one for speakers and one for sub, although these don't provide much power), but experimenting is the best way to find out

DerPicknicker commented 1 year ago

@sle118 ...

Thank you for your great Response.. I will try that as soon as possible. For now I tested only two x86 Devices (Mac and windows) I am blown away: Bad Wifi signal but it's still totally in sync. I just had to increase the delay of one player about 6ms... but it's awesome. What a Cool tech.. Now I will never buy Sonos stuff. Its crazy how good that LMS handles that.. Now I am thinking about buying Squeezeboxes lol...

TLDR: I am blown away. Now I can really think about using ESP32... Lets see.

sle118 commented 1 year ago

Best advice is to go and scourge the forums as they are a massive pile of unstructured knowledge.

Fun fact is that slimproto, which is at the heart of most features including sync, is close to 20 years old or so, and was so well thought of that it still works wonder today. https://en.m.wikipedia.org/wiki/Slim_Devices

The main reason I started this port of squeezelite to the esp32 with the invaluable contribution of Philippe (seriously, the project wouldn't be closer to half of what it is without him) was that squeezebox devices were hard to find and expensive. So our goal was to come up with a platform that could totally replace original hardware while being accessible by enthusiasts for a low cost.

DerPicknicker commented 1 year ago

Here the Logitech Squeezes are cheap. A touch one cost around 50$ - 80$ and Radio ones starting at 35$...

Only the duet is quite expensive 120$.. This device looks still quite Cool.

@sle118 Just for my understanding the S3 are not part of the official release. Does it have big impacts on the performance? I thought the CPU is basically the same.I have some S3 laying around. But my development setup is already migrated to IDF 5, so would it be possible IF the performance is really improved about the normal esp32 that you can send me a pre-build binary?

philippe44 commented 1 year ago

I've made a build for the s3 and all the code currently checked-in works on s3, I have one device working. @wizmo is tweaking it. You need esp-idf 4.4 at minimum. There a BIG improvement in CPU because of the memory and if you chose Octal SPI and Octal SPIRAM, it's 1/3 of the esp32 CPU., but you lose BT.

DerPicknicker commented 1 year ago

@philippe44 ..

I will try to build that. If not I will stay on esp32. My model has 16mb Flash and 8mb ram. Great model and cheap (8$..)

Do you know how long it will take until the S3 is also available as an "official" release?

Is there a way to support the development in a monetary way? I can't support coding, only testing due the small amount of Time...

philippe44 commented 1 year ago

It's a matter of finding the time for @sle118 and myself. But it should easily build - I'm building it everyday with the same code. I did all the heavy lifting last summer.

haldi4803 commented 1 year ago

I've got an ESP-Louder here. ~~Tried to flash generic image via Webinstaller. But that bootloops. I assume cuz it comes with a WemosD32 included which as a WROOM module but the ESP32 Louder has 4MB PSRAM on the AMP Board so you need to included that while building i assume.~~ Edit: Web Flasher was broken at that time!

Louder ESP

  | I2S CLK | I2S DATA | I2S WS | PSRAM CE | PSRAM CLK | TAS5805 SDA | TAS5805 SCL | TAS5805 PWDN | TAS5805 FAULT -- | -- | -- | -- | -- | -- | -- | -- | -- | -- ESP32 | 26 | 22 | 25 | 16 | 17 | 21 | 27 | 33 | 34

Edit: Seems to be an issue with the Web Installer... did a full reflash of everything with ESP32 FlashTool and now it boots properly! image

Edit 2: Seems like i have some issues with the Setup... i don't get any Audio.

Pin Assignments
Device | Pin Name | GPIO Number | Type -- | -- | -- | -- scl | 27 | Configuration sda | 21 | Configuration bck | 26 | Configuration ws | 25 | Configuration do | 22 | Configuration sda | 21 | Configuration scl | 27 | Configuration mute | 33 | Configuration clk | 17 | Fixed cs | 16 | Fixed spiq_sd0_io | 7 | Fixed spid_sd1_io | 8 | Fixed spiwp_sd3_io | 10 | Fixed spihd_sd2_io | 9 | Fixed clk | 6 | Fixed cs | 11 | Fixed

I think i set the pins correctly right?

Only thing that's missing is the "I2C device address. e.g. 106" which i dont know. because the Scan ends empty. image

Edit3: okay okay i get it... the TAS5805M is still Offline... For other codecs that might require an I2C commands, please use the parameter "dac_controlset" that allows definition of simple commands to be sent over i2c for init, power, speakder and headset on and off using a JSON syntax:

Original Firmware uses the Command: Tas5805m.init(); Which can be found here and does: esp_err_t tas5805m::init()

{
    /* Register the PDN pin as output and write 1 to enable the TAS chip */
    gpio_config_t io_conf;
    io_conf.intr_type = GPIO_INTR_DISABLE;
    io_conf.mode = GPIO_MODE_OUTPUT;
    io_conf.pin_bit_mask = TAS5806M_GPIO_PDN_MASK;
    io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE;
    io_conf.pull_up_en = GPIO_PULLUP_DISABLE;
    gpio_config(&io_conf);
    gpio_set_level(TAS5806M_GPIO_PDN, 0);
    vTaskDelay(20 / portTICK_RATE_MS);
    gpio_set_level(TAS5806M_GPIO_PDN, 1);
    vTaskDelay(200 / portTICK_RATE_MS);

    /* initialize I2C to drive the TAS5806M */
    // ret = i2c_master_init();
    // if (ret != ESP_OK)
    // {
    //     ESP_LOGE(TAS5806M_TAG, "I2C could not be initialized.");
    //     return ret;
    // }

    return ESP_OK;
}
DerPicknicker commented 1 year ago

@haldi4803 ... So did you get it running with audio..?

haldi4803 commented 1 year ago

This is way over my head.... but as far as i get it we simply need to pull pin33 low and then high again to get the DAC to boot. But i have absolutely no idea how to do that on SqueezeElite-ESP32 Seems like i accidently set pin33 as mute.... but it's not like there is a damn mute button on Bluetooth or Airplay... so cant test. And i haven't found the command for mute via Serial either.

DerPicknicker commented 1 year ago

Ping @sle118 & @philippe44

haldi4803 commented 1 year ago

INDEED! Found it. set_GPIO33=vcc turned it on!

I (2372876) messaging: i2cdetect

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- 2d -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

------------------------------------------------------------------------------------
Detected the following devices (names provided by https://i2cdevices.org/addresses).
45 [2dh]- CAP1188 AD5248 AD5251 AD5252 CAT5171
--------

45 was correct. (found that in the other Code) #define TAS5806M_ADDRESS 0x2D /*!< 7-bit address with a 15k pull up resistor */

But it seems like the "init" is only the booting up... We still need the "begin" part as well.

void tas5805m::begin()
{
    /* sound is ready */
    log_d("I2S is ready, setup of the audio amp begin");
    vTaskDelay(1000 / portTICK_RATE_MS);

    /* set PDN to 1 */
    gpio_set_level(TAS5806M_GPIO_PDN, 1);
    vTaskDelay(100 / portTICK_RATE_MS);

    log_i("Setting to HI Z");
    ESP_ERROR_CHECK(_write_byte(0x03, 0x02));
    vTaskDelay(100 / portTICK_RATE_MS);

    log_i("Setting to PLAY");
    ESP_ERROR_CHECK(_write_byte(0x03, 0x03));

    vTaskDelay(100 / portTICK_RATE_MS);

    int ret;
    uint8_t h70 = 0, h71 = 0, h72 = 0;
    i2c_cmd_handle_t cmd = i2c_cmd_link_create();
    i2c_master_start(cmd);
    i2c_master_write_byte(cmd, TAS5806M_ADDRESS << 1 | WRITE_BIT, ACK_CHECK_EN);
    i2c_master_write_byte(cmd, 0x70, ACK_CHECK_EN);
    i2c_master_stop(cmd);
    ret = i2c_master_cmd_begin(I2C_TAS5806M_MASTER_NUM, cmd, 1000 / portTICK_RATE_MS);
    i2c_cmd_link_delete(cmd);
    if (ret != ESP_OK)
    {
        log_e("I2C ERROR");
    }
    vTaskDelay(1 / portTICK_RATE_MS);
    cmd = i2c_cmd_link_create();
    i2c_master_start(cmd);
    i2c_master_write_byte(cmd, TAS5806M_ADDRESS << 1 | READ_BIT, ACK_CHECK_EN);
    i2c_master_read_byte(cmd, &h70, ACK_VAL);
    i2c_master_read_byte(cmd, &h71, ACK_VAL);
    i2c_master_read_byte(cmd, &h72, NACK_VAL);
    i2c_master_stop(cmd);
    ret = i2c_master_cmd_begin(I2C_TAS5806M_MASTER_NUM, cmd, 1000 / portTICK_RATE_MS);
    i2c_cmd_link_delete(cmd);

    log_d("0x70 Register: %d", h70);
    log_d("0x71 Register: %d", h71);
    log_d("0x72 Register: %d", h72);
}

Not entirely sure what it does...

  log_i("Setting to HI Z");
    ESP_ERROR_CHECK(_write_byte(0x03, 0x02));
    vTaskDelay(100 / portTICK_RATE_MS);
    log_i("Setting to PLAY");
    ESP_ERROR_CHECK(_write_byte(0x03, 0x03));

esp_err_t tas5805m::_write_byte(uint8_t register_name, uint8_t value) seems to be:

define TAS5806M_DEVICE_CTRL_2_REGISTER 0x03

Edit: uhm yeah... Official Documentation on Chapter 7.5.3.1 states: image

philippe44 commented 1 year ago

You need to reproduce this using dac_controlset entry. The syntax is in the README

haldi4803 commented 1 year ago

Yeah...... plx halp.

{ <command>: [ {"reg":<register>,"val":<value>,"mode":<nothing>|"or"|"and"}, ... {{"reg":<register>,"val":<value>,"mode":<nothing>|"or"|"and"} ],
  <command>: [ {"reg":<register>,"val":<value>,"mode":<nothing>|"or"|"and"}, ... {{"reg":<register>,"val":<value>,"mode":<nothing>|"or"|"and"} ],
  ... }

Taking by example the SourceCode for others.

        config DAC_CONTROLSET
            string
            default "{ \"init\": [ {\"reg\":41, \"val\":128}, {\"reg\":18, \"val\":255} ], \"poweron\": [ {\"reg\":18, \"val\":64, \"mode\":\"or\"} ], \"poweroff\": [ {\"reg\":18, \"val\":191, \"mode\":\"and\"} ] }" if TWATCH2020
            default "{\"init\":[ {\"reg\":0,\"val\":128}, {\"reg\":0,\"val\":0}, {\"reg\":25,\"val\":4}, {\"reg\":1,\"val\":80}, {\"reg\":2,\"val\":0}, {\"reg\":8,\"val\":0}, {\"reg\":4,\"val\":192}, {\"reg\":0,\"val\":18}, {\"reg\":1,\"val\":0}, {\"reg\":23,\"val\":24}, {\"reg\":24,\"val\":2}, {\"reg\":38,\"val\":9}, {\"reg\":39,\"val\":144}, {\"reg\":42,\"val\":144}, {\"reg\":43,\"val\":128}, {\"reg\":45,\"val\":128}, {\"reg\":27,\"val\":0}, {\"reg\":26,\"val\":0}, {\"reg\":2,\"val\":240}, {\"reg\":2,\"val\":0}, {\"reg\":29,\"val\":28}, {\"reg\":4,\"val\":48}, {\"reg\":25,\"val\":0}, {\"reg\":46,\"val\":33}, {\"reg\":47,\"val\":33} ]}" if MUSE
            default ""  

so we got the init command which sends the value 128 into the registry nr 41 ? and then 255 into reg 18

Going by his code to set hi Z ESP_ERROR_CHECK(_write_byte(0x03, 0x02)); which uses Registry 0x03 aka #define TAS5806M_DEVICE_CTRL_2_REGISTER 0x03 which should be Register 3 on offset 3h according to documentation on chapter 7.6.1.3 Setting it to 10 = hi-Z and 11 = Play or do i set that to 2 = hi-Z and 3 = Play as it does not support hex? the 5ms delay that is required there cannot be reproduced but is just a "let's hope thats slow enough" ?

That would end in: init:[{"reg":3, "val":2}, {"reg":3, "val":3}]

BTW i was wrong about set_GPIO.... after a reboot that does not work anymore -.- i2cdetect doesn't find the TAS5805M anymore. No matter what i do.

philippe44 commented 1 year ago

I can extend the json parser to include delay and gpio setting

philippe44 commented 1 year ago

Ok, it's done : you have 2 extra command words

"delay":<value in ms>
"gpio":<gpio number>,"level":<0|1>

See log to verify it works as expected, I've not tested it

philippe44 commented 1 year ago

You need to get the build artefacts directly, this version will not be released for now

anabolyc commented 1 year ago

Hey Folks

I'm the author of Louder-ESP and happy to help. I actually did run squeezelite-esp32 on it, and it worked great, but it took some effort, and I didn't document it unfortunately.

First of all, I'm happy to provide few samples to developers for delivery cost only (~$5), if any of you have commitment to actually run it. I would like to test it myself as well )

Second, there is software sample that includes all the necessary to bootstrap TAS5805 DAC. It is essentially startup pin bootstrap + sequence of I2C commands, nothing fancy.

Last point. Board provides external power connector (9..25V). It is not necessary for ESP32 when it is connected to USB, however it should be connected if you expect DAC to startup properly. Clearly you cannot pull ~50W of power of USB image

DerPicknicker commented 1 year ago

@anabolyc ...

I want to order some of them. But I am not a developer so I will do it on Tindie. If it's out of stock are you planning to re-stock them? Also in Future with an ESP32-S3...?

Another great option would be USB-C so you can get up to 20V via USB... Just in case you're planning to update the board.

anabolyc commented 1 year ago

@anabolyc ...

I want to order some of them. But I am not a developer so I will do it on Tindie. If it's out of stock are you planning to re-stock them? Also in Future with an ESP32-S3...?

I have 3 in stock still. With S3 so far not so many code samples with I2S, so I didn't foresee a lot of interest.

Another great option would be USB-C so you can get up to 20V via USB... Just in case you're planning to update the board.

Not that easy. You need negotiation IC to actually request it from charger. Which should support it as well, so.. maybe some day:)

haldi4803 commented 1 year ago

Another great option would be USB-C so you can get up to 20V via USB... Just in case you're planning to update the board.

Won't happen. The USB port is made for Data and not Power. If you want to Power via USB-c that's no issue. There are Adapter Cables that trigger Power Delivery Voltage to Jack. With 100W But you can't use it for Serial Data and Power at the same time.

BTT. Glad to hear you got it working once. Then that means the 5ms delay in booting should not be an issue. I'll try and fiddle around a bit more this evening. I was referring to your code to find out what exactly needs to happen to boot, but sadly I'm quite inexperienced in that field.

That would actually be quite a nice sales argument "Comes out of the box with working pre installed software" if the devs allow selling hardware with pre installed software.

anabolyc commented 1 year ago

That would actually be quite a nice sales argument "Comes out of the box with working pre installed software" if the devs allow selling hardware with pre installed software.

I don't think I should sell other people's software ;)

DerPicknicker commented 1 year ago

I will try to build the latest code from @philippe44 ... if it works I can test as well. I hope that IDF5 is working fine. It took me hours to get this running LOL.

@anabolyc I need more than 3. If esplouder works with the support of @haldi4803 I will definitely order some of them. I have some nice speakers laying around which I would like to use in a much modern way.

anabolyc commented 1 year ago

@anabolyc I need more than 3. If esplouder works with the support of @haldi4803 I will definitely order some of them. I have some nice speakers laying around which I would like to use in a much modern way.

As soon as it works, let me know, I'll request more from production.

philippe44 commented 1 year ago

@DerPicknicker - you don't need to rebuild. It's built but it will not appear in the official updates. You need to download from the "actions" artifacts

haldi4803 commented 1 year ago

@philippe44 sorry to bother you. The 5ms Delay does NOT seem to be needed. Edit: Nope -.- my stupid ass forgot to power off the Amp... he saves the last state as long as its powered on. Will try again tomorrow with the artifacts build.... /edit

current config: set_GPIO 33=vcc dac_controlset poweron:[{"reg":3, "val":2}, {"reg":3, "val":3}]

And it works when using via Bluetooth <3

Pin Assignments
Device | Pin Name | GPIO Number | Type -- | -- | -- | -- vcc | 33 | Configuration scl | 27 | Configuration sda | 21 | Configuration bck | 26 | Configuration ws | 25 | Configuration do | 22 | Configuration sda | 21 | Configuration scl | 27 | Configuration clk | 17 | Fixed cs | 16 | Fixed spiq_sd0_io | 7 | Fixed spid_sd1_io | 8 | Fixed spiwp_sd3_io | 10 | Fixed spihd_sd2_io | 9 | Fixed clk | 6 | Fixed cs | 11 | Fixed

@DerPicknicker It works! https://www.youtube.com/watch?v=lb_xFMpLdQw

P.S Just booting the device, not connected uses about 0.4W (no Web Interface open!) No Playback but connected to Bluetooth is abou 1.4W Droppping bluetooth connection goes down to 1.3W getting AMP into Deep Sleep mode drops it down to 0.3W-0.4W image

i tried using the poweroff command in DAC_Controls, but when exactly is that one triggered? speakeronand speakeroffmight be the better choises righ? But when do they trigger?

DerPicknicker commented 1 year ago

@haldi4803 ...

WOW! THANK YOU for this great documentation!

I have some Additional questions:

Thank you!

haldi4803 commented 1 year ago
* Does the Amp automatically switch to deepsleep?
* 0,4W with with WiFi connected? Could you try to open the webui and measure the voltage again..?

Nope... Still need to configure that correctly. Pretty sure it works somehow :) 0.4W in Idle with WiFI connected! When you have the WebUI open it jumps up to 0.8W-1.4W

DerPicknicker commented 1 year ago

0.4W in Idle with WiFI connected! When you have the WebUI open it jumps up to 0.8W-1.4W

If you found this out, this would be epic! 0,4W idle is nothing compared to Sonos and others.

haldi4803 commented 1 year ago

@anabolyc there is this knocking sound of the speakers, happening every now and then. https://www.youtube.com/watch?v=dQGN24mMhbs

any clue where that might be coming from? Audio isn't really my speciality. Buffer issues? Edit: Nope probably not... setting it to 128Kbits Encoding in LMS does the same.... so probably not buffer?

DerPicknicker commented 1 year ago

@haldi4803 ... I would check the powersupply and the connection to the speakers first.

haldi4803 commented 1 year ago

@haldi4803 ... I would check the powersupply and the connection to the speakers first.

Switched to a different Power Source still happening. I think it's happening left/right speaker separately so shouldnt be speaker cables?

anabolyc commented 1 year ago

I’d check if feeding data into i2s buffer is not interrupted by some other tasks. Do you guys use onboard spi ram for buffering?

On Wed, 11 Oct 2023 at 23:07 haldi4803 @.***> wrote:

@haldi4803 https://github.com/haldi4803 ... I would check the powersupply and the connection to the speakers first.

Switched to a different Power Source still happening. I think it's happening left/right speaker separately so shouldnt be speaker cables?

— Reply to this email directly, view it on GitHub https://github.com/sle118/squeezelite-esp32/issues/327#issuecomment-1758543025, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABJU6IZD5A3WLKCHKFUNLLLX64DBXANCNFSM6AAAAAA5WY3T3E . You are receiving this because you were mentioned.Message ID: @.***>

haldi4803 commented 1 year ago

@anabolyc seems to be an issue with the Voltage! Reduce it to 17V absolutly NO issues at all. Increase it to 19V. Here and there some issues. go up to 23V really bad Sound quality. so must be Power Supply related! Sorry :(

philippe44 commented 1 year ago

@haldi4803 ...

WOW! THANK YOU for this great documentation!

I have some Additional questions:

  • Does the Amp automatically switch to deepsleep?
  • 0,4W with with WiFi connected? Could you try to open the webui and measure the voltage again..?

Thank you!

Re power and speaker/headset, I've updated the README but basically it's when the dac or amplifier is powered on/off after the idle period (-C) and when you switch between headset and speakers using jack detection. It is not related to deep_sleep mode.

DerPicknicker commented 1 year ago

@philippe44 ..

So if i2c controlset is used the amp shutdowns via the command after some time, because no audio was released from the LMS right or did I misunderstood you?

anabolyc commented 1 year ago

Any signs of overheating?

On Wed, 11 Oct 2023 at 23:47 haldi4803 @.***> wrote:

@anabolyc https://github.com/anabolyc seems to be an issue with the Voltage! Reduce it to 17V absolutly NO issues at all. Increase it to 19V. Here and there some issues. go up to 23V really bad Sound quality. so must be Power Supply related! Sorry :(

— Reply to this email directly, view it on GitHub https://github.com/sle118/squeezelite-esp32/issues/327#issuecomment-1758594113, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABJU6I5BHWXMTHLYD565APDX64HYJANCNFSM6AAAAAA5WY3T3E . You are receiving this because you were mentioned.Message ID: @.***>

philippe44 commented 1 year ago

@philippe44 ..

So if i2c controlset is used the amp shutdowns via the command after some time, because no audio was released from the LMS right or did I misunderstood you?

There are 4 levels of power down 1- After N (-C <N> on squeezelite cmd line) seconds, a GPIO can be toggled and the 'power' json set of the dac_controlset is activated 2- When LMS turns off the player, another IO can be toggled 3- Finally, the esp32 will go to deep_sleep after idle timeout or on button press or gpio and suspend everything. Resume is on special gpio only and with restriction. Resume is reboot 4- and of course you can cut power 😄

sle118 commented 1 year ago

@haldi4803 can you or someone else with a working device save the NVS and share it here? I will add it too the list of known devices under hardware/preset options in the web UI so newcomers find it easier to configure

DerPicknicker commented 1 year ago

@sle118 ... Is there a way to support the development? Like Paetreon, BuyMeACoffee something in this direction?

haldi4803 commented 1 year ago

@haldi4803 can you or someone else with a working device save the NVS and share it here? I will add it too the list of known devices under hardware/preset options in the web UI so newcomers find it easier to configure

IF I have a fully working configuration. Yes. But right now it's not yet working as I want it to :) Doesn't automatically boot the AMP. Seems like I need to try with the delay.