Background
I have been using an eeePC 900, running standard Ubuntu Hardy 8.04.1. It took some hacking to get the various hardware in the eeePC to function. However, I have been avoiding using the external VGA port. From what I know about the current state of Ubuntu desktop, getting dual screens to function flawlessly ranged from simple few clicks affair, to considerable google-fu and hacketry.
However, I was going to make a presentation recently, and could no longer avoid it. Unfortunately, the simple few clicks I was hoping for did not materialize, and it took some hours and significant google-fu before I finally got it to work almost flawlessly. So, here is part 1 (of a two-part post), on how I enabled dual screens on the eeePC 900.
Intel graphics
For completeness, the video hardware of the eeePC 900 is shown below.
00:02.0 VGA compatible controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 04)
This hack should apply to some other Intel-based graphics, though I don’t have the actual hardware to verify. Please leave a comment below if you find this hack works for you, thank you.
Set-up
Here is a list of what I achieved in the dual screens set-up.
- Most of the time, the eeePC 900 will use it’s internal screen at 1024×600 resolution.
- When connected to an external screen via the VGA port, the external screen is assumed to be 1024×768 resolution.
- The switch between single and dual screens should be dynamic, without the need to restart Xorg.
- The external screen should be right-hand side of the internal screen (this is the usual dual screens placement).
- The gnome-panels should stay in the internal screen (there is “a bug” somewhere, which caused the gnome-panels to move to the external screen).
Notes of caution
Before attempting any special hack, I tried two other things, which didn’t work so well or at all. I lists them here, so you might want to skip them to save time (or you could waste a few hours like I did
it’s your choice).
- The standard Ubuntu Hardy “Screen Resolution” utility (found under: Panel Menu > System > Preferences > Screen Resolution).
- The hidden Ubuntu Hardy “Screen and Graphics” utility.
In addition, I should make it clear that my starting point was from a clean “xorg.conf” file. If you have tinkered with the file, I can’t guarantee the final outcome you get will be the same as I did.
Step 1: Define virtual screen size
First, you need to define the virtual screen size. The virtual screen is the “canvas” where the physical screens will be placed in.
For example, let’s say you define a virtual screen of 2048×768. Imagine a graph paper with coordinate 0,0 as the top-left, and 2047,767 as the bottom-right corners. You could put the eeePC internal screen from 0,0 to 1023,599. You could also put an external screen of 1024×768 resolution to the right-hand of the internal screen. The external screen will then be located at 1024,0 to 2047,767.

By default (without the virtual screen explicitly defined), the virtual screen will be the same size as the largest physical screen that Xorg find during start up. Consequently, you wouldn’t be able to define a configuration such as shown above. This could be the reason why the Ubuntu Hardy “Screen Resolution” application was not working.
To define the virtual screen size, edit /etc/X11/xorg.conf manually.
gksudo gedit /etc/X11/xorg.conf
Under Section “Screen”, add the following lines (e.g. shown with virtual screen of 2048×2048).
SubSection "Display" Virtual 2048 2048 EndSubSection
The final Section “Screen” should look like this.
Section "Screen" Identifier "Default Screen" Monitor "Configured Monitor" Device "Configured Video Device" SubSection "Display" Virtual 2048 2048 EndSubSection EndSection
Restart Xorg (or reboot) to apply the changes.
Note that you might loose compiz effects if you define a virtual screen bigger than 2048×2048, though I did not test this (see here).
Step 2: Using xrandr
“Xrandr” is a command line utility that dynamically change the screen configurations. This webpage explained some of the things you can do with “xrandr”.
First, connect the external screen to the eeePC VGA port. To find out the supported modes:
xrandr -q
Here is an example of the command’s output.
$ xrandr -q Screen 0: minimum 320 x 200, current 1024 x 600, maximum 2048 x 2048 VGA connected (normal left inverted right x axis y axis) 1024x768 75.0 + 75.1 70.1 65.7 60.0 832x624 74.6 800x600 72.2 75.0 60.3 56.2 640x480 75.0 72.8 66.7 60.0 720x400 70.1 LVDS connected 1024x600+0+0 (normal left inverted right x axis y axis) 0mm x 0mm 1024x600 57.1*+ 800x600 85.1 72.2 75.0 60.3 56.2 640x480 85.0 72.8 75.0 59.9 720x400 85.0 640x400 85.1 640x350 85.1 TV disconnected (normal left inverted right x axis y axis)
The external screen has a 1024×768 maximum resolution. To set to the configuration described in the previous section:
xrandr --output LVDS --auto --output VGA --auto --right-of LVDS
To set the configuration back to single (internal) screen:
xrandr --output LVDS --auto --output VGA --off
If you are happy with the results, you can stop right here; save the two commands above and you are done.
However, I find three minor problems:
- Compiz cube spanned both screens, resulting in one big cube.
- The gnome-panels in dual screens mode are located in the external screen. I would like them to stay in the internal screen instead.
- I am using “Fill screen” setting for my desktop wallpaper. Upon activating the dual screens mode, the wallpaper stretched into both screens, rather than being duplicated to fill each screen separately.
The solutions for these problems in eeePC dual screens part 2.

Post a Comment