Apalis iMX8QP V1.0B HDMI problem

I am experiencing an issue with the HDMI resolution, which seems to be related to HDMI I2C. Here are the hardware and software details:

Hardware:

  • Model: Toradex 0048 Apalis iMX8QP 2GB WB V1.0B
  • Carrier: Ixora Carrier Board V1.1B

I have tested different operating systems:

  1. Boot2Qt 5.15.14 v5.15.14-lts.xml (self-built)
  2. Boot2Qt 6.5.2 v6.5.2-lts.xml (self-built)
  3. TorizonCore with evaluation containers (6.3.0+build.4.modified.container) (from Toradex Easy Installer)
  4. TorizonCore with evaluation containers (5.7.2+build.20.modified.container) (from Toradex Easy Installer)

The issue I’m facing is that the HDMI display resolution remains fixed at 800x480, regardless of the display I connect (tried 1920x1080, 1280x800). The following error is observed when running dmesg | grep hdmi:

[ 9.950994] [drm:cdns_hdmi_get_edid_block [cdns_mhdp_drmcore]] ERROR get block[0] edid failed: -22
[ 9.962607] [drm:cdns_hdmi_connector_get_modes [cdns_mhdp_drmcore]] ERROR Invalid edid

In the past, with older Boot2Qt builds, I managed to mitigate this issue in Boot2Qt 5.15.14 (our current production build) by setting the fdtfile environment variable in u-boot as follows:

setenv preboot fdtfile imx8qm-apalis-eval.dtb

However, as we are transitioning to Qt6 due to significant changes in our product, I built a Boot2Qt6 image (based on the manifest v6.5.2-lts.xml). Unfortunately, even after attempting to force the device tree through u-boot, the resolution issue persists.

I also attempted to install the TorizonCore demo image (both BSP6 and BSP5) with and without the u-boot change, but the resolution problem remains unresolved.

Any guidance on an official solution for this problem would be greatly appreciated.

Thank you.

P.S. I already know that the Apalis iMX8QP 2GB WB V1.0B is deprecated and that we should go with de V1.1, and that there was some changes to the hdmi and i2c that came with the v1.1. But since we already have a fleet of device deployed with V1.0B we must still support it. So since it worked with Boot2Qt5 there should be some kind of workaround to make it work with Boot2Qt6

Hello @Romain.Donze ,
Maybe you can try to force a specific EDID, as a customer did in this post:

Please let us know the outcome.

Best regards,
Josep

So It does work by doing this in U-Boot

env set video ‘HDMI-A-1:1920x1080’
env set tdxargs ‘video=HDMI-A-1:1920x1080’
env save

But what if we use different display with different resolution? Do I need to force edid each and every time the resolution changes? This can’t be a solution for us as we don’t know in advance what display will be used

As you may know, the I2C channel dedicated to HDMI EDID was changed starting from the V1.1B release. Therefore, if you wish for the resolution to be set automatically, you can either use the older OS image designed for V1.0B or use Apalis modules of V1.1B or later versions.

1 Like

Yes, as mentioned in my initial post, I am aware of the differences between V1.0B and V1.1. However, as also previously mentioned, it is not feasible to simply abandon all of our existing devices that are currently running V1.0B.

Is there a potential solution for patching the device tree to make it compatible with the older V1.0B version?

Or would I be required to maintain two separate operating systems - one being the standard Boot2Qt6 version utilizing the official manifest, and the other being a customized version combining Boot2Qt5 with the meta-qt6 layer?

So, after some tinkering, I’ve devised a solution.

Firstly, I had to integrate U-Boot fw-utils into my distribution. This enabled me to utilize the following commands directly from the operating system:

fw_setenv video ‘HDMI-A-1:1920x1080’
fw_setenv tdxargs ‘video=HDMI-A-1:1920x1080’

Then, I introduced a feature into my application (using fw-utils) to enforce the resolution in instances where the older V1.0B module is being used.