From 3f124d3bbe88d67b7e3cb8430be57e8dd53a0996 Mon Sep 17 00:00:00 2001 From: Max Gramser Date: Tue, 15 Sep 2026 18:29:01 +0200 Subject: [PATCH] Stop the flickering vertical stripes on the CYD panel (0.2.49) The cheap ILI9341 panel showed a fine vertical line pattern that shimmered when you moved your eyes or the board. Frame inversion (0xB4 0x07) at the panel's highest frame rate (0xB1 0x00 0x10) removes it; VCOM stays default. Firmware 0.2.42 for both boards, version only on the Guition. Co-Authored-By: Claude Fable 5.1 --- docs/RELEASING.md | 11 +++++++++++ guition-4848s040.yaml | 2 +- home-like-2432s028.yaml | 14 +++++++++++++- packages/cyd.yaml | 14 +++++++++++++- packages/guition.yaml | 2 +- screen_manager/CHANGELOG.md | 7 +++++++ screen_manager/app/core.py | 2 +- screen_manager/config.yaml | 2 +- 8 files changed, 48 insertions(+), 6 deletions(-) diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 88b6459..158c548 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -176,6 +176,17 @@ icons sit off-center in the browser); run `generate_packages.py` afterward. The `MDI_GLYPH_*` substitutions are retired: `TILEn_ICON` in manual profiles must come from the set. No changed preferences or keys. +### Compatibility 0.2.49 / firmware 0.2.42 + +Firmware and the CYD board profile; the app only raises `FIRMWARE_VERSION`. Storage, protocol, +preferences and keys are unchanged. + +- home-like-2432s028.yaml adds `init_sequence` to the mipi_spi display: `0xB4 0x07` (frame inversion) + and `0xB1 0x00 0x10` (119 Hz). ESPHome appends these after its built-in ILI9341 sequence, so the + panel init otherwise stays the ESPHome default. Found on 2026-09-15 by sending panel commands at + runtime on the bench CYD; VCOM (`0xC5`) sweeps changed contrast, not the stripes, so it stays default. +- guition-4848s040.yaml only raises `SCREEN_FIRMWARE_VERSION`. + ### Compatibility 0.2.48 / firmware 0.2.41 Storage, protocol, preferences and keys are unchanged. diff --git a/guition-4848s040.yaml b/guition-4848s040.yaml index 3abb17c..c681b04 100644 --- a/guition-4848s040.yaml +++ b/guition-4848s040.yaml @@ -1,7 +1,7 @@ # Guition ESP32-S3-4848S040 / 4-inch EU wallbox, 480x480 IPS + GT911. # Use guition-device.yaml; see docs/GUITION.md. CYD hardware is a separate profile. substitutions: - SCREEN_FIRMWARE_VERSION: "0.2.41" + SCREEN_FIRMWARE_VERSION: "0.2.42" # 0: no drift limit; LVGL decides, releasing inside the tile is a tap, leaving it is not # (like iOS). The CYD keeps a limit because its resistive panel jumps. TOUCH_MOVE_LIMIT_PX: "0" diff --git a/home-like-2432s028.yaml b/home-like-2432s028.yaml index 3f94a4b..38b30b6 100644 --- a/home-like-2432s028.yaml +++ b/home-like-2432s028.yaml @@ -57,7 +57,7 @@ ############################################################ substitutions: - SCREEN_FIRMWARE_VERSION: "0.2.41" + SCREEN_FIRMWARE_VERSION: "0.2.42" # A tap survives a finger that drifts up to this far (320 px over 58 mm: 1 cm); further is a swipe. TOUCH_MOVE_LIMIT_PX: "56" # Shortest contact that counts as a tap; a resistive panel bounces, a capacitive one does not. @@ -2259,6 +2259,18 @@ display: update_interval: never auto_clear_enabled: false + # Panel tuning, appended after ESPHome's built-in ILI9341 sequence. With the + # defaults (line inversion, 79 Hz) the cheap CYD panel shows a fine vertical + # stripe pattern that flickers when you move your eyes or the board: the + # two polarities of adjacent columns differ in brightness. Frame inversion + # (0xB4 = 0x07) removes the stripes; the maximum frame rate (0xB1 = 0x10, + # 119 Hz) keeps the resulting whole-frame flicker above what the eye sees. + # VCOM (0xC5) stayed at the default; sweeping it changed contrast, not the + # stripes. Checked on the bench CYD on 2026-09-15. + init_sequence: + - [0xB4, 0x07] + - [0xB1, 0x00, 0x10] + # Native panel dimensions (portrait). Do NOT swap these per orientation and # do NOT add a display transform — rotation is handled by LVGL below. # ESPHome 2026.6+ rejects a swapped transform here with "Invalid offsets". diff --git a/packages/cyd.yaml b/packages/cyd.yaml index 6893a7a..ec07dcd 100644 --- a/packages/cyd.yaml +++ b/packages/cyd.yaml @@ -58,7 +58,7 @@ ############################################################ substitutions: - SCREEN_FIRMWARE_VERSION: "0.2.41" + SCREEN_FIRMWARE_VERSION: "0.2.42" # A tap survives a finger that drifts up to this far (320 px over 58 mm: 1 cm); further is a swipe. TOUCH_MOVE_LIMIT_PX: "56" # Shortest contact that counts as a tap; a resistive panel bounces, a capacitive one does not. @@ -2190,6 +2190,18 @@ display: update_interval: never auto_clear_enabled: false + # Panel tuning, appended after ESPHome's built-in ILI9341 sequence. With the + # defaults (line inversion, 79 Hz) the cheap CYD panel shows a fine vertical + # stripe pattern that flickers when you move your eyes or the board: the + # two polarities of adjacent columns differ in brightness. Frame inversion + # (0xB4 = 0x07) removes the stripes; the maximum frame rate (0xB1 = 0x10, + # 119 Hz) keeps the resulting whole-frame flicker above what the eye sees. + # VCOM (0xC5) stayed at the default; sweeping it changed contrast, not the + # stripes. Checked on the bench CYD on 2026-09-15. + init_sequence: + - [0xB4, 0x07] + - [0xB1, 0x00, 0x10] + # Native panel dimensions (portrait). Do NOT swap these per orientation and # do NOT add a display transform — rotation is handled by LVGL below. # ESPHome 2026.6+ rejects a swapped transform here with "Invalid offsets". diff --git a/packages/guition.yaml b/packages/guition.yaml index f1b38de..25119a6 100644 --- a/packages/guition.yaml +++ b/packages/guition.yaml @@ -2,7 +2,7 @@ # Guition ESP32-S3-4848S040 / 4-inch EU wallbox, 480x480 IPS + GT911. # Use guition-device.yaml; see docs/GUITION.md. CYD hardware is a separate profile. substitutions: - SCREEN_FIRMWARE_VERSION: "0.2.41" + SCREEN_FIRMWARE_VERSION: "0.2.42" # 0: no drift limit; LVGL decides, releasing inside the tile is a tap, leaving it is not # (like iOS). The CYD keeps a limit because its resistive panel jumps. TOUCH_MOVE_LIMIT_PX: "0" diff --git a/screen_manager/CHANGELOG.md b/screen_manager/CHANGELOG.md index 2996d8a..bf95f94 100644 --- a/screen_manager/CHANGELOG.md +++ b/screen_manager/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.2.49 (firmware 0.2.42) + +No more flickering stripes on the CYD. + +- **CYD panel fix.** The cheap 2.8" panel showed a fine pattern of vertical lines that shimmered when you moved your eyes or the board. The screen now uses frame inversion at the panel's highest refresh rate, which removes the stripes. Colours and contrast are unchanged. Guition screens are not affected. +- Firmware 0.2.42 for both boards (version only on the Guition); the app offers the update. + ## 0.2.48 (firmware 0.2.41) Keep a screen awake from a Home Assistant automation. diff --git a/screen_manager/app/core.py b/screen_manager/app/core.py index e0a3a5a..d994ac8 100644 --- a/screen_manager/app/core.py +++ b/screen_manager/app/core.py @@ -17,7 +17,7 @@ WEEKDAYS = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'] REPO = 'https://github.com/MaxGramser/homeassistant_espscreen' REFS = {'cyd': 'main', 'guition': 'main'} # Firmware shipped with this app release; screens below it get an update offer. -FIRMWARE_VERSION = '0.2.41' +FIRMWARE_VERSION = '0.2.42' # The Auto standby switch a screen offers Home Assistant automations. AUTO_STANDBY_MIN_FIRMWARE = '0.2.41' ATTRS = frozenset('brightness percentage current_position current_temperature temperature current_humidity min_temp max_temp target_temp_step supported_color_modes hvac_modes hvac_action hs_color color_temp_kelvin min_color_temp_kelvin max_color_temp_kelvin fan_speed_list unit_of_measurement battery_level fan_speed volume_level is_volume_muted media_title options min max step temperature_unit supported_features device_class next_rising next_setting finishes_at duration remaining humidity wind_speed wind_speed_unit apparent_temperature fan_modes swing_modes fan_mode swing_mode'.split()) diff --git a/screen_manager/config.yaml b/screen_manager/config.yaml index 8d4c965..66b7268 100644 --- a/screen_manager/config.yaml +++ b/screen_manager/config.yaml @@ -1,5 +1,5 @@ name: ESP Screen Manager -version: "0.2.48" +version: "0.2.49" slug: esp_screen_manager description: Choose tiles for your CYD and Guition touchscreen, without reflashing. url: https://github.com/MaxGramser/homeassistant_espscreen