Skip to content

Comments

merge develop to master #189

Open
CarlosDerSeher wants to merge 54 commits intomasterfrom
develop
Open

merge develop to master #189
CarlosDerSeher wants to merge 54 commits intomasterfrom
develop

Conversation

@CarlosDerSeher
Copy link
Owner

@CarlosDerSeher CarlosDerSeher commented Jan 18, 2026

Let's pull all those newest features to master

CarlosDerSeher and others added 30 commits October 31, 2024 12:31
enable both interfaces if configured from menuconfig

Signed-off-by: Karl Osterseher <karli_o@gmx.at>
…on config

change printf to ESP_LOGI in net_functions
add missing components to network interface

Signed-off-by: Karl Osterseher <karli_o@gmx.at>
add sdkconfig.defaults
change some warnings to verbose
in player if more than 16 bits are selected in i2s use I2S_MCLK_MULTIPLE_384
remove stream tags, add client info message to snapcast protocol

Signed-off-by: Karl Osterseher <karli_o@gmx.at>
Signed-off-by: Karl Osterseher <karli_o@gmx.at>
add OTA instructions
Signed-off-by: Karl Osterseher <karli_o@gmx.at>
Signed-off-by: Karl Osterseher <karli_o@gmx.at>
Signed-off-by: Karl Osterseher <karli_o@gmx.at>
…component

- add i2s channel delete to deinit_player()
- improve network interface component
  store IP and connection status of interfaces
- improve UI http server

Signed-off-by: Karl Osterseher <karli_o@gmx.at>
Signed-off-by: Karl Osterseher <karli_o@gmx.at>
add support for mixing stereo to mono through dsp_processor (fixes #106)
add sdkconfigs to github action workflow
suppress warnings from flac git submodule
remove unused variable and address some compiler warnings
remove some dead code

Signed-off-by: Karl Osterseher <karl_osterseher@gmx.at>
…running during upgrade

wait for free space in flac write callback if none can be aquired.

Signed-off-by: Karl Osterseher <karl_osterseher@gmx.at>
* Fix #include statement in main.c
* Fix typing in es8388.c
* Fix i2c_bus_write_data function
* Remove uneeded log statement
Signed-off-by: Karl Osterseher <karl_osterseher@gmx.at>
* [tas5805m] Add configuration for mono mixing (#115)

When bridge mode is active, by default, only the left input channel is send
to the output.

With the configuration, you can choose either the left or the right channel,
or a "mono" configuration which mix the two input channel.

Co-authored-by: Alex <alex@alexlg.org>

* Allow using pcm510a without dedicated mute pin. (#120)

If the pin number is set to a value <0, no GPIO actions are performed.

* Added sdkconfig for Olimex PoE Board and PCM5102A (#128)

* Add example config for Wireless-Tag WT32-ETH01 board with PCM5102A DAC (#130)

Co-authored-by: mat <mat@devtal.de>

* Update mute state in player task (#134)

* Fix issue where 100% volume is not restored after reboot (#137)

* Fix idf 5.4/5.5 build errors (#139)

* fix idf 5.4 build errors

* Remove errors from flac and opus

* close #126

---------

Co-authored-by: Jordi <jordiag@kth.se>

* Update default settings for snapcast. Does not contain dac/wifi/user settings

* Update readme (#142)

* Update README, fix typos

* Add AI-Thinker board to README

* Make TAS5805M power down pin configurable (#140)

* Make TAS5805M power down pin configurable
   defaults to pin 33
   defaults to pin 17 on esp32s3

* Fix soft volume

* Fix sdkconfig defaults. Disable ethernet

---------

Co-authored-by: Alexandre Thomazo <alex@thomazo.info>
Co-authored-by: Alex <alex@alexlg.org>
Co-authored-by: bg nerilex <bg@nerilex.org>
Co-authored-by: sneu14 <62690888+sneu14@users.noreply.github.com>
Co-authored-by: matmemo <33166560+matmemo@users.noreply.github.com>
Co-authored-by: mat <mat@devtal.de>
Co-authored-by: Manuel Blatt <45859907+blattm@users.noreply.github.com>
Co-authored-by: Jordi <jordiag@kth.se>
blattm and others added 9 commits November 7, 2025 00:03
…ovisioning is disabled

Signed-off-by: CarlosDerSeher <karl_osterseher@gmx.at>
Signed-off-by: CarlosDerSeher <karl_osterseher@gmx.at>
* TAS5805M driver improvements. Sleep mode when mute. State object for DAC state tracking. Added debug logging.

* Set correct mute flag on DAC restore

* Added revised state changes: independent MUTE flags and DAC power mode

* Volume implementation without a lookup table

* Changed lower border of volume slider to -60dB to provide better dynamic range

* Added missing enum value (for clarity)

---------

Co-authored-by: Andriy Malyshenko <andriy@sonocotta.com>
)

* Sync S3-related changes from master

* Implemented Improv deinit when Ip is received. Fixed IP discovery for Improv (was returning 0.0.0.0 all the times)

* Added improv deinit after timeout (3 minutes)

* wifi_provisioing depends in wifi_interface only

---------

Co-authored-by: Andriy Malyshenko <andriy@sonocotta.com>
I2C communication, init sequence, digital volume and mute (both software and pin mute) (#169)

Co-authored-by: Andriy Malyshenko <andriy@sonocotta.com>
…165)

Major features:
- Added web UI to manage DSP settings and change DSP flow on the fly
- Added UI to change mdns hostname and persist in NVS
- Added restart button to UI with improved placement
- Moved files from SPIFFS to flash embed

Architecture improvements:
- Refactored DSP settings into dedicated component
- Broke dependency loop between ui_http_server and dsp_processor
- Reversed dependency of dsp_processor on dsp_processor_settings
- Fully data-driven front-end implementation

Bug fixes and cleanup:
- Fixed build errors under ESP-IDF v5.1.5
- Fixed default DSP settings producing no sound
- Fixed static snapserver config in sdkconfig
- Added mutex protection to params_change
- Removed unused fc_2 and gain_2 parameters
- Added fail-safe defaults to freq and gain settings
- Code refactoring and cleanup

Co-authored-by: Andriy Malyshenko <andriy@sonocotta.com>
* rework sync algo

Signed-off-by: CarlosDerSeher <karl_osterseher@gmx.at>

* estimate sync quality based on pcm frames fed to DMA

fix #148

Signed-off-by: CarlosDerSeher <karl_osterseher@gmx.at>

* remove unsed variable in player

Signed-off-by: CarlosDerSeher <karl_osterseher@gmx.at>

* correct build errors

Signed-off-by: CarlosDerSeher <karl_osterseher@gmx.at>

* Kalmanfilter (#167)

* Implement Kalmann filter for latency

* Fix sdkconfig for esp32s3

* Reduce filter full threshold

* Implement feedback. Make sure static variables are initialized.

* - remove time sync message timer
  calling netconn API from 2 task isn't safe so set a timeout on netconn_receive
  and do sending those time messages directly from http_task
- ensure all resources used by player_task are created before the task is created
- do not reset latency buffer in start_player()

Signed-off-by: CarlosDerSeher <karl_osterseher@gmx.at>

* Fix reset latency buffer. Apply changes to all sdkconfigs.

* fix sdkconfig.defaults

* Add mising netconn_set_recvtimeout

* Cleanup default sdkconfigs

* fix typo

---------

Signed-off-by: CarlosDerSeher <karl_osterseher@gmx.at>
Co-authored-by: CarlosDerSeher <karl_osterseher@gmx.at>
# Conflicts:
#	README.md
#	components/improv_wifi/wifi_provisioning.c
#	components/network_interface/eth_interface.c
#	main/main.c
@CarlosDerSeher
Copy link
Owner Author

@anabolyc So I've had to resolve some conflicts manually. Could you please confirm I didnt't mess up anything, as these have been related to improv.

@anabolyc
Copy link
Contributor

@anabolyc So I've had to resolve some conflicts manually. Could you please confirm I didnt't mess up anything, as these have been related to improv.

Looks okay, although I didn't run it on actual hardware. Can try test that on weekend.

anabolyc and others added 10 commits January 21, 2026 20:47
* Added signal clamping
* Added cubic soft clipping to the DSP (config controled, disabled by default)

---------

Co-authored-by: Andriy Malyshenko <andriy@sonocotta.com>
When the server pauses playback, the player was repeating the last
audio block for ~2 seconds causing unpleasant noise. This was because
auto_clear=false caused the DMA to loop the last buffer during underrun.

Setting auto_clear=true fills the DMA buffer with zeros (silence)
when there's no new data, providing clean audio cutoff on pause.
Signed-off-by: CarlosDerSeher <karl_osterseher@gmx.at>
Signed-off-by: CarlosDerSeher <karl_osterseher@gmx.at>
  o reduce i2sDmaBufCnt from 3 to 2
  o CONFIG_ETH_DMA_BUFFER_SIZE from 1024 to 512
  o CONFIG_ETH_DMA_RX_BUFFER_NUM from 30 to 15
  o add heap debugging log (disabled by default)
- correct div by zero bug in start_player()

Signed-off-by: CarlosDerSeher <karl_osterseher@gmx.at>
update some template sdkconfigs

Signed-off-by: CarlosDerSeher <karl_osterseher@gmx.at>
This PR adds comprehensive DAC configuration and equalizer support for the TAS5805M chip with a web UI.

Major Features:
- TAS5805M DAC settings page with configurable parameters:
  * Bridge mode, modulation mode, switching frequency
  * Analog and digital volume control
  * Mixer implementation with compensation gains
  * Fault monitoring and fault reset
- 15-band parametric equalizer with two modes:
  * Manual 15-band EQ control with per-band gains
  * HF and LF filter presets for quick bi-amp configuration
  * Real-time updates and visualization
- New dedicated settings component (tas5805m_settings) for persistence
- All settings persist to NVS and restore on boot

Architecture Improvements:
- Created dedicated tas5805m_settings component
- DAC UI in the dedicated HTML tab
- Data-driven front-end with settings-ui.js renderer

Bug Fixes:
- Fixed EQ UI showing 0 gains before music starts
- Fixed channel gains not restoring on reboot
- Fixed NULL semaphore crashes during player restart
- Fixed DSP init ordering (semaphore creation before use)
- Fixed NULL pointer checks in mDNS and player
- Fixed WiFi power save interfering with low-latency audio
- Fixed settings persistence and restoration

Technical Details:
- Extended partitions.csv for additional storage
- Settings stored in NVS with proper restoration
- DSP processor coordination with I2S clock requirements
- Delayed settings application after DAC initialization
- Proper semaphore and mutex protection

Co-authored-by: andriy.malyshenko <andriy@sonocotta.com>
Co-authored-by: Andriy Malyshenko <andriy@sonocotta.com>, craigmillard86 <craigmillard@gmail.com>
Did a bit of restructuring of the Installation section, mainly to make it clearer that following the docker path doesn't require the additional steps below anymore (as they are documented separately already in the docker readme). 
Also moved the config anchor a bit to directly go to the config options (skipping the command before), as it's used in the docker page to link to and should directly go to the available options. Also removed a few typos and fixed some punctuation.

Co-authored-by: CarlosDerSeher <CarlosDerSeher@users.noreply.github.com>
add information about develop branch to the contribution guidelines for pull requests.
@CarlosDerSeher
Copy link
Owner Author

@anabolyc @luar123
So I am thinking which one will be the best way to finish the merge? Merge commit or rebase and merge. I think a merge commit is the way to go isn't it?
Another thing that came to my mind is the new partition table. It was changed when UI and settings manger were introduced. Also the NVS partition was dropped. Wouldn't those be a breaking changes for people who are running current master and do an upgrade through OTA ? How should we approach that? Add info to the README and add a Release Tag to the code maybe?

@anabolyc
Copy link
Contributor

Honestly, I didn't realize that OTA was implemented. How would you upgrade the firmware?

@anabolyc
Copy link
Contributor

So I am thinking which one will be the best way to finish the merge? Merge commit or rebase and merge. I think a merge commit is the way to go isn't it?

I think ideally when develop reach stable enough state, it should be as simple as marking the stable commit as the master head. In the current situation, I'd still prefer rebase and merge for a cleaner chain of changes.

@CarlosDerSeher
Copy link
Owner Author

CarlosDerSeher commented Feb 18, 2026

Honestly, I didn't realize that OTA was implemented. How would you upgrade the firmware?

See readme:

OTA update

Update your client(s) over the air.

On a linux box:

cd snapclient idf.py build curl snapclient.local:8032 --data-binary @- < build/snapclient.bin

Replace snapclient.local with your clients IP address. If you have multiple clients you could use the Android or Web App to find out your clients IPs.

@anabolyc
Copy link
Contributor

Oh, my bad. I'm not sure though many people use that. I'd say release notes sould do it then

@luar123
Copy link
Contributor

luar123 commented Feb 18, 2026

I would go with merge commit to keep the history.

Ota:
Do the new settings fit into the old 16K nvs partition? If yes it should be backwards compatible. Otherwise there will be errors when writing settings.
Also I would suggest to increase the app partitions to fill the whole 4MB, just to have more space for future additions.

@CarlosDerSeher
Copy link
Owner Author

Could a second nvs partition on the end be helpful, or would there be the same problems?

@luar123
Copy link
Contributor

luar123 commented Feb 19, 2026

I don't think distributing data over two partitions would help.
NVS was increased in #183, so it is only relevant for users with tas5808

@CarlosDerSeher
Copy link
Owner Author

I see your point. So you are saying if someone is using OTA to upgrade one of their ota partitions there won't be a problem as long as the code doesn't try to write to those 16k more of nvs introduced. So increasing ota partitions to fill the 4MB will be safe too.

Still, what we should do is to add a note (with commit hast or add a tag) somewhere in OTA section to make people aware of the changed partition table and possible issues, don't you think.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants