Debian Squeeze on i.MX51 ARM Cortex-A8 with dual monitors

Published on February 12, 2011

Archived Notice

This article has been archived and may contain broken links, photos and out-of-date information. If you have any questions, please Contact Us.

Named after the aliens in the Toy Story series of movies, the latest release of Debian is a very slick piece of work.

Nicely done, folks!

We recently had a customer request to put together a dual-monitor configuration for an existing GTK application and Debian's latest made the job almost painless.

Initial installation was simple and followed much the same path as described in our earlier blog posts:

  1. Install Debian. In this case, we used the Versatile Netboot image as our starting point.
  2. Install X-Windows and Fluxbox. This part went almost exactly as with Lenny.
  3. Add touch support.
    This step was easier in Squeeze because the tslib patch is no longer needed and we now had Rick Soza's tip to make device mapping easier.
  4. Rotate the displays into portrait mode. This step matched our previous comment.
  5. Configure dual monitors.

The final step in the process (Configuring dual monitors) was the trickiest part of the process, but it all boils down to proper configuration of xorg.conf. The following is what we came up with:

Section "Monitor" Identifier "HDMI Monitor" EndSection Section "Monitor" Identifier "LCD Monitor" EndSection Section "Device" Identifier "LCD" Option "UseFBDev" "true" Driver "fbdev" Option "fbdev" "/dev/fb1" Option "Rotate" "CCW" EndSection Section "Device" Identifier "HDMI" Option "UseFBDev" "true" Driver "fbdev" Option "fbdev" "/dev/fb0" Option "Rotate" "CCW" EndSection Section "Screen" Identifier "LCD Screen" Device "LCD" Monitor "LCD Monitor" EndSection Section "Screen" Identifier "HDMI Screen" Device "HDMI" Monitor "HDMI Monitor" EndSection Section "InputClass" Identifier "Freescale PMIC 4-wire touchscreen" MatchProduct "mxc_ts" MatchDevicePath "/dev/input/event*" Driver "tslib" Option "ScreenNumber" "0" Option "Width" "800" Option "Height" "480" Option "Rotate" "CCW" Option "TslibDevice" "/dev/input/tslib" Option "CorePointer" EndSection Section "ServerLayout" Identifier "server" Screen "LCD Screen" Screen "HDMI Screen" RightOf "LCD Screen" EndSection

If you read this carefully, there are one each of the Monitor, Device, and Screen sections for the two displays. Since we configured this for one output to HDMI and the other to a native 7" LCD screen, I named them such.

The Device section is used to point at the display device itself.

The ServerLayout section ties them together into a single virtual surface, although this really only applies to the mouse. The touch screen is tied to Screen 0 through the ScreenNumber parameter.

If you're putting together your own rotated screen, don't forget to use the fbcon=rotate:3 kernel command-line argument to rotate Tux and any console boot messages.