The Image is Flickering on both Toradex Capacitive and Resistive Developer Display

Hello!

I am developing a product based on Toradex Colibri IMX8. The base system is Yocto, provided by Toradex. The application that I am developing is working, and has been extensively tested, but the image on the display shows distinct signs of flickering. The error is probably timing related, but it is distinct from other post with similar issues. I have attached a video of the phenomenon:

Image Flickering Video

fdt_overlays=colibri-imx8x_panel-cap-touch-7inch_overlay.dtbo

Software summary
------------------------------------------------------------
Bootloader:               U-Boot
Kernel version:           6.6.119-7.5.0-devel #1 SMP PREEMPT Mon Jan  5 09:23:13 UTC 2026
Kernel command line:      root=PARTUUID=cb2ce2cd-02 ro rootwait console=tty1 console=ttyLP3,115200
Distro name:              NAME="TDX Wayland with XWayland"
Distro version:           VERSION_ID=7.5.0-devel-20260401080231-build.0
Distro variant:           -
Hostname:                 colibri-imx8x-08812183
------------------------------------------------------------

Hardware info
------------------------------------------------------------
HW model:                 Toradex Colibri iMX8DX on Colibri Evaluation Board V3
Toradex version:          0051 V1.0E
Serial number:            08812183
Processor arch:           aarch64
------------------------------------------------------------

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


I understand you’re experiencing display flickering on your Colibri iMX8X with the Capacitive Touch Display 7" using BSP 7.5.0-devel. This is indeed likely a timing-related issue that can be addressed through device tree overlay modifications.

Display Overlay Configuration

Your current overlay colibri-imx8x_panel-cap-touch-7inch_overlay.dtbo is the correct one for the Capacitive Touch Display 7" Parallel (1). However, flickering issues often stem from display timing parameters that may need adjustment.

Troubleshooting Steps

1. Verify Display Compatibility

The Capacitive Touch Display 7" Parallel is designed for all Colibri System on Modules (2). Your Colibri iMX8DX should be compatible, but timing parameters may need fine-tuning for your specific setup.

2. Check for Conflicting Overlays

Ensure no conflicting overlays are enabled. In certain cases, multiple overlays may configure the same interfaces or hardware resources, leading to undesired behavior (3). Check your /boot/overlays.txt file to confirm only the necessary overlay is enabled:

fdt_overlays=colibri-imx8x_panel-cap-touch-7inch_overlay.dtbo

(3)

3. Display Pipeline Configuration

For the Verdin family, DSI-to-HDMI overlays can cause display pipeline routing issues if not properly configured (3). While you’re using Colibri iMX8X, similar pipeline conflicts could occur.

4. Custom Overlay Development

If the pre-built overlay doesn’t resolve the flickering, you may need to create a custom device tree overlay with adjusted timing parameters. The most recommended approach is to start with existing evaluation board overlays and adapt them to your project’s needs (3).

Next Steps

  1. Test with different displays - Try both the resistive and capacitive displays to isolate if the issue is display-specific
  2. Monitor kernel messages - Check dmesg output for any display-related warnings or errors
  3. Custom timing parameters - Consider creating a custom overlay with modified display timing parameters based on your display’s specifications

Since you’re using a development build (7.5.0-devel), there might be ongoing improvements in the stable release versions that could resolve this issue.

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

How do I set timing parameters? How do I know which parameters are correct besides testing random values?

For Colibri iMX8X, display timing parameters are configured through device tree overlays, and there are specific methods to determine the correct values (1).

Display Mode Configuration for Colibri iMX8X

Your Colibri iMX8X uses the DRM/KMS subsystem for display management (1). The display timings are typically hard-coded in the overlay/device-tree/panel-driver rather than using EDID (1).

Setting Timing Parameters

Panel LVDS Driver Approach

You can specify detailed timings in the device tree using the “panel-lvds” driver. This requires you to specify the property ‘data-mapping’ and detailed panel timing parameters (1):

panel_lvds: panel-lvds {
 compatible = "panel-lvds";
 backlight = <&backlight>;

 data-mapping = "jeida-18";
 width-mm = <345>;
 height-mm = <194>;

 panel-timing {
 clock-frequency = <138500000>;
 hactive = <1920>;
 vactive = <1080>;
 hfront-porch = <48>;
 hsync-len = <32>;
 hback-porch = <80>;
 vfront-porch = <3>;
 vsync-len = <5>;
 vback-porch = <23>;
 hsync-active = <0>;
 vsync-active = <0>;
 pixelclk-active = <0>;
 };

 port {
 panel_lvds_in: endpoint {
 remote-endpoint = <&lvds1_out>;
 };
 };
};

(1)

How to Determine Correct Parameters

1. Display Datasheet

The most reliable source for timing parameters is your display’s datasheet, which should specify:

  • Clock frequency
  • Active resolution (hactive, vactive)
  • Front porch, back porch, and sync pulse widths
  • Signal polarities (hsync-active, vsync-active, pixelclk-active)

2. CVT (Coordinated Video Timing) Formula

For standard resolutions, you can use the CVT utility to calculate display timings (1):

cvt 800 480 60
# 800x480 59.48 Hz (CVT) hsync: 29.74 kHz; pclk: 29.50 MHz
Modeline "800x480_60.00" 29.50 800 824 896 992 480 483 493 500 -hsync +vsync

(1)

3. Signal Polarity Parameters

For embedded LCD/TFT displays, you can adjust signal polarities (1):

  • Pixelclock Polarity: pixelclk-active = <0> (falling edge) or <1> (rising edge)
  • VSync Polarity: vsync-active = <0> (active low) or <1> (active high)
  • HSync Polarity: hsync-active = <0> (active low) or <1> (active high)

Development Workflow

Creating Custom Overlay

To create a custom overlay with your timing parameters (2):

  1. Start with existing overlay: Use the current colibri-imx8x_panel-cap-touch-7inch_overlay.dts as a base
  2. Modify timing parameters: Update the panel-timing section with values from your display datasheet
  3. Build the overlay: Compile your .dts file to generate a .dtbo file
  4. Deploy and test: Copy to /boot/overlays/ and add to overlays.txt

Testing Process

  1. Backup current configuration: cp /boot/overlays.txt ~/overlays_backup.txt
  2. Deploy custom overlay: Add your custom .dtbo to the overlays list
  3. Reboot and test: sync && reboot
  4. If issues occur: Use U-Boot recovery to disable overlays with setenv skip_fdt_overlays 1 (2)

The key is to obtain the exact timing specifications from your display manufacturer’s datasheet rather than guessing values, as incorrect timings can cause flickering, distortion, or no display output.

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

Hi @ujoimro!

Display timing information is typically available in the display’s datasheet. If you are using one of Toradex’s displays, we already provide pre-built overlays for it.

Otherwise, you will need to create a device tree overlay with the appropriate timings, compile it, and enable it on the module.

If you are not familiar with device tree overlays, I recommend reading the Device Tree Technical Overview and the First Steps with Device Trees articles. You can also use one of our pre-built overlays as a starting point, such as the 7-inch display overlay.

Best regards.

I have managed to resolve the issue. I switched of weston/wayland by

systemctl stop weston

and used the test image utility to project the test image:

# sample image for testing - works NO flickering
modetest -M mxsfb-drm -s 35@33:800x480

this produced a still image, which made me conclude that it was not a device-tree issue, but a wayland/weston issue instead.

finally I have found the offending configuration:

# Solution: In weston.ini, set the refresh rate:
repaint-window=7

it was a higher value. I used the recommended settings 7 and now the issue has been resolved.

Hi @ujoimro!

I’m glad you could solve the issue.

Best regards.