Comment 81 for bug 151311

Revision history for this message
PJSingh5000 (pjsingh5000) wrote : Re: DDC report some ridiculous physical screen size (Mostly on Intel driver, and some ATI)

I think The X Resize and Rotate Extension (RandR) is getting confused between multiple monitors, when the chipset is dual-head capable, and multiple monitors are not present. Here is an xorg.conf solution/work-around that is working very well for me so far. This also fixes the font size and resolution problems in both KDM and the user's X Session.

PART A - Collect Information
----------------------------

Step 1: At the terminal, enter xrandr.

Here is an example of the output...

$ xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1680 x 1680
VGA disconnected (normal left inverted right)
LVDS connected 1024x768+0+0 (normal left inverted right) 0mm x 0mm
   1024x768 60.0*+ 85.0 75.0 70.1 60.0
   832x624 74.6
   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
TMDS-1 connected 1024x768+0+0 (normal left inverted right) 433mm x 270mm
   1680x1050 59.9 + 60.0
   1280x1024 75.0 59.9
   1440x900 59.9
   1280x960 59.9
   1360x765 59.8
   1280x800 59.8
   1152x864 75.0 60.0
   1280x720 59.9
   1024x768 75.1* 70.1 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
TV disconnected (normal left inverted right)
$

Notice that there are two monitors that are active (LVDS and TMDS-1). The current resolution of each monitor is indicated by an "*". LVDS is typically a laptop screen, and TMDS-1 is typically your 1st DVI monitor.

The current resolution on LVDS has been set to its preferred resolution of 1024x768, indicated by "+" in the LVDS section of the xrandr output. It seems that the current resolution of TMDS-1 has *also* been set to the preferred resolution of LVDS (i.e. 1024x768)! However the preferred resolution for TMDS-1 is actually 1680x1050, as indicated by the "+" in the TMDS-1 section above.

As a result, the output of the DVI monitor will be at 1024x768 instead of 1680x1050.

You could use the following command to select the desired resolution after logging in each time, but this is a manual fix that does not address the KDM resolution issue:
    $xrandr -s 1680x1050

A more elegant solution can be achieved if you do not have one of the listed monitors. For example, my system has a DVI monotor (TMDS-1) and no laptop screen (LVDS). The problem is that the current resolution on the DVI monitor (TMDS-1) is being set to the preferred resolution of the non-existent laptop screen (LVDS).

PART B - Edit xorg.conf
-----------------------

Make the following changes to xorg.conf...

Step 1: Create a "Monitor" section for the existing monitor (listed in the xrandr output).
Step 2: Create a "Monitor" section for the non-existent monitor (listed in the xrandr output).
Step 3: For the non-existent monitor, add the Option "Ignore" "true".
Step 4: Associate the existing monitor with the "Device" so it can be used.
        Remember to PREFIX the monitor name from the xrandr output with "monitor-".
Step 5: Associate the non-existent monitor with the "Device" so it can be ignored.
        Remember to PREFIX the monitor name from the xrandr output with "monitor-".

Here is an example xorg.conf file with notes...

# MONITOR SECTION
# This is the DVI monitor that has a native resolution of 1680x1050 (Step 1)
Section "Monitor"
    Identifier "DCLCD"
    Option "DPMS"
EndSection

# MONITOR SECTION
# This is monitor does not exist, but xrandr thinks it does. (Step 2)
Section "Monitor"
    Identifier "LVDS"
    # Ignore this monitor because it does not exist. (Step 3)
    Option "Ignore" "true"
EndSection

# DEVICE SECTION
Section "Device"
    Identifier "Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller"
    Driver "intel"
    BusID "PCI:0:2:0"

    # Associate the DVI monitor with the intel driver/chipset so it can be used. (Step 4)
    # - The first parameter is the name of the monitor from xrandr output, prefixed with "monitor-".
    # - The second parameter is the monitor's Identifier, as specified in the "Monitor" section.

    Option "monitor-TMDS-1" "DCLCD"

    # Associate the non-existent monitor with the intel driver/chipset so it can be ignored. (Step 5)
    # - The first parameter is the name of the monitor from xrandr output, prefixed with "monitor-".
    # - The second parameter is the monitor's Identifier, as specified in the "Monitor" section.

    Option "monitor-LVDS" "LVDS"

EndSection

# SCREEN SECTION
# Specify the desired resolution(s) in this section.
Section "Screen"
    Identifier "Default Screen"
    Device "Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller"
    Monitor "DCLCD"
    DefaultDepth 24
    SubSection "Display"
        Modes "1680x1050"
    EndSubSection
EndSection

Please let me know if this solution/work-around helps.