No VESA VBE DDC data on Linux / X / KDE boot --> bad DPI value --> font too big
Hi,
I've been having a problem booting Linux (Slackware 12.2) / X / KDE on two of my machines. The symptom is that the fonts are too big once everything is up.
More accurately, MOST of the time (NOT all of the time) when X / KDE starts after a Linux boot the characters on screen are too large. On the other hand, MOST of the time (but not all of the time) I can get the characters to be the right size by using Ctl-Alt-Backspace to restart X / KDE.
Further, I see this problem on two different machines with two different motherboards, plus I did not have the problem until I installed Slackware 12.2, so I don't believe it's a hardware fault or a device-specific driver fault. Earlier versions of Slackware had run on both these machines for some time with no problem like this.
I did some investigating and found differences in the Xorg.0.log files between the times when the characters are too big and when they come out to be the right size. The differences are summarized as follows:
Xorg.0.log / Characters too big:
--------------------------------
. . .
(II) VESA(0): VESA VBE DDC Level none
(II) VESA(0): VESA VBE DDC transfer in appr. 0 sec.
(II) VESA(0): VESA VBE DDC read failed
[No VBE DDC info]
. . .
(--) VESA(0): Virtual size is 1024x768 (pitch 1024)
. . .
(==) VESA(0): DPI set to (96, 96)
Xorg.0.log / Characters right size:
-----------------------------------
. . .
(II) VESA(0): VESA VBE DDC Level 2
(II) VESA(0): VESA VBE DDC transfer in appr. 1 sec.
(II) VESA(0): VESA VBE DDC read successfully
[Lots of VBE DDC info]
. . .
(II) VESA(0): My Monitor: Using maximum pixel clock of 140.00 MHz
(--) VESA(0): Virtual size is 1024x768 (pitch 1024)
. . .
(**) VESA(0): Display dimensions: (390, 290) mm
(**) VESA(0): DPI set to (66, 67)
When KDE is given an incorrect (higher) pixel DPI (96,96) value, then it is going to use more X and Y pixels to form characters, and when those characters rendered on a screen with an actual DPI of (66,67) the characters will be too large.
Obviously the problem is in obtaining the VESA VBE DDC data in the first place, leading to incorrect pixel DPI values. Fetching VESA VBE DDC data is done in /usr/lib/xorg/modules/libvbe.so, or at least that is where the VESA VBE DDC <whatever> messages exist.
Versions:
X.Org X Server 1.4.2
Release Date: 11 June 2008
X Protocol Version 11, Revision 0
Build Operating System: Slackware 12.1 Slackware Linux Project
Slackware: 12.2.0 patched up to date (Note xorg built for Slackware 12.1)
Linux: 2.6.27.31-smp
libvbe.so is in the Slackware package "xorg-server-1.4.2-i486-1"
KDE version: 3.5.10
This whole thing feels like a race condition in or around libvbe.so such that sometimes it works and sometimes it doesn't. Anyone know of a real fix for this, ie not a work-around forcing the DPI to the correct value in some X parameter file.?
Thanks in advance.
Jeff B.
|