Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Louder ESP32 (TAS5805M) configuration #327

Closed
DerPicknicker opened this issue Oct 7, 2023 · 71 comments
Closed

Louder ESP32 (TAS5805M) configuration #327

DerPicknicker opened this issue Oct 7, 2023 · 71 comments
Labels
Hardware configuration Hardware support and configuration

Comments

@DerPicknicker
Copy link

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
Copy link
Owner

sle118 commented Oct 7, 2023

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
Copy link
Author

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
Copy link
Owner

sle118 commented Oct 7, 2023

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
Copy link
Author

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
Copy link
Collaborator

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

@DerPicknicker
Copy link
Author

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
Copy link
Collaborator

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
Copy link
Author

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
Copy link
Author

@sle118 ..

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

@sle118
Copy link
Owner

sle118 commented Oct 8, 2023

@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
Copy link
Author

DerPicknicker commented Oct 9, 2023

@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
Copy link
Owner

sle118 commented Oct 10, 2023

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
Copy link
Author

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
Copy link
Collaborator

philippe44 commented Oct 10, 2023

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
Copy link
Author

DerPicknicker commented Oct 10, 2023

@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
Copy link
Collaborator

philippe44 commented Oct 10, 2023

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
Copy link

haldi4803 commented Oct 10, 2023

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
Copy link
Author

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

@haldi4803
Copy link

haldi4803 commented Oct 10, 2023

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
Copy link
Author

Ping @sle118 & @philippe44

@haldi4803
Copy link

haldi4803 commented Oct 10, 2023

INDEED!
Found it.
set_GPIO 33=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
Copy link
Collaborator

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

@haldi4803
Copy link

haldi4803 commented Oct 10, 2023

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
Copy link
Collaborator

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

@philippe44
Copy link
Collaborator

philippe44 commented Oct 10, 2023

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
Copy link
Collaborator

philippe44 commented Oct 10, 2023

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

@anabolyc
Copy link

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
Copy link
Author

@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
Copy link

@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
Copy link

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
Copy link

anabolyc commented Oct 12, 2023 via email

@philippe44
Copy link
Collaborator

philippe44 commented Oct 12, 2023

@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
Copy link
Owner

sle118 commented Oct 12, 2023

@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
Copy link
Author

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

@haldi4803
Copy link

@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.

@haldi4803
Copy link

i hate json so much....
But it's working! Automatically Boots up AMP, goes to AMP Deepsleep instantly, and when you play a tune it goes to play mode. if you turn the ESP-Louder of in LMS it goes back to DeepSleep and uses about 0.27-0.33W

(standard version not the one with delay and GPIO pins in controlset)

dac_controlset: {"init":[{"reg":3,"val":2},{"reg":3,"val":3}],"poweron":[{"reg":3,"val":3}],"poweroff":[{"reg":3,"val":0}]}

i increased the Stream and Output Buffer from 500:1000 to 1000:2000 because i still have enough free RAM that way.
Or not?
image

here is the nvs config @sle118
nvs_config_ESPLouder_1697127125985json.txt

@sle118
Copy link
Owner

sle118 commented Oct 13, 2023

I would suggest not tweaking buffers unless you're trying to fix an issue. Memory is precious and some operations could momentarily need more RAM for a small peak of time. @philippe44 might have a different opinion, as he's the king of RAM optimizations.

I'll try to incorporate the NVS to the presets soon if you are ok with that config

@haldi4803
Copy link

I think it works really well like that.

@DerPicknicker
Copy link
Author

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

@sle118 ..?

@sle118
Copy link
Owner

sle118 commented Oct 13, 2023

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

@sle118 ..?

By passing the word around and converting other people to the project I guess. Up until now, we were always driven by the challenge and fun of doing this and pushing the limits on this little device. So for me, showing signs of appreciations and knowing this project helps others is already a good thing.

@sle118 sle118 changed the title Is this I2S Dac TAS5805M supported? Louder ESP32 (TAS5805M) configuration Oct 13, 2023
@sle118 sle118 added the Hardware configuration Hardware support and configuration label Oct 13, 2023
@sle118
Copy link
Owner

sle118 commented Oct 13, 2023

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 ;)

Some companies have done it and our licence allows it. For example the DAC32.
https://vortexbox.co.uk/shop?store-page=DAC32-WiFi-Multi-Player-p429428713

@DerPicknicker
Copy link
Author

DerPicknicker commented Oct 14, 2023

@sle118 ...

Did you add the ESPLouder Config in the general Build..?

EDIT: Do you think you can combine Ethernet with ESPLouder..? The Pins are not the Problem (there are plenty of them available...), but do I need to use the SPI-Multiplexer pins or its just optional if you want to get more speed...?
Some of the multiplexer pins are used by the amplifier.. So I want to use the W5500 Ethernet option.

@philippe44
Copy link
Collaborator

philippe44 commented Oct 14, 2023

I usually wait till configurations are fully validated by a few users before making it built-in. Re SPI, yes you can. I have a board with SPI used for W5500, a display and a GPIO expander.

@philippe44
Copy link
Collaborator

EDIT: Do you think you can combine Ethernet with ESPLouder..? The Pins are not the Problem (there are plenty of them available...), but do I need to use the SPI-Multiplexer pins or its just optional if you want to get more speed...? Some of the multiplexer pins are used by the amplifier.. So I want to use the W5500 Ethernet option.

Also, if you are referring to the usage of the special pins for SPI in the GPIO matrix mux that gives you up to 40MHz speed, yes using these is optional, you just won't get full speed as mentioned here https://docs.espressif.com/projects/esp-idf/en/v4.3.6/esp32/api-reference/peripherals/spi_master.html#gpio-matrix-and-io-mux

@DerPicknicker
Copy link
Author

@philippe44 ..

I will buy one of the LouderESP. I will test the config. If it works fine would be great if you would add the config in the general build. I will try to buy one soon... I am doing some research which loudpeakers are great for the rooms with an small footprint.. My big ones are to big for each room 😅

@haldi4803
Copy link

I am doing some research which loudpeakers are great for the rooms with an small footprint.

And what are your findings?
Didn't get many decent answers when I asked ...

@DerPicknicker
Copy link
Author

I am doing some research which loudpeakers are great for the rooms with an small footprint.

And what are your findings?

Didn't get many decent answers when I asked ...

Nothing special:

  • Quadral Aurum 3 (quite small but great bass)
  • Dali OnWall
    ...
    But I am still searching for an good single speaker for each room like an Amazon echo but with much better sound.

@philippe44
Copy link
Collaborator

philippe44 commented Oct 15, 2023

@philippe44 ..

I will buy one of the LouderESP. I will test the config. If it works fine would be great if you would add the config in the general build. I will try to buy one soon... I am doing some research which loudpeakers are great for the rooms with an small footprint.. My big ones are to big for each room 😅

There are 2 levels of integration, one is really just add a built-in JSON dac_controlset and the other is direct C code driver-type. Once you are 100% sure of the config and as said, another user confirmed it, I'll see what's the best option.

@DerPicknicker
Copy link
Author

Hi @sle118 , @philippe44 , @haldi4803

just want to inform you that I ordered 2 Louder Kits. Hope I get them soon. Then I can test the config and give you the feedback for the integration ;-)

@IstotaZycia
Copy link

Hey all,
I'm new in this project, but following it for a quite time.
I go through the conversation and see the case here.

I have also ordered the HW from @anabolyc and I'm eager to test it out! :)
So I can be the tester here.

@haldi4803
Copy link

@anabolyc
Reading from Register 113 i get the answer 0x04 which would indicate a Clock fault.
image

But i have no clue which clock that might be... or if its true.

7.5.3.3.5 Clock Fault
Once there has any Clock error occurs (Clock Halt, SCLK/LRCLK Ratio Error, Pll unlock, FS error) , Register
0x37 and Register 0x39 monitor these errors and real-time report with details, device will enter into Hi-Z mode.
Clock Fault reported in Register 0x71 in Book0/Page0. Once the clock error been removed, device will come
back to play mode automatically. But this bit still keeps 1 unless clear it by Register 0x78 in Book0/Page0 manually.

Would indicate that it's some minor useless issue while booting and nothing to care about?
Setting registry 120 to 0x80 does clear that.

Register 40 SIG_CH_CTRL shows 0000 which should be Auto Mode.
Register 55 FS_MON results 0x09 which would be 48 Khz.
Register 56 BCK_MON results 0x20 but the description doesn't really help there...
These bits indicate the currently detected BCK ratio, the number of BCK clocks in one audio frame. BCK = 32 FS~512 FS
Register 57 CLKDET_STATUS results in 0x08 which is "This bit indicates whether the PLL is locked or not. The PLL will be reported as unlocked when it is disabled" and probably irrelevant.

@anabolyc
Copy link

anabolyc commented Nov 2, 2023

@haldi4803 I'm getting 0x04 reading from 0x71 register on my bear minimum code as well. Not sure if one should be concerned unless it comes back consistently after reset.
For the rest of your findings, looks fine to me. One way to know for sure is to check TI forums or Ask TI themselves. I can post question if you place it here

@DerPicknicker
Copy link
Author

DerPicknicker commented Nov 8, 2023

@haldi4803 ...

Which power supply are you using.. Did you get WiFi with external power supply?

I am asking because I have some strange behaviour and I want to find out if it comes from a bad power supply.

@philippe44 .. The config @haldi4803 provides works fine. I can confirm that the board works with squeezelite.

If I have some other questions from the technical side. Where should I ask them. Here as an GitHub issue or as a discussion. I tested AirPlay and I got it working but not very stable. How should communicate my issues..?

Thanks to all.

@haldi4803
Copy link

Which power supply are you using.. Did you get WiFi with external power supply?

Maximum 17V

@sle118
Copy link
Owner

sle118 commented Nov 8, 2023

@haldi4803 ...

Which power supply are you using.. Did you get WiFi with external power supply?

I am asking because I have some strange behaviour and I want to find out if it comes from a bad power supply.

@philippe44 .. The config @haldi4803 provides works fine. I can confirm that the board works with squeezelite.

If I have some other questions from the technical side. Where should I ask them. Here as an GitHub issue or as a discussion. I tested AirPlay and I got it working but not very stable. How should communicate my issues..?

Thanks to all.

I could move this issue to a conversation, which seems more appropriate for the thread content so far. Issues should be opened using the provided template which provides enough info to get started with troubleshooting.

@haldi4803
Copy link

As this isn't really an issue but more a hardware config, so no software changes needed, i think this would be better suited in a discussion!

Repository owner locked and limited conversation to collaborators Nov 8, 2023
@sle118 sle118 converted this issue into discussion #357 Nov 8, 2023

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
Hardware configuration Hardware support and configuration
Projects
None yet
Development

No branches or pull requests

6 participants