Alternative firmware for ESP8266 and ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at
This should fix the crashes for configurations with an input/microphone only (no output device) and can handle the widespread INMP441.
fix: use input and not output instance for microphone recording
expose more low level properties of the I2S framework in the driver setting, which is needed for the INMP441 and should be future proof for all kinds of I2S microphones in standard mode
expose DMA buffer settings - needed for higher sampling rates (i.e. 48000 Hz can work)
change some defaults so that MP3 recording/streaming will work without setting a compatible sampling rate first
turn off automatic start of streaming server if enabled in firmware, because that does not resonate well with the new flexible driver concept. Would need something like i2sstream 1 in autoexec.bat or with another autostart method.
attempt to give Free-RTOS more info about the timing requirements of the microphone task
more internal refactoring
The new driver concept is all about runtime configuration with a new command i2sconfig that prints a (pretty big) JSON like that:
This looks a bit wild at first glance, but will be explained soon in the docs.
For instance changing from default (which is PDM mode for the microphone) to the INMP441 in left channel configuration is only:
i2sconfig {"Rx":{"Mode":0}}
Using MP3 encoding would need PSRAM allocation:
i2sconfig {"Sys":{"Mp3Preallocate":1}}
Changing the sample rate:
i2sconfig {"Rx":{"SampleRate":48000}}
The latter would need a larger DMA buffer:
i2sconfig {"Rx":{"DMAFrame":768}}
More on this later ...
There are still a few glitches and probably some bugs, that will be addressed in separate PR's.
The vast majority of changes in comparison to the old driver is about configuration and setup. All time critical parts did not really change that much.
Checklist:
[x] The pull request is done against the latest development branch
[x] Only relevant files were touched
[x] Only one feature/fix was added per PR and the code change compiles without warnings
[x] The code change is tested and works with Tasmota core ESP8266 V.2.7.6
[x] The code change is tested and works with Tasmota core ESP32 V.3.0.0
Description:
This should fix the crashes for configurations with an input/microphone only (no output device) and can handle the widespread INMP441.
i2sstream 1
inautoexec.bat
or with another autostart method.The new driver concept is all about runtime configuration with a new command
i2sconfig
that prints a (pretty big) JSON like that:This looks a bit wild at first glance, but will be explained soon in the docs. For instance changing from default (which is PDM mode for the microphone) to the INMP441 in left channel configuration is only:
i2sconfig {"Rx":{"Mode":0}}
Using MP3 encoding would need PSRAM allocation:
i2sconfig {"Sys":{"Mp3Preallocate":1}}
Changing the sample rate:
i2sconfig {"Rx":{"SampleRate":48000}}
The latter would need a larger DMA buffer:
i2sconfig {"Rx":{"DMAFrame":768}}
More on this later ...
There are still a few glitches and probably some bugs, that will be addressed in separate PR's. The vast majority of changes in comparison to the old driver is about configuration and setup. All time critical parts did not really change that much.
Checklist:
NOTE: The code change must pass CI tests. Your PR cannot be merged unless tests pass