Multiple Monitors with Opensource Radeon Driver and Xorg

Setting up multiple monitors is currently a nice experience. Doing this from krandrtray, which is a very very nice front-end, is easy. But doing it via xorg.conf can be … well … interesting. That’s mostly because each driver has its own method of properly setting up multiple monitors.

Here’s how to setup multiple monitors with xorg.conf when using the opensource radeon driver (tested with 6.14.1). The tricky part (and the one that took me aprox. 1 hour to figure) is to name the Monitors with the exact same name as the card’s outputs.

First, you need to launch X at least once with both monitors connected just to find out the output names. Look at /var/log/Xorg.0.log:

$ grep 'Output.*connected' /var/log/Xorg.0.log
(II) RADEON(0): Output HDMI-0 connected
(II) RADEON(0): Output DIN disconnected
(II) RADEON(0): Output VGA-0 disconnected
(II) RADEON(0): Output DVI-0 connected

From the above search you can see that the connected outputs are named HDMI-0 and DVI-0. You may be able to determine which monitor is connected to which output either by looking up its resolution:

(II) RADEON(0): Output HDMI-0 using initial mode 1920x1200

or other information in Xorg.0.log

Next you need to create or update /etc/X11/xorg.conf. The required relevant sections are as follows:

Section "Monitor"
        Identifier   "HDMI-0"
        Option          "Primary"       "On"
EndSection

Section "Monitor"
        Identifier   "DVI-0"
        Option          "LeftOf"        "HDMI-0"
EndSection

Section "Device"
        Identifier      "Card0"
        Driver          "radeon"
        BusID           "PCI:1:0:0"
        Screen          1
EndSection

Section "Device"
        Identifier      "Card1"
        Driver          "radeon"
        BusID           "PCI:1:0:1"
        Screen          1
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "HDMI-0"
        DefaultDepth    24
        SubSection "Display"
                Depth     24
                Modes   "1920x1200"
        EndSubSection
EndSection

Section "Screen"
        Identifier "Screen1"
        Device  "Card1"
        Monitor "DVI-0"
        DefaultDepth    24
        SubSection "Display"
                Depth 24
                Modes "1440x900"
        EndSubSection
EndSection

Section "ServerLayout"
        Identifier     "Layout0"
        Screen          "Screen0" 1440 0
        Screen          "Screen1" LeftOf "Screen0"
EndSection

Now I’m not sure about the second “LeftOf” because I stopped restarting X and KDM after it worked, but IIRC, it is not required.
As it was mentioned earlier, the tricky part is to named the Monitors as the outputs of the card (HDMI-0 and DVI-0 in my case).
Also, I remember that using the above naming for PciIDs is also required (observer that they are different) and I believe tht the “Monitor” statement inside the “Screen” section doesn’t affect anything.

If everything is setup correctly you should see this in Xorg.0.log:

(II) RADEON(0): Output HDMI-0 using monitor section HDMI-0
(II) RADEON(0): Output DVI-0 using monitor section DVI-0

which indicates that monitor sections where properly matched with outputs.

4 Comments

    • Fglrx is as easy to configure as nvidia’s driver. Also, twinview is proprietary and only works with one card (no?), so we should let it die in peace :-). Perhaps MergedFB will replace twinview in the future as a standard method.

  1. When you set up your monitors try to rotate them and use them for few days in portrait orientation. I did the same before 1-2 years and so far i can’t imagine how is the widescreen landscape (i don’t play games so i don’t loose much with this setup). Usually they can’t stand on their original base so i took two (expensive) clamps from plaisio and the story goes as i said at the begging.

  2. Well, it’s a problem when both screens show garbage and random noise when a second monitor is found. Also, might I mention that I have no xorg.conf? How do I configure this with mks enabled?

Leave a Reply

Your email address will not be published. Required fields are marked *