Skip to main content

Display Output

Each CPU supports a different set of display options. The table below shows what is supported and which display is the default.

BoardParallel RGB*LVDS0LVDS1HDMIMIPI DSI**
iMX6 SoloX COMYesYes (default)Not supportedNot supportedNot supported
iMX6 Quad COMYesYesYes (default)YesYes
iMX6 DualLite COMYesYesYes (default)YesYes
iMX6 UltraLite COMYes (default)Not supportedNot supportedNot supportedNot supported
iMX7 Dual (u)COMYes (default)Not supportedNot supportedNot supportedYes
iMX7ULP uCOMNot supportedNot supportedNot supportedYes****Yes
iMX8M Quad COMNot supportedNot supportedNot supportedYes***Yes
iMX8M Mini uCOMNot supportedNot supportedNot supportedYes****Yes
iMX8M Nano uCOMNot supportedNot supportedNot supportedYes****Yes
iMX93 uCOMNot supportedYesNot supportedYes****Yes
  • *) The Parallel RGB interface is available through the use of a COM Display Adapter board
  • **) The MIPI DSI interface is not controlled by the eadisp command described below
  • ***) The iMX8M does not have the eadisp command described below enabled as of May 2019
  • ****) Via MIPI-DSI to HDMI bridge on the uCOM Adapter board

The Display Solutions for COM Boards page describes the different interfaces, how to physically connect a display and it has a list of some of the supported displays. There is also the Adding Displays to iMX Developer's Kit document which has more in-depth descriptions of the commands below.

U-Boot

info

The eadisp support is only available up until the 2021.04 version of U-Boot. In the 2022.04 version (which was first included in the 5.15.32 distribution) eadisp has been removed.

The U-Boot has support for the eadisp command to control which display interfaces should be enabled and how they should be configured.

The U-Boot is setup to show the DENX logo on the default display when booting but to see it the display has to be configured correctly.

Run the eadisp command to see available options (output is for the iMX6 Quad COM board).

eadisp
Available display configurations:
0) lvds0 hannstar:18:64998375,1024,768,220,40,21,7,60,...
1) lvds1 hannstar:18:64998375,1024,768,220,40,21,7,60,...
2) rgb Innolux-AT070TN:24:33336667,800,480,89,164,75,75,...
3) rgb nhd-4.3-480272ef:24:9009009,480,272,2,2,2,2,41,...
4) rgb nhd-5.0-800480tf:24:29232073,800,480,40,40,29,13,...
5) rgb nhd-7.0-800480ef:24:29232073,800,480,40,40,29,13,...
6) rgb umsh-8864:24:9061007,480,272,20,20,20,20,...
7) rgb umsh-8596-30t:24:33264586,800,480,128,120,20,20,...
8) rgb umsh-8596-33t:24:32917475,800,480,200,200,45,45,...
9) rgb rogin-rx050a:24:32917475,800,480,200,200,45,45,...
10) hdmi 1280x720M@60:m24:74161969,1280,720,220,110,20,5,...
11) hdmi 1920x1080M@60:m24:148500148,1920,1080,148,88,36,...
12) hdmi 640x480M@60:m24:25200342,640,480,48,16,33,10,...
13) hdmi 720x480M@60:m24:27027027,720,480,60,16,30,9,62,...

Current Selection:

enabled prefer configuration
rgb: no no Innolux-AT070TN:24:33336667,...
lvds0: no no hannstar:18:64998375,...
lvds1: no no hannstar:18:64998375,...
hdmi: no no 1280x720M@60:m24:74161969,...

The command is described in detail in the Adding Displays to iMX Developer's Kit document. An example enabling the Parallel RGB interface to use the UMSH-8864 display.

eadisp enable rgb
eadisp conf rgb 6
selecting rgb=umsh-8864

Current Selection:
enabled prefer configuration
rgb: yes no umsh-8864:24:9061007,...
lvds0: no no hannstar:18:64998375,...
lvds1: no no hannstar:18:64998375,...
hdmi: no no 1280x720M@60:m24:74161969,...

To make the change, save the environment variables and reset the board.

saveenv
reset

The display should show the DENX logo.

Linux

Each display has its own framebuffer and to see the available framebuffers.

ls /dev/fb*
/dev/fb0 /dev/fb1 /dev/fb2 /dev/fb3 /dev/fb4 /dev/fb5

The number of framebuffers depends on the CPU and what was enabled by the eadisp command in the U-Boot.

The i.MX 6Quad and 6DualLite SoCs have support for virtual displays (called overlays) which will have their own framebuffers so an iMX6 Quad COM board with LVDS0 and RGB enabled will have four frame buffers.

ls /dev/fb*
/dev/fb0 /dev/fb1 /dev/fb2 /dev/fb3

The overlays are /dev/fb1 and /dev/fb3.

To see the resolution, bit depth etc for a framebuffer.

fbset -fb /dev/fb0
mode "800x480-49"
# D: 33.501 MHz, H: 31.515 kHz, V: 49.243 Hz
geometry 800 480 800 480 32
timings 29850 89 164 75 75 10 10
accel false
rgba 8/16,8/8,8/0,0/0
endmode

The information above tells us the following interesting information

  • The resolution is 800x480 pixels.
  • Each pixel uses 32 bits, with 8 bits each for red, green and blue. No alpha information.

For a display with 16 bits per pixel and 1024x768 it will look like this instead.

fbset -fb /dev/fb1
mode "1024x768-60"
# D: 65.003 MHz, H: 48.365 kHz, V: 60.006 Hz
geometry 1024 768 1024 768 16
timings 15384 220 40 21 7 60 10
accel false
rgba 5/11,6/5,5/0,0/0
endmode

Another way to see display information is to look at the files on sysfs.

ls /sys/class/graphics/fb4
bits_per_pixel         fsl_disp_property  state
blank mode stride
console modes subsystem
cursor name uevent
dev pan virtual_size
device power
fsl_disp_dev_property rotate

The files can be investigated further.

cat /sys/class/graphics/fb4/fsl_disp_dev_property
lcd
cat /sys/class/graphics/fb4/fsl_disp_property
1-layer-fb

The displays may have power saving options that turns them off after a while. To turn the display back on, write a 0 to the blank control.

echo 0 > /sys/class/graphics/fb0/blank

To turn it off, write a 1 instead.

echo 1 > /sys/class/graphics/fb0/blank

A quick test is to send data directly to the framebuffer. Assuming the fbset command revealed a 800x480 display with 32 bit addressing, the following command fills the display with random data.

dd if=/dev/urandom of=/dev/fb0 bs=3200 count=480

The display can be cleared again by writing zeroes to it.

dd if=/dev/zero of=/dev/fb0 bs=3200 count=480

A more practical test is to display an image. Use a USB memory stick and mount it as described in the USB Host section. To display an image use the following command.

fbi -T 2 –d /dev/fb0 /mnt/usbstick/*.png