Skip to content

Samsung Smart TV flickers on interaction via HDMI — works fine under Sway #13338

@aashiksadar

Description

@aashiksadar

Bug: Samsung Smart TV (M50D) flickers on interaction — works fine under Sway

System Info

  • Hyprland: 0.53.3-2
  • Aquamarine: 0.10.0-2
  • Kernel: 6.18.9-arch1-2
  • GPU: Intel Raptor Lake-P Iris Xe Graphics (i915)
  • Display: Samsung Smart M50D (32", 1920x1080@60Hz) via HDMI
  • Secondary: Laptop eDP-1 (1920x1200@60Hz)
  • Distro: Arch Linux

Description

Samsung Smart M50D connected via HDMI produces brief black flashes (screen blanks for ~0.2s then recovers) on any mouse click or window interaction. The issue is Hyprland-specific — the same hardware works perfectly under Sway 1.11 and in TTY (fbcon).

Reproduction

  1. Connect Samsung Smart M50D via HDMI to Intel Iris Xe
  2. Launch Hyprland
  3. Click anywhere on the Samsung display — screen briefly goes black and recovers

The flicker occurs on every click/interaction. It also happens when Samsung is the sole display (laptop screen disabled).

Key finding: Sway does not flicker

Environment Flickers?
TTY (fbcon) No
Sway 1.11 No
Hyprland 0.53.3 Yes

Same kernel, same driver, same cable, same HDMI port. The only variable is the compositor.

What was ruled out

Extensive testing was done to isolate the cause:

Hyprland settings (all tested at runtime, none helped):

  • decoration:blur:enabled false
  • animations:enabled false
  • cursor:no_hardware_cursors true
  • debug:damage_tracking 0
  • render:cm_enabled false
  • render:direct_scanout false
  • misc:vfr false (persisted in config)
  • misc:vrr 0

Aquamarine env vars (require restart, none helped):

  • AQ_NO_ATOMIC=1
  • AQ_NO_MODIFIERS=1

Refresh rates tested: 60Hz, 59.94Hz, 50Hz — all flicker

Multi-monitor: Flickers even as the sole display (eDP-1 disabled)

EDID overrides (custom firmware EDID):

  • Stripped deep color, ALLM, HDR10/PQ EOTF, BT2020 colorimetry, game content type flag, static metadata
  • None of these resolved the flicker (expected, since Sway works with unmodified EDID)

Kernel params already set:

  • i915.enable_psr=0 i915.enable_fbc=0 i915.enable_dc=0

HDCP: Content Protection = Undesired (0), not active

Hardware: Different HDMI cables, different HDMI ports on the TV — same result. A different monitor (Xiaomi) works fine on the same setup with Hyprland.

DRM atomic trace

Enabled drm.debug=0x10 during a click. The atomic commits look normal — no errors, no unexpected modesets (ms 0):

drm_atomic_get_plane_state Added [PLANE:90:plane 1B] state
drm_atomic_get_crtc_state Added [CRTC:145:pipe B] state
drm_atomic_set_fb_for_plane Set [FB:307] for [PLANE:90:plane 1B]
drm_atomic_get_connector_state Added [CONNECTOR:271:HDMI-A-1] state
drm_atomic_helper_check_modeset Updating routing for [CONNECTOR:271:HDMI-A-1]
[CONNECTOR:271:HDMI-A-1] keeps [ENCODER:270:DDI B/PHY B], now on [CRTC:145:pipe B]
intel_plane_atomic_check_with_state [CRTC:145:pipe B] with [PLANE:90:plane 1B] visible 1 -> 1, off 0, on 0, ms 0
drm_atomic_nonblocking_commit committing nonblocking

Notable: connector state is included in every page-flip commit, triggering drm_atomic_helper_check_modeset every frame. Unclear if Sway/wlroots does the same.

Hyprland log during interaction

No errors during clicks — only cursor buffer imports and input debounce:

drm: Cursor buffer imported into KMS with id 292
drm: Cursor buffer imported into KMS with id 289
[libinput] Plugin:button-debounce - debounce state: ...

Startup log shows repeated Cannot commit when a page-flip is awaiting errors during initial modeset:

ERR from aquamarine ]: drm: Cannot commit when a page-flip is awaiting

DRM connector properties (via modetest)

Broadcast RGB: Automatic (0)
content type: Graphics (1)
Content Protection: Undesired (0)
max bpc: 8
Colorspace: Default (0)
HDR_OUTPUT_METADATA: (empty)

Hypothesis

The issue is likely in how Aquamarine handles DRM output for this Samsung TV compared to wlroots. Possible causes:

  • Connector state or properties (e.g., content_type) included in atomic commits differently than wlroots
  • Different buffer/plane management triggering Samsung TV signal processing
  • AVI InfoFrame differences that cause the TV to briefly re-negotiate

Monitor config

monitor=eDP-1,1920x1200@60,0x0,1.5
monitor=HDMI-A-1,1920x1080@60,1280x0,1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions