Wednesday, June 3, 2009

Dual monitor setup with Fedora 10 and ATI graphics card

I have a Lenovo T60 with ATI graphics card. Here is the detail

[prabhat@eejot ~]$ lspci | grep VGA
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility X1400

I installed Fedora 10 (Cambridge) and everything worked out of box except dual monitor setup. I can not function well without dual monitor. I usually put Eclipse/JBDS on one screen and the rest (email, chat, browser etc) on the other screen. Now dual monitor not working out of the box is not unusual given that ATI driver is proprietary and Fedora does not bundle it. But installing the driver should not be hard, right? I was in for a surprise. It took me more than a day and help of my colleague who also uses similar environment to figure this out. I have seen that lots of other folks have this problem but I could not find the complete solution in one place so here is my attempt to help others and possibly myself in future.

The driver you get from ATI is crap. If you follow the document (which makes you feel like you are going to setup a rocket for launch), it will act as if everything was installed but when you restart your machine, all you get is a black screen. What you need is a fglrx driver. Here are the details:

1. Get RPMFusion Repos

rpm -Uvh

2. Install Fglrx

yum install akmod-fglrx xorg-x11-drv-fglrx xorg-x11-drv-fglrx-libs -y

3. Blacklist Radeon
Add the line "blacklist radeon" in the file /etc/modprobe.d/blacklist

4. Reboot

5. Make initrd with fglrx
While booting at grub, press 'a' and append 'single' to the command.
cd /boot/
mv initrd-`uname -r`.img initrd-`uname -r`.img.backup
mkinitrd initrd-`uname -r`.img `uname -r` --with=fglrx
6. Reboot

This installs fglrx driver. Now if you do
 aticonfig --initial -f
It will create a basic xorg.conf at /etc/X11. At this stage your two monitors are clone to each other. For dual monitor, aticonfig --help says to do 'aticonfig --dtop=horizontal' or 'aticonfig --initial=dual-head --screen-layout=right'. Doing the latter approach changed the xorg.conf but on restart, it did not give me a dual monitor and it messed up lots of other stuff like mouse pointer would only show up on one monitor etc. Then I tried 'aticonfig --dtop=horizontal' and I got the error Error: Options, e.g. --dtop and --desktop-setup, are not supported when RandR 1.2 is enabled!. So I had to disable RandR and you do that by:

7.1. Edit /etc/ati/amdpcsdb and in the section labeled [AMDPCSROOT/SYSTEM/DDX] add :

7.2. In the Device section under /etc/X11/xorg.conf, add:
Option      "EnableRandR12" "false" 
8. Reboot. This should give you a dual monitor which are not clone of each other.

Now, I was not able to drag windows across monitors and this was because of Xinerama was not enabled.

9. Enable Xinerama
In ServerLayout section in xorg.conf, add

Option     "Xinerama" "on"
Reboot and you are done. From now I would think twice before I get a laptop with ATI graphics card.

Note: For changes in xorg.conf, you don't have to literally reboot. You just have to restart xwindow which you can do by Ctrl+Alt+Backspace.



Terje said...

I am amazed.

I started writing a comment about how everything worked fine except the last Xinerama step.

I have done this over and over so many different ways, and I always end up being unable to move a window from one monitor to another.

Now this suddenly works o_O

However when I move the mouse from one monitor to another, the mouse pointer leaves a little copy of itself on the edge of the monitor it just left. Kinda annoying, but atleast it works (almost fooled me to thinking it didn't work)!

Upon further testing I have found out when I try to move the 'folder view' stuff in KDE the mouse loses them when it passes over to another monitor. Other windows and programs work though.

Prabhat Jha said...

I am glad it helped you. I did not encounter mouse pointer problem so I do not know what to suggest you.

metrojan said...

Thanks for the detailed instructions. I was off and running when I realized the fglrx packages wouldn't be found.
Any tips?

sudo yum install akmod-fglrx xorg-x11-drv-fglrx xorg-x11-drv-fglrx-libs -y
Loaded plugins: refresh-packagekit
Setting up Install Process
No package akmod-fglrx available.

I'm using a very similar setup as you: Fedora 10 on a T60,
01:00.0 VGA compatible controller: ATI Technologies Inc M52 [Mobility Radeon X1300]

Prabhat Jha said...

Did you do step 1 or did you see any problem when you tried to add RPMFusion repo?