esphome / esphome/feature-requests
Support for optionally disabling hardware rmt support for remote_receiver when using ESP32 IDF
- Dominant language
- No language data
- Stars
- 450
- Forks
- 29
- PR merge metrics
- No merged PRs in 30d
Description
I'd like to request the ability to optionally just use a software based interrupt based GPIO handler (like the ESP8266 does) selectively for the remote receiver, instead of using the [Remote Control Peripheral](https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf#rmt ) hardware.
This could be enabled by potentially adding a configuration option of something like use_esp32_rmt in this example:
```yaml
remote_receiver:
- id: rf_receiver
use_esp32_rmt: false
```
The reason for this request is because the rmt hardware on older ESP-32 hardware is limited to the remote symbol memory for the size of the receive. For IR remotes - generally this is fine. But for signals coming from RF, often the transmission size is significantly larger, resulting in the error message: hw buffer too small, received symbols truncated.
This becomes even more critical of an issue when multiple remote receivers and transmitters need to be setup, given that rmt_symbols needs to be large enough for each remote component. A specific example would be an esphome project to mimic the behavior of a device such as [this](https://www.ibroadlink.com/productinfo/762672.html). In this case, remote_receiver component are needed for a RF receiver and an IR receiver, and remote_transmitter components are needed for RF and IR transmitters. This will leave only 192symbols (on/off pulses) for the RF receiver - which can be too small for some RF codes (my use case is decoding a variety of devices directly in ESPHome via rtl_433 via [this external component](https://github.com/juanboro/esphome-rtl_433-decoder/tree/main) I've created.
By allowing the RF remote receiver to not use the rmt hardware, the rmt hardware can be better utilized where it does work well (the transmitters which do not have this limitation, and the IR receiver which should always have smaller symbol sizes).
I have a working [fork](https://github.com/esphome/esphome/compare/dev...juanboro:esphome:esp32_soft_rmt) that does this I'd like to create a draft PR for assuming I'm not misreading something in the ESP-IDF about how this all works (also would like input from @swoboda1337 )
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the remote_receiver configuration shown in the request, the ESP-IDF RMT technical reference, and the linked esp32_soft_rmt fork. Compare the fork's approach with current hardware-RMT behavior, then verify that one receiver can use software GPIO handling while transmitters and other receivers retain RMT support.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- yaml
- Domain
- embedded-iot
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100