View Full Version : Getting an external monitor to display correctly with Intel 945GM chipset


jdaviestx
04-24-2007, 11:48 AM
I recently bought a new Toshiba Sattelite A35 and immediately installed Debian Etch onto a secondary partition (I'm keeping Windows Vista around until I can safely completely ditch it). It has an Intel graphics card; according to "lspci":

00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)

The display works great when I use the laptop by itself. However, I also bought a Samsung Syncmaster 226BW external flat panel for use when the laptop is docked. Unfortunately, although the display appears on the external monitor, it displays at the laptops internal screen's native resolution (of 1280x800) rather than the Syncmaster's native resolution of 1680x1050. I know that the card can handle this resolution, because when I dual-boot back to Windows, it displays beautifully.

I did some googling and discovered the "915resolution" Video BIOS mode hack, but that hasn't worked for me yet - I always get a 1280x800 display. Here's what I did with 915resolution:

# ./915resolution 5c 1680 1050 24

(I picked mode 5c more or less at random... the 915resolution docs seem to indicate it doesn't matter).

Here's an abbreviated copy of my xorg.conf:

Section "Module"
Load "i2c"
Load "bitmap"
Load "ddc"
# Load "dri"
Load "extmod"
Load "freetype"
# Load "glx"
Load "int10"
Load "vbe"
EndSection
Section "Device"
Identifier "Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller" Driver "i810"
BusID "PCI:0:2:0"
EndSection

Section "Device"
Identifier "External VGA"
Driver "i810"
BusID "PCI:0:2:1"
Option "MonitorLayout" "DFP"
EndSection

Section "Monitor"
Identifier "SyncMaster"
DisplaySize 432 324
HorizSync 30.0 - 81.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection
Section "Screen"
Identifier "Default Screen"
Device "Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller"
Monitor "SyncMaster"
DefaultDepth 24
SubSection "Display"
Depth 16
Modes "1680x1050" "1280x800"
EndSubSection
SubSection "Display"
Depth 24
Modes "1680x1050" "1280x800"
EndSubSection
EndSection

Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "Synaptics Touchpad"
EndSection

As you can see, I've been commenting things out more or less at random hoping that something will work.

According to xdpyinfo, I'm using xorg version 7.1.1 (a recent "dselect" didn't show any available updates). Here's an abbreviated copy of my /var/log/Xorg.log file (I can post the whole thing, but apparently there's a 10,000 character limit):


X Window System Version 7.1.1
Release Date: 12 May 2006
X Protocol Version 11, Revision 0, Release 7.1.1
Build Operating System: UNKNOWN
<snip>
(==) ServerLayout "Default Layout"
(**) |-->Screen "Default Screen" (0)
(**) | |-->Monitor "SyncMaster"
(**) | |-->Device "Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller"
<snip>
(--) PCI:*(0:2:0) Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller rev 3, Mem @ 0xdc100000/19, 0xc0000000/28, 0xdc200000/18, I/O @ 0x1800/3
(--) PCI: (0:2:1) Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller rev 3, Mem @ 0xdc180000/19
<snip>
(II) I810: Driver for Intel Integrated Graphics Chipsets: i810, i810-dc100,
i810e, i815, i830M, 845G, 852GM/855GM, 865G, 915G, E7221 (i915),
915GM, 945G, 945GM, 965G, 965G, 965Q, 946GZ
(II) Primary Device is: PCI 00:02:0
(WW) I810: No matching Device section for instance (BusID PCI:0:2:1) found
(--) Chipset 945GM found
<snip>
(II) Setting vga for screen 0.
<snip>
ABI class: X.Org Video Driver, version 1.0
(WW) I810(0): Bad V_BIOS checksum
(II) I810(0): Primary V_BIOS segment is: 0xc000
(II) I810(0): VESA BIOS detected
(II) I810(0): VESA VBE Version 3.0
(II) I810(0): VESA VBE Total Mem: 7872 kB
(II) I810(0): VESA VBE OEM: Intel(r) 82945GM Chipset Family Graphics Chip Accelerated VGA BIOS
(II) I810(0): VESA VBE OEM Software Rev: 1.0
(II) I810(0): VESA VBE OEM Vendor: Intel Corporation
(II) I810(0): VESA VBE OEM Product: Intel(r) 82945GM Chipset Family Graphics Controller
(II) I810(0): VESA VBE OEM Product Rev: Hardware Version 0.0
(II) I810(0): Integrated Graphics Chipset: Intel(R) 945GM
(--) I810(0): Chipset: "945GM"
(--) I810(0): Linear framebuffer at 0xC0000000
(--) I810(0): IO registers at addr 0xDC100000
(II) I810(0): 2 display pipes available.
(II) I810(0): detected 7932 kB stolen memory.
(II) I810(0): Kernel reported 488960 total, 1 used
(II) I810(0): I830CheckAvailableMemory: 1955836 kB available
(II) I810(0): Monitoring connected displays enabled
(II) I810(0): Will attempt to tell the BIOS that there is 12288 kB VideoRAM
(II) Loading sub module "int10"
(II) LoadModule: "int10"
(II) Reloading /usr/lib/xorg/modules/libint10.so
(II) I810(0): initializing int10
(WW) I810(0): Bad V_BIOS checksum
(II) I810(0): Primary V_BIOS segment is: 0xc000
(II) I810(0): VESA BIOS detected
(II) I810(0): VESA VBE Version 3.0
(II) I810(0): VESA VBE Total Mem: 12288 kB
(II) I810(0): VESA VBE OEM: Intel(r) 82945GM Chipset Family Graphics Chip Accelerated VGA BIOS
(II) I810(0): VESA VBE OEM Software Rev: 1.0
(II) I810(0): VESA VBE OEM Vendor: Intel Corporation
(II) I810(0): VESA VBE OEM Product: Intel(r) 82945GM Chipset Family Graphics Controller
(II) I810(0): VESA VBE OEM Product Rev: Hardware Version 0.0
(II) I810(0): BIOS now sees 12288 kB VideoRAM
(--) I810(0): Pre-allocated VideoRAM: 7932 kByte
(==) I810(0): VideoRAM: 65536 kByte
(==) I810(0): video overlay key set to 0x101fe
(**) I810(0): page flipping disabled
(==) I810(0): Using gamma correction (1.0, 1.0, 1.0)
(II) I810(0): BIOS Build: 1377
(==) I810(0): Device Presence: disabled.
(==) I810(0): Display Info: enabled.
(II) I810(0): Broken BIOSes cause the system to hang here.
If you encounter this problem please add
Option "DisplayInfo" "FALSE"
to the Device section of your XF86Config file.
(II) I810(0): Display Info: CRT: attached: TRUE, present: TRUE, size: (720,400)
(II) I810(0): Display Info: TV: attached: TRUE, present: TRUE, size: (1024,768)
(II) I810(0): Display Info: DFP (digital flat panel): attached: FALSE, present: FALSE, size: (0,2827)
(II) I810(0): Display Info: LFP (local flat panel): attached: TRUE, present: TRUE, size: (1280,800)
(II) I810(0): Display Info: Second (second CRT): attached: FALSE, present: FALSE, size: (0,2827)
(II) I810(0): Display Info: TV2 (second TV): attached: FALSE, present: FALSE, size: (0,2827)
(II) I810(0): Display Info: DFP2 (second digital flat panel): attached: FALSE, present: FALSE, size: (0,2827)
(II) I810(0): Display Info: LFP2 (second local flat panel): attached: FALSE, present: FALSE, size: (0,2827)
(II) I810(0): Currently active displays on Pipe A:
(II) I810(0): CRT
(II) I810(0): No active displays on Pipe B.
(==) I810(0): Display is using Pipe A
(--) I810(0): Maximum frambuffer space: 65368 kByte
(II) Loading sub module "ddc"
(II) LoadModule: "ddc"
(II) Reloading /usr/lib/xorg/modules/libddc.so
(II) I810(0): VESA VBE DDC supported
(II) I810(0): VESA VBE DDC Level 2
(II) I810(0): VESA VBE DDC transfer in appr. 1 sec.
(II) I810(0): VESA VBE DDC read successfully
(II) I810(0): Manufacturer: SAM Model: 27e Serial#: 1296380466
(II) I810(0): Year: 2007 Week: 4
(II) I810(0): EDID Version: 1.3
(II) I810(0): Analog Display Input, Input Voltage Level: 0.700/0.300 V
(II) I810(0): Sync: Separate Composite SyncOnGreen
(II) I810(0): Max H-Image Size [cm]: horiz.: 47 vert.: 30
(II) I810(0): Gamma: 2.20
(II) I810(0): DPMS capabilities: Off; RGB/Color Display
(II) I810(0): First detailed timing is preferred mode
(II) I810(0): redX: 0.644 redY: 0.333 greenX: 0.286 greenY: 0.603
(II) I810(0): blueX: 0.152 blueY: 0.079 whiteX: 0.313 whiteY: 0.329
(II) I810(0): Supported VESA Video Modes:
(II) I810(0): 720x400@70Hz
(II) I810(0): 640x480@60Hz
(II) I810(0): 640x480@67Hz
(II) I810(0): 640x480@72Hz
(II) I810(0): 640x480@75Hz
(II) I810(0): 800x600@56Hz
(II) I810(0): 800x600@60Hz
(II) I810(0): 800x600@72Hz
(II) I810(0): 800x600@75Hz
(II) I810(0): 832x624@75Hz
(II) I810(0): 1024x768@60Hz
(II) I810(0): 1024x768@70Hz
(II) I810(0): 1024x768@75Hz
(II) I810(0): 1280x1024@75Hz
(II) I810(0): 1152x870@75Hz
(II) I810(0): Manufacturer's mask: 0
(II) I810(0): Supported Future Video Modes:
(II) I810(0): #0: hsize: 1680 vsize 1050 refresh: 60 vid: 179
(II) I810(0): #1: hsize: 1280 vsize 1024 refresh: 60 vid: 32897
(II) I810(0): #2: hsize: 1280 vsize 960 refresh: 60 vid: 16513
(II) I810(0): #3: hsize: 1152 vsize 864 refresh: 75 vid: 20337
(II) I810(0): Supported additional Video Mode:
(II) I810(0): clock: 119.0 MHz Image Size: 474 x 296 mm
(II) I810(0): h_active: 1680 h_sync: 1728 h_sync_end 1760 h_blank_end 1840 h_border: 0
(II) I810(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1080 v_border: 0
(II) I810(0): Ranges: V min: 56 V max: 75 Hz, H min: 30 H max: 81 kHz, PixClock max 140 MHz
(II) I810(0): Monitor name: SyncMaster
(II) I810(0): Serial No: HVCP102448
(II) I810(0): Will use BIOS call 0x5f05 to set refresh rates for CRTs.
(--) I810(0): Maximum space available for video modes: 12288 kByte
(II) I810(0): Using detected DDC timings
(II) I810(0): HorizSync 30-81
(II) I810(0): VertRefresh 56-75

<snip>

Any thoughts? I'd hate to have to resign myself to using (shudder) Vista whenever the machine is docked...

leonard
04-25-2007, 11:08 AM
Try to delete resultion "1280x800" from xorg.conf:

Section "Screen"
Identifier "Default Screen"
Device "Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller"
Monitor "SyncMaster"
DefaultDepth 24
SubSection "Display"
Depth 16
Modes "1680x1050"
EndSubSection
SubSection "Display"
Depth 24
Modes "1680x1050"
EndSubSection
EndSection

jdaviestx
04-27-2007, 07:24 AM
Thanks for the suggestion; although that wasn't it either. I did finally figure this out; I found the final clue here:

http://www.wahlau.org/samsung_225bw_with_xorg_on_ubuntu_linux

The trick is that you HAVE to add a mode line to your monitor section. In my case, I added it based on this output from xorg.log:

II) I810(0): Supported additional Video Mode:
(II) I810(0): clock: 119.0 MHz Image Size: 474 x 296 mm
(II) I810(0): h_active: 1680 h_sync: 1728 h_sync_end 1760 h_blank_end 1840 h_border: 0
(II) I810(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1080 v_border: 0
(II) I810(0): Ranges: V min: 56 V max: 75 Hz, H min: 30 H max: 81 kHz, PixClock max 140 MHz

Apparently, although it's reported by X, X doesn't know how to automatically apply this; I had to modify my Monitor section to read:

Section "Monitor"
Identifier "SyncMaster"
DisplaySize 474 296
HorizSync 30.0 - 81.0
VertRefresh 56.0 - 75.0
Modeline "1680x1050" 119.0 1680 1728 1760 1840 1050 1053 1059 1080
Option "DPMS"
EndSection

In addition to running the 915resolution hack; if I don't do both of these things, I don't get the correct output.

Also - if you're following along at home - DO NOT blindly cut and paste that mode line! Find the "Supported additional video mode" section in your xorg.log, and get the correct numbers from there! If you give the driver an invalid modeline, you WILL destroy your monitor.

Finally - this post:

http://www.redhat.com/archives/nahant-list/2006-August/msg00129.html

tipped me off to replacing the 1600x1200 mode line in the video BIOS rather than just selecting one at random; although the 915resolution documentation doesn't indicate that it matters, it appears to, at least for my card.

exmatech
07-05-2007, 06:33 PM
I am having same problem with my HP Compaq nx6310 Intel Centrino Duo. Could any one in the world can help me on this. Thanking you in advance

my lspci :

00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)

Laptop Deals