Change display resolution apalis iMX8QP

Hello,

For our project, we would need to be able to use several different screen resolutions. 1280x720, 1280x800, 1920x1080 and 1920x1200 (We use HDMI monitors). With an Apalis iMX8QP module mounted on an Ixora carrier board, we are able to display all of these resolutions exept for 1920x1200. The screen is a 16:10 screen in 1920x1200, but the image is displayed in 1920x1080 stretched.

While the Apalis iMX8QP module is supposed to be supported up to 4k display.

We are running a basic iMX8QP and Ixora carrier board running with Boo2Qt 5.15.0.

So how could we make this work in 1920x1200? Besides that, is it possible to change the output resolution dynamically via our Qt app?

Dear @Romain.Donze,

would it be possible for you to provide us with the EDID (Extended Display Identification data) of the display you are using?

Best Regards
Kevin

Hi Kevin,

Here are what I could obtain from the command “sudo get-edid | parse-edid” on Ubuntu 18.04

First monitor 1920x1080: Automaticaly scaled in Ubuntu

5
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
Only trying 5 as per your request.
256-byte EDID successfully retrieved from i2c bus 5
Looks like i2c was successful. Have a good day.
Checksum Correct

Section "Monitor"
	Identifier "DELL P2418HT"
	ModelName "DELL P2418HT"
	VendorName "DEL"
	# Monitor Manufactured week 37 of 2019
	# EDID version 1.4
	# Digital Display
	DisplaySize 530 300
	Gamma 2.20
	Option "DPMS" "true"
	Horizsync 30-83
	VertRefresh 50-76
	# Maximum pixel clock is 170MHz
	#Not giving standard mode: 1152x864, 75Hz
	#Not giving standard mode: 1280x800, 60Hz
	#Not giving standard mode: 1280x1024, 60Hz
	#Not giving standard mode: 1600x900, 60Hz
	#Not giving standard mode: 1920x1080, 60Hz

	#Extension block found. Parsing...
	Modeline 	"Mode 12" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync 
	Modeline 	"Mode 0" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync 
	Modeline 	"Mode 1" 148.500 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
	Modeline 	"Mode 2" 74.250 1920 2008 2052 2200 1080 1082 1087 1125 +hsync +vsync interlace
	Modeline 	"Mode 3" 74.250 1280 1390 1420 1650 720 725 730 750 +hsync +vsync
	Modeline 	"Mode 4" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync
	Modeline 	"Mode 5" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync
	Modeline 	"Mode 6" 25.200 640 656 752 800 480 490 492 525 -hsync -vsync
	Modeline 	"Mode 7" 27.000 720 732 796 864 576 581 586 625 -hsync -vsync
	Modeline 	"Mode 8" 27.000 720 732 796 864 576 581 586 625 -hsync -vsync
	Modeline 	"Mode 9" 74.250 1280 1720 1760 1980 720 725 730 750 +hsync +vsync
	Modeline 	"Mode 10" 74.250 1920 2448 2492 2640 1080 1082 1089 1125 +hsync +vsync interlace
	Modeline 	"Mode 11" 148.500 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync
	Modeline 	"Mode 13" 74.25 1920 2008 2052 2200 540 542 547 562 +hsync +vsync interlace
	Modeline 	"Mode 14" 74.25 1280 1390 1430 1650 720 725 730 750 +hsync +vsync 
	Modeline 	"Mode 15" 27.00 720 736 798 858 480 489 495 525 -hsync -vsync 
	Option "PreferredMode" "Mode 12"
EndSection

Second monitor 1920x1200: I had to scale it manually in Ubuntu settings

1
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
Only trying 1 as per your request.
256-byte EDID successfully retrieved from i2c bus 1
Looks like i2c was successful. Have a good day.
Checksum Correct

Section "Monitor"
	Identifier "Monitor"
	ModelName "Monitor"
	VendorName "LLP"
	# Monitor Manufactured week 10 of 2019
	# EDID version 1.3
	# Digital Display
	DisplaySize 150 90
	Gamma 2.20
	Option "DPMS" "true"
	Horizsync 30-81
	VertRefresh 24-76
	# Maximum pixel clock is 300MHz
	#Not giving standard mode: 1280x960, 60Hz
	#Not giving standard mode: 1280x720, 60Hz
	#Not giving standard mode: 1280x800, 60Hz
	#Not giving standard mode: 1280x1024, 60Hz
	#Not giving standard mode: 1600x900, 60Hz
	#Not giving standard mode: 1600x1200, 60Hz
	#Not giving standard mode: 1920x1200, 60Hz
	#Not giving standard mode: 2048x1152, 60Hz

	#Extension block found. Parsing...
	Modeline 	"Mode 15" 27.00 720 736 798 858 480 489 495 525 -hsync -vsync 
	Modeline 	"Mode 0" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync 
	Modeline 	"Mode 1" 85.50 1366 1436 1679 1792 768 771 774 798 +hsync +vsync 
	Modeline 	"Mode 2" 25.200 640 656 752 800 480 490 492 525 -hsync -vsync
	Modeline 	"Mode 3" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync
	Modeline 	"Mode 4" 74.250 1280 1390 1420 1650 720 725 730 750 +hsync +vsync
	Modeline 	"Mode 5" 74.250 1920 2008 2052 2200 1080 1082 1087 1125 +hsync +vsync interlace
	Modeline 	"Mode 6" 27.027 1440 1478 1602 1716 480 484 487 525 -hsync -vsync interlace
	Modeline 	"Mode 7" 148.500 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
	Modeline 	"Mode 8" 27.000 720 732 796 864 576 581 586 625 -hsync -vsync
	Modeline 	"Mode 9" 74.250 1280 1720 1760 1980 720 725 730 750 +hsync +vsync
	Modeline 	"Mode 10" 74.250 1920 2448 2492 2640 1080 1082 1089 1125 +hsync +vsync interlace
	Modeline 	"Mode 11" 27.000 1440 1464 1590 1728 576 578 581 625 -hsync -vsync interlace
	Modeline 	"Mode 12" 148.500 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync
	Modeline 	"Mode 13" 74.250 1920 2558 2602 2750 1080 1084 1089 1125 +hsync +vsync
	Modeline 	"Mode 14" 74.250 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
	Modeline 	"Mode 16" 27.00 720 732 796 864 576 581 586 625 -hsync -vsync 
	Modeline 	"Mode 17" 74.25 1280 1720 1760 1980 720 725 730 750 +hsync +vsync 
	Modeline 	"Mode 18" 74.25 1920 2448 2492 2640 540 542 547 562 +hsync +vsync interlace
	Option "PreferredMode" "Mode 15"
EndSection

Third monitor 1280x800: Automaticaly scaled in Ubuntu

1
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
Only trying 1 as per your request.
256-byte EDID successfully retrieved from i2c bus 1
Looks like i2c was successful. Have a good day.
Checksum Correct

Section "Monitor"
	Identifier "ELO ET1002L"
	ModelName "ELO ET1002L"
	VendorName "ELO"
	# Monitor Manufactured week 36 of 2019
	# EDID version 1.3
	# Digital Display
	DisplaySize 220 140
	Gamma 2.20
	Option "DPMS" "true"
	Horizsync 31-80
	VertRefresh 60-60
	# Maximum pixel clock is 170MHz
	#Not giving standard mode: 1920x1080, 60Hz
	#Not giving standard mode: 1920x1200, 60Hz

	#Extension block found. Parsing...
	Modeline 	"Mode 5" 71.00 1280 1328 1360 1440 800 803 809 823 +hsync -vsync 
	Modeline 	"Mode 0" 71.00 1280 1328 1360 1440 800 803 809 823 +hsync -vsync 
	Modeline 	"Mode 1" 25.200 640 656 752 800 480 490 492 525 -hsync -vsync
	Modeline 	"Mode 2" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync
	Modeline 	"Mode 3" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync
	Modeline 	"Mode 4" 74.250 1280 1390 1420 1650 720 725 730 750 +hsync +vsync
	Modeline 	"Mode 6" 27.00 720 736 798 858 480 489 495 525 -hsync -vsync 
	Modeline 	"Mode 7" 74.25 1280 1390 1430 1650 720 725 730 750 +hsync +vsync 
	Option "PreferredMode" "Mode 5"
EndSection

Hope this will help!

Regars,
Romain

Hi Romain, you may try to put this edid binary to /lib/firmware/edid and input setenv defargs $defargs drm.edid_firmware=edid/1920x1200_60hz.bin, saveenv and reset in u-boot.

what if

/lib/firmware/edid

does not exist? Should I just create it?

yes, this folder needs to be created.

This does not seem to work.

I’ve got this in u-boot:

Apalis iMX8 # printenv defargs
defargs=pci=nomsi drm.edid_firmware=edid/1920x1200_60hz.bin

And this in the fs:

root@b2qt-apalis-imx8:~# ls /lib/firmware/edid/
1920x1200_60hz.bin

And the image is still streched when using the 1920x1200 monitor

Edit: I have tested with a different monitor in 192x1200 and it works properly. So the problem seems to come from the lilliput monitor.

Since this binary file helps with my config, how could I include it by default when compiling my image with bitbake?

Dear @Romain.Donze,

We recommend to build your own meta-layer. This also has the advantage that you can get reproduceable builds, which in turn are more consistent in testing for future features you might want to integrate.

Doing this requires you to create a custom recipe as a .bb append. If you do this, this should allow you to integrate the file into your build.

Custom meta-layers

Best Regards
Kevin