Skip to content

VID6608: add hardware RMT support for Automotive gauge driver#24759

Merged
arendst merged 3 commits into
arendst:developmentfrom
petrows:VID6608-HW-RMT-Timers
May 18, 2026
Merged

VID6608: add hardware RMT support for Automotive gauge driver#24759
arendst merged 3 commits into
arendst:developmentfrom
petrows:VID6608-HW-RMT-Timers

Conversation

@petrows

@petrows petrows commented May 17, 2026

Copy link
Copy Markdown
Contributor

Description:

Hey Folks, i would like to introduce my weekend project.

This PR updates the xdr-92 (the Automotive gauge stepper driver) for vid6608 chipset: add hardware acceleration for gauge drive using the ESP-32 Remote Control Transceiver (RMT). Feature can be enabled with the new VID6608_RMT config option, default is false.

Now driver has 3 modes:

  • Software, single-thread (ESP8266 only), using the old arduino-vid6608 library; Very slow, but works everywhere.
  • Software, multi-thread (ESP32 default), using the old arduino-vid6608 library with FreeRTOS task; Moderate, works good on dual-core chips, works with issues on single-core chips (tested on ESP32C6).
  • Hardware (ESP32 RMT) using the new esp-32-vid6608-rmt library; Best performance, but requires free RMT available.

RMT driver notes

RMT driver gives really smooth movement, no glitches, even on weak chips. No delay() function calls and minimum load on SoC.

C0028-cut-2

Full video: https://youtu.be/dASliRoJWo4

Looks like it conflicts with WS2812b driver with default configuration (and likely other drivers) on weak platforms with reduced feature set, so RMT is disabled by default and requires explicit config option.

Acceleration curve is much more complex to implement for RMT driver, this implementation has very small one (compare to software variant), i will try to improve it in the future.

Documentation update: tasmota/docs#1556

Checklist:

  • The pull request is done against the latest development branch
  • Only relevant files were touched
  • Only one feature/fix was added per PR and the code change compiles without warnings
  • The code change is tested and works with Tasmota core ESP8266 V.2.7.8
  • The code change is tested and works with Tasmota core ESP32 V.3.3.8 from Platform 2026.05.50
  • I accept the CLA.

NOTE: The code change must pass CI tests. Your PR cannot be merged unless tests pass

petrows added 3 commits May 17, 2026 15:02
* The RMT version is not supported on ESP32-C2, library excluded
* Add more clear error message, if RMT is requested, but not supported
@petrows petrows force-pushed the VID6608-HW-RMT-Timers branch from 2a94354 to 7045c5d Compare May 17, 2026 19:41
@petrows

petrows commented May 17, 2026

Copy link
Copy Markdown
Contributor Author

During work on this patch i have found another issue: #24760 ; currently it is not possible to switch (via user-config-h) the WS2812b driver to non-RMT mode, which is used by default.

@s-hadinger

Copy link
Copy Markdown
Collaborator

This looks good to me. @arendst ok for merging?

@arendst arendst merged commit 0a5311c into arendst:development May 18, 2026
64 checks passed
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.

3 participants