wwd.ca

 

mon petit blogue sans importance...

samsung 205BW in Feisty...

I couldn't get that monitor to work in its native resolution (1680x1050 60Hz) in Ubuntu Feisty, with the Intel driver... tried almost everything. Finally googled deep enough to find the problem, so here's the solution, in case you're still searching.


At work i have an integrated intel card:

Intel Corporation 82Q963/Q965 Integrated Graphics Controller (rev 02)

on a desktop, hooked via analog VGA to a Samsung 205BW. I had tried many many combinations of tricks in my xorg.conf, but the best i could get was X (and xrandr) telling me "yep, we're in 1680x1050!", but the actual display was terrible, and the monitor was telling me it was receiving 1400x1050 (which would explain perfectly how bad all the text looked)

The problem seems to be that the monitor is sending bad polarity information in its EDID data. Someone smarter than me patched the xorg server to insert a "this monitor is braindead" portion. See this thread. What you need to do is to patch the xserver-xorg-core code to include the patch.

First, it might help if you have the more recent versions of xrandr, xorg and the intel driver. This page helps; here's the meat:

echo deb http://burtonini.com/debian/ feisty/|sudo tee -a /etc/apt/sources.list
echo deb-src http://burtonini.com/debian/ feisty/|sudo tee -a /etc/apt/sources.list
sudo apt-key advanced --keyserver subkeys.pgp.net --recv-keys 0x510E0293
sudo apt-get update
sudo apt-get -V install  xrandr  xserver-xorg-video-intel  xserver-xorg-core

Once you've done that, you have newer versions of the x server and the intel driver. If you don't use the intel driver, take xserver-xorg-video-intel out of the last line. These packages are backports of the newer gutsy gibbon packages (if you're reading this in the future and you're using gutsy already, and the package hasn't been patched properly, follow the rest of the instructions, but skip the above commands)

Now, you need to get the source code of the xserver-xorg-core package, patch it and rebuild it. To save you the steps of rebuilding, you can download my package instead. Otherwise, follow the steps below:

mkdir src; cd src
apt-get source xserver-xorg-core
sudo apt-get build-dep xserver-xorg-core
sudo apt-get install -u fakeroot

The person who put up the burtonini repository didn't post the xserver-xorg-core source package, though, so you need to download the package from the ubuntu gutsy repo. Then,

tar xzf xorg-server_1.3.0.0.dfsg.orig.tar.gz
cd xorg-server-1.3.0.0
gunzip -c ../xorg-server_1.3.0.0.dfsg-1feisty1.diff.gz |patch -p1
vim hw/xfree86/modes/xf86EdidModes.c

Around line 92, you'll see this:

    /* Samsung SyncMaster 226BW */
    if (memcmp (DDC->vendor.name, "SAM", 4) == 0 &&
    DDC->vendor.prod_id == 638)
    return TRUE;

Add this block right after it, and before the "return FALSE":

    /* Samsung SyncMaster 205BW */
    if (memcmp (DDC->vendor.name, "SAM", 4) == 0 &&
        DDC->vendor.prod_id == 541)
    return TRUE;

Now you're ready to recompile:

dpkg-buildpackage -rfakeroot

Go make yourself coffee, it'll take a while. When it's done, install the new package:

cd ..
sudo dpkg -i xserver-xorg-core_1.3.0.0.dfsg-1feisty1_i386.deb

And that's it, providing you have the right xorg.conf. You can peek at mine here.

by wiswaud on 6 July 2007
Tags: english, geeky, linux, ubuntu

Comments

wiswaud 10 July 2007 08:14 EDT

Tried the trick again with my laptop - which was being repaired when i did the above - and it worked like a charm. This really is the problem.

Share this page
| More

follow me on Twitter