Hi!

Ref. item 9 on <URL:http://wiki.debian.org/DebianEdu/Meeting/20070813>,
here is a update proposal for the stable release.

I propose to update the version of xdebconfigurator in the stable
repository from1.30.edu.etch.1 to 1.34~edu.etch.1.  This solves
problems on many clients with screens that support more than 1024x768
by correcting the ddcprobe parsing, adding xresprobe parsing,
improving the MonitorsDB parsing and adding the option to provide
monitor frequency overrides in /etc/xdebconfigurator/MonitorsDB.  It
also remove the obsolete base-config files.  The new version is a
clean backport from 1.34 which was uploaded to Debian a few days ago.

Here is the diff -r output between the two versions:

diff -Nru /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/debian/changelog 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/debian/changelog
--- /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/debian/changelog   
2007-11-19 02:05:57.000000000 +0100
+++ /tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/debian/changelog   
2008-06-25 19:40:46.000000000 +0200
@@ -1,8 +1,60 @@
-xdebconfigurator (1.30.edu.etch.1) terra; urgency=low
+xdebconfigurator (1.34~edu.etch.1) terra; urgency=low
 
-  * Remove the crafted .svn files from the package
+  * Backport to Debian Edu/Etch.
 
- -- Steffen Joeris <[EMAIL PROTECTED]>  Mon, 19 Nov 2007 12:05:26 +1100
+ -- Petter Reinholdtsen <[EMAIL PROTECTED]>  Wed, 25 Jun 2008 19:38:09 +0200
+
+xdebconfigurator (1.34) unstable; urgency=low
+
+  * Rewrite how ddcprobe output is processed, to handle all listed
+    resolutions and fetch monitor frequence.
+  * Add example output from ddcprobe on a few machines.
+  * Add support for xresprobe, and prefer it over ddcprobe.  Recommend
+    it instead of read-edid (Closes: #286668, #305423, #305426,
+    #418746).
+  * Rewrite handling of the monitor database
+    (/usr/share/hwdata/MonitorsDB), to use the values there if the
+    eisa ID is there.  This allow us to override monitors with
+    incorrect DDC information.
+  * Start on our own MonitorsDB file, to allow us to include our own
+    override values, and also use a file in /etc/ for site specific
+    overrides.
+  * Remove obsolete base-config fragments.
+  * Updated standards-version to 3.8.0.
+  * Avoid bashism in init.d script (Closes: #486061).
+
+ -- Petter Reinholdtsen <[EMAIL PROTECTED]>  Wed, 25 Jun 2008 19:32:45 +0200
+
+xdebconfigurator (1.33) unstable; urgency=low
+
+  * Force removal of init.d symlinks when updating the runlevels
+    (Closes: #472773).
+
+ -- Petter Reinholdtsen <[EMAIL PROTECTED]>  Sat, 26 Apr 2008 22:53:22 +0200
+
+xdebconfigurator (1.32) unstable; urgency=low
+
+  [ Petter Reinholdtsen ]
+  * Do not use kudzu and detect by default, as both are obsolete in Debian.
+  * Make sure init.d/xdebconfigurator is only used as a start script,
+    and start after syslog and before (xdm kdm gdm ldm).
+
+ -- Petter Reinholdtsen <[EMAIL PROTECTED]>  Tue, 25 Mar 2008 16:54:55 +0100
+
+xdebconfigurator (1.31) unstable; urgency=low
+
+  [ Petter Reinholdtsen ]
+  * Drop the default-stop values from init.d/xdebconfigurator.  This
+    script is only useful as a start script.
+
+  [ Holger Levsen ]
+  * bumped standards version to 3.7.3, upgraded link to
+    /usr/share/common/licences/GPL-2 in copyright
+  * fix national encoding in copyright
+  * added myself to uploaders
+  * don't ignore errors from "make clean" in rules
+
+ -- Holger Levsen <[EMAIL PROTECTED]>  Thu, 14 Feb 2008 14:20:46 +0000
 
 xdebconfigurator (1.30) unstable; urgency=low
 
diff -Nru /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/debian/control 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/debian/control
--- /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/debian/control     
2007-11-19 01:28:38.000000000 +0100
+++ /tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/debian/control     
2008-06-23 11:41:24.000000000 +0200
@@ -2,15 +2,15 @@
 Section: x11
 Priority: optional
 Maintainer: Debian Edu Developers <[email protected]>
-Uploaders: Petter Reinholdtsen <[EMAIL PROTECTED]>, Andreas Schuldei <[EMAIL 
PROTECTED]>, Morten Werner Forsbring <[EMAIL PROTECTED]>, Steffen Joeris 
<[EMAIL PROTECTED]>
+Uploaders: Petter Reinholdtsen <[EMAIL PROTECTED]>, Andreas Schuldei <[EMAIL 
PROTECTED]>, Morten Werner Forsbring <[EMAIL PROTECTED]>, Steffen Joeris 
<[EMAIL PROTECTED]>, Holger Levsen <[EMAIL PROTECTED]>
 Build-Depends: debhelper (>= 4)
-Standards-Version: 3.7.2
+Standards-Version: 3.8.0
 
 Package: xdebconfigurator
 Architecture: all
 Depends: ${misc:Depends}, perl-modules, discover | discover1, hwinfo
-Recommends: read-edid
-Suggests: kudzu, xresprobe | kudzu-vesa, detect, lsb-base
+Recommends: xresprobe
+Suggests: read-edid, kudzu, detect, lsb-base
 Description: A script used with debconf to autoconfigure xserver-xorg
  A script-package used in conjunction with debconf to autoconfigure
  xserver-xfree86 and xserver-xorg.  This script is supposed to help setup
diff -Nru /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/debian/copyright 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/debian/copyright
--- /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/debian/copyright   
2007-07-10 12:32:13.000000000 +0200
+++ /tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/debian/copyright   
2008-03-25 16:52:20.000000000 +0100
@@ -1,9 +1,9 @@
-This package was debianized by Kristoffer Tjærnås [EMAIL PROTECTED] on
+This package was debianized by Kristoffer Tjærnås [EMAIL PROTECTED] on
 Fri, 12 Apr 2002 19:58:53 +0200.
 
-Created by Kristoffer Tjærnås
+Created by Kristoffer Tjænå
 
-Copyright: (c) 2002 Kristoffer Tjærnås
+Copyright: (c) 2002 Kristoffer Tjærnå
 
 Licensed under the GNU General Public License, version 2.  See the file
-/usr/share/common-licenses/GPL or <http://www.gnu.org/copyleft/gpl.txt>.
+/usr/share/common-licenses/GPL-2 or <http://www.gnu.org/copyleft/gpl.txt>.
diff -Nru /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/debian/dirs 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/debian/dirs
--- /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/debian/dirs        
2007-07-10 12:32:13.000000000 +0200
+++ /tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/debian/dirs        
2008-06-25 08:48:57.000000000 +0200
@@ -1,3 +1,4 @@
+etc/xdebconfigurator
 usr/sbin
 usr/share/lintian/overrides
 usr/share/xdebconfigurator
diff -Nru /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/debian/preinst 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/debian/preinst
--- /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/debian/preinst     
1970-01-01 01:00:00.000000000 +0100
+++ /tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/debian/preinst     
2008-03-26 11:50:14.000000000 +0100
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+if [ ! -z $2 ] && dpkg --compare-versions "$2" le "1.31"; then
+    update-rc.d -f xdebconfigurator remove # Replacing with updated settings
+fi
+
+#DEBHELPER#
diff -Nru /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/debian/rules 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/debian/rules
--- /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/debian/rules       
2007-07-10 12:32:13.000000000 +0200
+++ /tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/debian/rules       
2008-03-25 16:52:20.000000000 +0100
@@ -18,7 +18,7 @@
 clean:
        dh_testdir
        # Add here commands to clean up after the build process.
-       -$(MAKE) clean
+       $(MAKE) clean
 
        dh_clean 
 
@@ -49,7 +49,7 @@
 #      dh_installemacsen
 #      dh_installpam
 #      dh_installmime
-       dh_installinit
+       dh_installinit --no-restart-on-upgrade --no-start 
--update-rcd-params="start 20 2 3 4 5 ."
 #      dh_installcron
 #      dh_installinfo
        dh_installman xdebconfigurator.8
diff -Nru 
/tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/debian/xdebconfigurator.init 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/debian/xdebconfigurator.init
--- 
/tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/debian/xdebconfigurator.init   
    2007-07-10 12:32:13.000000000 +0200
+++ 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/debian/xdebconfigurator.init   
    2008-06-25 19:18:40.000000000 +0200
@@ -3,10 +3,11 @@
 #
 ### BEGIN INIT INFO
 # Provides:          xdebconfigurator
-# Required-Start:    $syslog
-# Required-Stop:     $syslog
+# Required-Start:    $remote_fs $syslog
+# Required-Stop:     $remote_fs $syslog
+# X-Start-Before:    xdm kdm gdm ldm
 # Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
+# Default-Stop:
 # Short-Description: Genererate xfree86 configuration at boot time
 # Description:       Preseed X configuration and use dexconf to 
 #                    genereate a new configuration file.
@@ -46,7 +47,7 @@
     stop|restart|force-reload|status)
         ;;
     *)
-        echo $"Usage: $0 {start|stop|restart|force-reload|status}"
+        echo "Usage: $0 {start|stop|restart|force-reload|status}"
         exit 2
         ;;
 esac
diff -Nru /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/Makefile 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/Makefile
--- /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/Makefile   2007-07-10 
12:32:13.000000000 +0200
+++ /tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/Makefile   2008-06-24 
17:55:51.000000000 +0200
@@ -10,34 +10,26 @@
 pkgdir  = $(datadir)/$(package)
 docdir  = $(datadir)/doc/$(package)
 
-baseconfigdir = $(prefix)/lib/base-config
-
-XDFILES = Xdriver.pl
+XDPROG = Xdriver.pl
+XDDATA = MonitorsDB  
 
 all:
 
-install-baseconfig:
-       $(INSTALL) -d $(DESTDIR)$(baseconfigdir)/menu
-       # Install Sarge fragment
-       $(INSTALL_DATA) base-config/menu/xdebconfigurator.mnu \
-               $(DESTDIR)$(baseconfigdir)/menu/xdebconfigurator.mnu
-       $(INSTALL) base-config/76xdebconfigurator \
-               $(DESTDIR)$(baseconfigdir)/menu/xdebconfigurator
-       # Install Woody fragment
-       ln -s menu/xdebconfigurator \
-               $(DESTDIR)$(baseconfigdir)/76xdebconfigurator
-
-install: install-baseconfig
+install:
        $(INSTALL) -d $(DESTDIR)$(sbindir)
        $(INSTALL) -d $(DESTDIR)$(pkgdir)
        $(INSTALL) -d $(DESTDIR)$(docdir)
 
        $(INSTALL) xdebconfigurator $(DESTDIR)$(sbindir)/xdebconfigurator
 
-       for xd in $(XDFILES); do \
+       for xd in $(XDPROG); do \
                $(INSTALL) $$xd $(DESTDIR)$(pkgdir)/$$xd; \
        done
 
+       for xd in $(XDDATA); do \
+               $(INSTALL_DATA) $$xd $(DESTDIR)$(pkgdir)/$$xd; \
+       done
+
        $(INSTALL_DATA) README $(DESTDIR)$(docdir)/README
 
 clean:
diff -Nru /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/MonitorsDB 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/MonitorsDB
--- /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/MonitorsDB 1970-01-01 
01:00:00.000000000 +0100
+++ /tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/MonitorsDB 2008-06-24 
17:51:00.000000000 +0200
@@ -0,0 +1,12 @@
+#
+# Monitor information for use by xdebconfigurator.  Using the same
+# format as the MonitorsDB file in hwdata from kudzu/RedHat
+#
+# Each line has format:
+#   <Manufacturer>; <Monitor name>; <EISA ID (if any)>; <horiz sync in \
+#   Khz>; <vert sync in Hz>; DPMS support
+#
+# Horiz and vert sync should be a range; like 35.2-55.75 or 30-81
+# BUT remember to use ';' to separate fields
+#
+#ADI; ADI ADIV30; adi3230; 30.0-48.5; 50.0-100.0; 1
diff -Nru /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/xdebconfigurator 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/xdebconfigurator
--- /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/xdebconfigurator   
2007-11-19 01:28:38.000000000 +0100
+++ /tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/xdebconfigurator   
2008-06-25 15:00:40.000000000 +0200
@@ -26,7 +26,8 @@
   -k            : kudzu (can detect video card driver and mouse device)
   -l            : libdetect (can detect video card, mouse device and protocol)
   -m            : mdetect (can detect mouse device, but not fully functional 
yet)
-  -r            : read-edid (monitor detection.)
+  -r            : read-edid (monitor detection)
+  -p            : xresprobe (monitor detection)
   -x            : dry-run, report only - do not actually update debconf
   -v            : verbose, print debug output during run
   -h            : this (help) message
@@ -37,7 +38,7 @@
 }
 
 use Getopt::Std; # command line options processing
-my $opt_string = 'cdhiklmrxv';
+my $opt_string = 'cdhiklmprxv';
 getopts( "$opt_string", \my %opt );
 if (not scalar %opt or (scalar keys %opt == 1 and $opt{"x"})) {
     # no options selected so do some of them
@@ -45,9 +46,11 @@
             "c" =>"true",
             "d" =>"true",
             "i" =>"true",
-            "k" =>"true",
-            "l" =>"true",
+# Kudzu and detect is obsolete in Debian.  Disable as default
+#            "k" =>"true",
+#            "l" =>"true",
 # It might be better to use ddcprobe (-c)
+            "p" =>"true",
 #            "r" =>"true",
             "s" =>"true"
             );
@@ -63,6 +66,7 @@
 
 my $hwinfo = "/usr/sbin/hwinfo";
 my $ddcprobe = "/usr/sbin/ddcprobe";
+my $xresprobe = "/usr/sbin/xresprobe";
 my $mdetect = "/usr/bin/mdetect"; # path to mdetect
 my $detect = "/usr/sbin/detect"; # path to detect (libdetect)
 my $kudzu = "/usr/sbin/kudzu"; # path to kudzu
@@ -70,6 +74,10 @@
 chomp($getedid = `which get-edid`); # read-edid exists?
 # Monitor table (part of package hwdata)
 my $MONITORDB = "/usr/share/hwdata/MonitorsDB";
+# Our own list of overrides
+my $MONITORDB2 = "/usr/share/xdebconfigurator/MonitorsDB";
+# The local admins list of overrides
+my $MONITORDB3 = "/etc/xdebconfigurator/MonitorsDB";
 
 # Establish some variables - which don't exist in debconf
 my $mdriv = ""; #mouse driver?
@@ -195,6 +203,7 @@
     #multiselect, use defaults:
     $xdebc_map{'config/display/modes'} = '';
     $xdebc_type{'config/display/modes'} = 'multiselect';
+    $modessource = "none";
 
     # '1024x768 @ 70Hz'); #this default should be ok on 15 inch+
     $xdebc_map{'config/monitor/mode-list'} = '';
@@ -398,8 +407,10 @@
             $monitorID .= $1; # + device ID
         } elsif($line =~ /Vert\. Sync Range: (\d+)\-(\d+) \w+/i) {
             $xdebc_map{'config/monitor/vert-refresh'} = $1.'-'.$2;
+            $freqsource = "hwinfo";
         } elsif($line =~ /Hor\. Sync Range: (\d+)\-(\d+) \w+/i) {
             $xdebc_map{'config/monitor/horiz-sync'} = $1.'-'.$2;
+            $freqsource = "hwinfo";
         }
     }
     close(HW);
@@ -467,6 +478,7 @@
 
     $xdebc_map{'config/display/modes'} =
         $temp_depths{ $xdebc_map{'config/display/default_depth'} };
+    $modessource = "hwinfo";
 }
 
 sub hwinfo_display()
@@ -609,23 +621,16 @@
             # VertRefresh 47-160
             if ($line =~ /HorizSync (\d+)\-(\d+)/i) {
                 $xdebc_map{'config/monitor/horiz-sync'} = $1 . "-" . $2;
+                $freqsource = "edid";
             } elsif ($line =~ /VertRefresh (\d+)\-(\d+)/i) {
                 $xdebc_map{'config/monitor/vert-refresh'} = $1 . "-" . $2;
+                $freqsource = "edid";
             }
 
             # Bomb out if edid if this happens, or it might loop!
             last LINE if($line =~ /Something special has happened/i);
         }
         close(ED);
-
-        if ($xdebc_map{'config/monitor/horiz-sync'} &&
-            $xdebc_map{'config/monitor/vert-refresh'} ) {
-            #we got refresh rates so we can use "Advanced mode"
-            $xdebc_map{'config/monitor/selection-method'} = "Advanced";
-        } else {
-            # no refresh rates - use simple configuration?
-            $xdebc_map{'config/monitor/selection-method'} = "Simple";
-        }
     }
 }
 
@@ -635,64 +640,79 @@
     # what do we need to know about monitor:
     # horizSync, VertRefresh, a def Mode list (pick highest?!), screen
     # size, modes, def depth
-
-    my $temp_mode = "1024x768 @ 70Hz";
+    print "ddcprobe() called\n" if $debug;
     open (HW,"$ddcprobe |");   # output from ddcprobe piped to HW
     while ($line = <HW>)    # <HW> give line-by-line of ddcprobe-output
     {
-        #ID: 4538
-        #EISA ID: API4538
-        #Screen size max 27 cm horizontal, 20 cm vertical.
-        # 640x480 @ 75 Hz (VESA)
-
-        if($line =~ /(\d+x\d+ @ \d+ Hz) \(VESA\)/i)
+        chomp $line;
+        print "  L: '$line'\n" if $debug;
+        if($line =~ /^[cd]*timing: (\d+x\d+) [EMAIL PROTECTED]/)
         {
-            # we'll use the greatest one as def
-            # TODO: change selection of default mode
-            # It's better to have a smaller resolution with high refresh
-            # rate, than vice versa
-            # Maybe test 1024x768 against these modes and pick it with a
-            # high refresh if it exists
-            # Then next try 800x600 with a high refresh.
-            # 14 inches aparently wanna have max 800x600 @ 60Hz
-            $temp_mode = $1;
-
-            # let's first get the best refresh rate at 800x600, then
-            # 1024x768 if possible
-            if($temp_mode =~ /800x600/) {
-                # this will eventually store 800x600 with best refresh rate
-                $xdebc_map{'config/monitor/mode-list'} = $temp_mode;
-                $modesource = "ddcprobe";
-            } elsif($temp_mode =~ /1024x768/) {
-                # this will eventually store 1024x768 with best refresh rate
-                $xdebc_map{'config/monitor/mode-list'} = $temp_mode;
-                $modesource = "ddcprobe";
-            }
-        } elsif($line =~ /EISA ID: (\S+)/i) {
+            # Pass all supported resolutions to X and let it pick the
+            # one to use.
+            print "D: $1\n" if $debug;
+            $xdebc_map{'config/display/modes'} =
+                join(", ",
+                     split(/, ?/, $xdebc_map{'config/display/modes'}), $1);
+            $modessource = "ddcprobe";
+        } elsif($line =~ /eisa: (\S+)/i) {
             $monitorID = $1;
-        } elsif($line =~ /Memory installed .+ (\d+)kb/i) {
-            # Memory installed = 32 * 64k blocks = 2048kb
-            $xdebc_map{'config/device/video_ram'} = $1;
-        } elsif($line =~ /Screen size max (\d+) cm horizontal, (\d+) cm 
vertical/i) {
+        } elsif($line =~ /monitorname: (\S+)/i) {
+            $monitorname = $1;
+        } elsif($line =~ /monitorserial: (\S+)/i) {
+            $monitorserial = $1;
+        } elsif($line =~ /screensize: (\d+) (\d+)$/i) {
             $screenX = $1;
             $screenY = $2;
         }
 
         # On some monitors the timings range is reported as: Timing ranges:
         # horizontal = 30 - 130, vertical = 50 - 160
-        if($line =~ /Timing ranges\: horizontal \= (\d+) \- (\d+)\, vertical 
\= (\d+) \- (\d+)/i)
+        if($line =~ /monitorrange: (\d+)-(\d+), (\d+)-(\d+)/)
         {
             $xdebc_map{'config/monitor/horiz-sync'} = $1 . "-" . $2;
             $xdebc_map{'config/monitor/vert-refresh'} = $3 . "-" . $4;
-            #we got refresh rates so we can use "Advanced mode"
-            $xdebc_map{'config/monitor/selection-method'} = "Advanced";
+            $freqsource = "ddcprobe";
         }
     }
     close (HW);
 
-    # fix: slightly different format than what config wants
-    $xdebc_map{'config/monitor/mode-list'} =~ s/(\d+) Hz/$1Hz/i;
-    #$xdebc_map{'config/display/default_depth'} = ''; #select default 24 ok
+    if ($monitorname && $monitorserial) {
+        $xdebc_map{'config/monitor/identifier'} =
+            "$monitorname $monitorserial";
+    }
+}
+
+
+sub xresprobe()
+{
+    # using xresprobe to look for monitor
+    my $driver = $xdebc_map{'config/device/driver'};
+    return unless $driver;
+    open (HW,"$xresprobe $driver|");
+    my $modes;
+    while ($line = <HW>)
+    {
+        chomp $line;
+        # id: BenQ FP73GS
+        #res: 1280x1024 1152x864 1024x768 832x624 800x600 720x400 640x480 
640x350
+        #freq: 30-82 56-76
+        #disptype: crt
+        if($line =~ /^ id:: (\S+)/) {
+            $monitorID = $1;
+        } elsif ($line =~ m/^res: (.+)$/) {
+            $modes = join(", ", split(/ +/, $1));
+        } elsif ($line =~ m/^freq: (\d+-\d+) (\d+-\d+)$/) {
+            $xdebc_map{'config/monitor/horiz-sync'} = $1;
+            $xdebc_map{'config/monitor/vert-refresh'} = $2;
+            $freqsource = "xresprobe";
+            if ($modes) {
+                $xdebc_map{'config/display/modes'} = $modes;
+                $modessource = "xresprobe";
+            }
+        }
+    }
+    close (HW);
 }
 
 
@@ -769,31 +789,39 @@
 
 sub lookup_monitor()
 {
-    $mu = ''; # init monitor-unused dump variable
+    return unless $monitorID;
     # get sync and refresh from MonitorDB - greping on $monitorID
-    if(-f $MONITORDB && $monitorID)
-    {
-        open (FIL,$MONITORDB) or die "Failed to open $MONITORDB !\n";
-        $line = <FIL>;          # <FIL> return a line from the file
-        READDB: {
-            while ($line = <FIL>) # <FIL> returning an empty string at file-end
+    for my $file ($MONITORDB3, $MONITORDB2, $MONITORDB) {
+        if(-f $file)
+        {
+            unless (open (FILE,$file)) {
+                warn "Failed to open $file !\n";
+                next;
+            }
+            $line = <FILE>;          # <FIL> return a line from the file
+            while (<FILE>) # <FIL> returning an empty string at file-end
             {
-                # Acer; Acer 56e; API4538; 30.0-69.0; 50.0-110.0
-                if($line =~ /$monitorID/i)
-                {
-                    chomp($dbstring = $line);
-                    last READDB;
+                chomp;
+                my ($vendor, $name, $id, $hfreq, $vfreq, $dpms) =
+                    split(/\s*\;\s*/);
+                # Acer; Acer 56e; API4538; 30.0-69.0; 50.0-110.0; 1
+                if(lc($id) eq lc($monitorID)) {
+                    if (( $xdebc_map{'config/monitor/horiz-sync'} &&
+                          $xdebc_map{'config/monitor/horiz-sync'} ne $hfreq) ||
+                        ($xdebc_map{'config/monitor/vert-refresh'} &&
+                         $xdebc_map{'config/monitor/vert-refresh'} ne $vfreq))
+                    {
+                        warn("Freq mismatch for id '$monitorID' in $file\n");
+                    }
+                    $xdebc_map{'config/monitor/horiz-sync'} = $hfreq;
+                    $xdebc_map{'config/monitor/vert-refresh'} = $vfreq;
+                    $freqsource = "monitordb $file";
+                    return 1;
                 }
             }
         }
-        if ( ! defined $dbstring ) {
-            warn("Unable to find Monitor '$monitorID' in " . "$MONITORDB\n");
-            return 0;
-        } else {
-            
($mu,$xdebc_map{'config/monitor/identifier'},$mu,$xdebc_map{'config/monitor/horiz-sync'},$xdebc_map{'config/monitor/vert-refresh'},$mu)
 = split(/\;/, $dbstring);
-            return 1;
-        }
     }
+    return 0;
 }
 
 sub test_existion($)
@@ -884,12 +912,6 @@
 # Run through opts
 # we're testing the availability of each prog here, so no need do it in
 # the subs
-if($opt{c}){
-    if(test_existion("$ddcprobe") &&
-       $xdebc_map{'config/monitor/selection-method'} ne "Advanced" ) {
-        ddcprobe();
-    }
-}
 if($opt{d}){
     if(test_existion("$discover")) {
         if ( !$xdebc_map{'config/device/driver'} ) {
@@ -904,6 +926,18 @@
         }
     }
 }
+if($opt{p}){
+    if(test_existion("$xresprobe") &&
+       $xdebc_map{'config/monitor/selection-method'} ne "Advanced" ) {
+        xresprobe();
+    }
+}
+if($opt{c}){
+    if(test_existion("$ddcprobe") &&
+       $xdebc_map{'config/monitor/selection-method'} ne "Advanced" ) {
+        ddcprobe();
+    }
+}
 if($opt{i}) {
     if(test_existion("$hwinfo")) {
         if( !$xdebc_map{'config/device/driver'} ) {
@@ -1090,8 +1124,7 @@
 
 ### Monitor detection
 
-if ((!$xdebc_map{'config/monitor/horiz-sync'} ||
-     !$xdebc_map{'config/monitor/vert-refresh'} ) && $monitorID ) {
+if ( $monitorID ) {
     if (lookup_monitor()) {
         #we got refresh rates so we can use "Advanced mode"
         $xdebc_map{'config/monitor/selection-method'} = "Advanced";
@@ -1138,6 +1171,7 @@
 
         # default value for 15 inches
         $xdebc_map{'config/monitor/vert-refresh'} = '43-75';
+        $freqsource = "default";
     }
 }
 
@@ -1145,6 +1179,7 @@
 if (!$xdebc_map{'config/display/modes'} ) {
     $xdebc_map{'config/display/modes'} =
         '1024x768, 800x600, 640x480';
+    $modessource = "default";
 }
 
 # couldn't determine mode - use default for 15 incher
@@ -1282,11 +1317,16 @@
 warn "MONITOR ID: $monitorID\n";
 warn "SUGGESTED METHOD: $xdebc_map{'config/monitor/selection-method'}\n";
 warn "MONITOR SIZE: $xdebc_map{'config/monitor/screen-size'}\n";
-warn "MONITOR HOR SYNC: $xdebc_map{'config/monitor/horiz-sync'}\n";
-warn "MONITOR VER REFR: $xdebc_map{'config/monitor/vert-refresh'}\n";
 warn "MONITOR MODES: $xdebc_map{'config/display/modes'}\n";
-warn "MONITOR MODE: $xdebc_map{'config/monitor/mode-list'}\n";
-warn "MONITOR MODE SRC: $modesource\n";
+warn "MONITOR MODES SRC: $modessource\n";
+if ($xdebc_map{'config/monitor/selection-method'} eq "Advanced") {
+    warn "MONITOR HOR SYNC: $xdebc_map{'config/monitor/horiz-sync'}\n";
+    warn "MONITOR VER REFR: $xdebc_map{'config/monitor/vert-refresh'}\n";
+    warn "MONITOR FREQ SRC: $freqsource\n";
+} else {
+    warn "MONITOR MODE: $xdebc_map{'config/monitor/mode-list'}\n";
+    warn "MONITOR MODE SRC: $modesource\n";
+}
 warn "MONITOR DEFAULT DEPTH: $xdebc_map{'config/display/default_depth'}\n";
 
 # die if the driver/xserver to use was not found
@@ -1301,4 +1341,3 @@
 #system(dexconf);
 
 exit(0);
-
diff -Nru 
/tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/base-config/76xdebconfigurator 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/base-config/76xdebconfigurator
--- 
/tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/base-config/76xdebconfigurator 
    2007-07-10 12:32:13.000000000 +0200
+++ 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/base-config/76xdebconfigurator 
    1970-01-01 01:00:00.000000000 +0100
@@ -1,65 +0,0 @@
-#!/bin/sh
-#
-# Call xdebconfigurator and dexconf to set up the X config file.
-#
-# Do this after 75apt-get to make sure it happen after the XFree86
-# package is installed and the debconf templates are loaded.
-# Do this before 77Xhack, to make sure the HW detection tools are
-# still installed.
-
-set -e
-
-# Run Xdebconfigurator to set values in the debconf-db.  Next it will
-# run dexconf to write a new XF86Config-4 file.
-
-xdebconf="/usr/sbin/xdebconfigurator"
-dexconf="/usr/bin/dexconf"
-
-if [ -x "$xdebconf" ]; then
-    # run xdebconfigurator
-
-    # First we find out which server package to use
-    pkg=`xdebconfigurator 2>&1 |grep 'DEBIAN PACKAGE: '|awk '{print $3}'`
-
-    # Only xserver-xfree86 is supported at the moment
-    if [ xserver-xfree86 != "$pkg" ] ; then
-       echo "error: Skipping xdebconfigurator.  Only xserver-xfree86 is 
supported."
-       exit 1
-     fi
-
-     # Then we configure
-     logger -p user.info -t xdebconfigurator \
-        "Generating new XFree86 config file."
-     echo "info: Generating XFree86 config file using 
xdebconfigurator/dexconf."
-     if $xdebconf -dcik; then
-         # run dexconf, and keep going even if it fails.
-
-        # Make backup copy just in case
-        cfg="/etc/X11/XF86Config-4"
-        if [ -f $cfg ] ; then
-            timestamp=`date +%Y%m%d-%H%M`
-            cp $cfg $cfg-$timestamp
-        fi
-
-         # an alternative to running dexconf would be to run
-         # "dpkg-reconfigure xserver-xfree86" but in the end package
-         # xserver-xfree86 will still use dexconf for writing the
-         # file.
-        if $dexconf ; then
-            # update the md5sum to allow xserver-xfree86 reconfiguration
-            md5sum $cfg > /var/lib/xfree86/`basename $cfg`.md5sum
-            if diff -u $cfg-$timestamp $cfg > /dev/null ; then
-                # Files are identical, no need to keep the backup file.
-                rm $cfg-$timestamp
-            fi
-        else
-            echo "error: failed to run $dexconf."
-            exit 2
-        fi
-     else
-         echo "error: failed to run $xdebconf."
-        exit 3
-     fi
-fi
-
-exit 0
diff -Nru 
/tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/base-config/menu/xdebconfigurator.mnu
 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/base-config/menu/xdebconfigurator.mnu
--- 
/tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/base-config/menu/xdebconfigurator.mnu
      2007-07-10 12:32:13.000000000 +0200
+++ 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/base-config/menu/xdebconfigurator.mnu
      1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-Only-New: false
-Debconf: false
-Order: 91
diff -Nru 
/tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/ddcprobe-examples/test1 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/ddcprobe-examples/test1
--- /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/ddcprobe-examples/test1    
1970-01-01 01:00:00.000000000 +0100
+++ /tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/ddcprobe-examples/test1    
2008-06-20 15:29:47.000000000 +0200
@@ -0,0 +1,44 @@
+vbe: VESA 3.0 detected.
+oem: SiS
+vendor:
+product:
+memory: 32768kb
+mode: 800x600x16
+mode: 640x480x256
+mode: 640x400x256
+mode: 800x600x256
+mode: 1024x768x16
+mode: 1024x768x256
+mode: 1280x1024x256
+mode: 320x200x32k
+mode: 320x200x64k
+mode: 640x480x32k
+mode: 640x480x64k
+mode: 800x600x32k
+mode: 800x600x64k
+mode: 1024x768x32k
+mode: 1024x768x64k
+mode: 1280x1024x32k
+mode: 1280x1024x64k
+edid:
+edid: 1 3
+id: 0027
+eisa: SAM0027
+serial: 41563137
+manufacture: 11 2004
+input: sync on green, analog signal.
+screensize: 32 24
+gamma: 2.070000
+dpms: RGB, active off, no suspend, no standby
+timing: [EMAIL PROTECTED] Hz (VGA)
+timing: [EMAIL PROTECTED] Hz (VESA)
+timing: [EMAIL PROTECTED] Hz (VESA)
+ctiming: [EMAIL PROTECTED]
+ctiming: [EMAIL PROTECTED]
+ctiming: [EMAIL PROTECTED]
+ctiming: [EMAIL PROTECTED]
+ctiming: [EMAIL PROTECTED]
+dtiming: [EMAIL PROTECTED]
+monitorrange: 30-71, 50-160
+monitorname: SyncMaster
+monitorserial: H9KX314010
diff -Nru 
/tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/ddcprobe-examples/test2 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/ddcprobe-examples/test2
--- /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/ddcprobe-examples/test2    
1970-01-01 01:00:00.000000000 +0100
+++ /tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/ddcprobe-examples/test2    
2008-06-20 15:30:24.000000000 +0200
@@ -0,0 +1,55 @@
+vbe: VESA 3.0 detected.
+oem: Brookdale-G Graphics Chip Accelerated VGA BIOS
+vendor: Intel Corporation
+product: Brookdale-G Graphics Controller Hardware Version 0.0
+memory: 8000kb
+mode: 1280x1024x256
+mode: 640x480x16m
+mode: 800x600x16m
+mode: 1024x768x32k
+mode: 1024x768x64k
+mode: 1024x768x16m
+mode: 1280x1024x64k
+mode: 1280x1024x16m
+mode: 132x25 (text)
+mode: 132x43 (text)
+mode: 132x50 (text)
+mode: 132x60 (text)
+mode: 640x480x256
+mode: 800x600x256
+mode: 1024x768x256
+mode: 640x480x64k
+mode: 800x600x64k
+edid:
+edid: 1 3
+id: 7708
+eisa: BNQ7708
+serial: 000005b1
+manufacture: 16 2007
+input: composite sync, sync on green, analog signal.
+screensize: 33 27
+gamma: 2.200000
+dpms: RGB, active off, suspend, standby
+timing: [EMAIL PROTECTED] Hz (VGA 640x400, IBM)
+timing: [EMAIL PROTECTED] Hz (VGA)
+timing: [EMAIL PROTECTED] Hz (Mac II, Apple)
+timing: [EMAIL PROTECTED] Hz (VESA)
+timing: [EMAIL PROTECTED] Hz (VESA)
+timing: [EMAIL PROTECTED] Hz (VESA)
+timing: [EMAIL PROTECTED] Hz (VESA)
+timing: [EMAIL PROTECTED] Hz (VESA)
+timing: [EMAIL PROTECTED] Hz (Mac II)
+timing: [EMAIL PROTECTED] Hz Interlaced (8514A)
+timing: [EMAIL PROTECTED] Hz (VESA)
+timing: [EMAIL PROTECTED] Hz (VESA)
+timing: [EMAIL PROTECTED] (VESA)
+ctiming: [EMAIL PROTECTED]
+ctiming: [EMAIL PROTECTED]
+ctiming: [EMAIL PROTECTED]
+ctiming: [EMAIL PROTECTED]
+ctiming: [EMAIL PROTECTED]
+ctiming: [EMAIL PROTECTED]
+dtiming: [EMAIL PROTECTED]
+dtiming: [EMAIL PROTECTED]
+monitorrange: 30-82, 56-76
+monitorname: BenQ FP73GS
diff -Nru 
/tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/ddcprobe-examples/test3 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/ddcprobe-examples/test3
--- /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/ddcprobe-examples/test3    
1970-01-01 01:00:00.000000000 +0100
+++ /tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/ddcprobe-examples/test3    
2008-06-20 15:33:34.000000000 +0200
@@ -0,0 +1,55 @@
+vbe: VESA 2.0 detected.
+oem: ATI RV370
+memory: 16384kb
+mode: 800x600x16
+mode: 1024x768x16
+mode: 320x200x32k
+mode: 320x200x64k
+mode: 320x200x16m
+mode: 1600x1200x256
+mode: 640x400x256
+mode: 640x480x256
+mode: 640x480x32k
+mode: 640x480x64k
+mode: 640x480x16m
+mode: 1600x1200x32k
+mode: 800x600x256
+mode: 800x600x32k
+mode: 800x600x64k
+mode: 800x600x16m
+mode: 1600x1200x64k
+mode: 1024x768x256
+mode: 1024x768x32k
+mode: 1024x768x64k
+mode: 1024x768x16m
+mode: 1280x1024x256
+mode: 1280x1024x32k
+mode: 1280x1024x64k
+mode: 1280x1024x16m
+mode: 132x25 (text)
+mode: 132x43 (text)
+edid:
+edid: 1 3
+id: a008
+eisa: DELa008
+serial: 3138324c
+manufacture: 16 2004
+input: analog signal.
+screensize: 41 31
+gamma: 2.200000
+dpms: RGB, active off, suspend, standby
+timing: [EMAIL PROTECTED] Hz (VGA 640x400, IBM)
+timing: [EMAIL PROTECTED] Hz (VGA)
+timing: [EMAIL PROTECTED] Hz (VESA)
+timing: [EMAIL PROTECTED] Hz (VESA)
+timing: [EMAIL PROTECTED] Hz (VESA)
+timing: [EMAIL PROTECTED] Hz (VESA)
+timing: [EMAIL PROTECTED] Hz Interlaced (8514A)
+timing: [EMAIL PROTECTED] Hz (VESA)
+ctiming: [EMAIL PROTECTED]
+ctiming: [EMAIL PROTECTED]
+ctiming: [EMAIL PROTECTED]
+dtiming: [EMAIL PROTECTED]
+monitorserial: C088144F182L
+monitorname: DELL 2001FP
+monitorrange: 31-80, 56-76
diff -Nru 
/tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/ddcprobe-examples/thinkpad-x41 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/ddcprobe-examples/thinkpad-x41
--- 
/tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/ddcprobe-examples/thinkpad-x41 
    1970-01-01 01:00:00.000000000 +0100
+++ 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/ddcprobe-examples/thinkpad-x41 
    2008-06-20 15:32:12.000000000 +0200
@@ -0,0 +1,19 @@
+vbe: VESA 3.0 detected.
+oem: Intel(r)915GM/910ML/915MS Graphics Chip Accelerated VGA BIOS
+vendor: Intel Corporation
+product: Intel(r)915GM/910ML/915MS Graphics Controller Hardware Version 0.0
+memory: 12288kb
+mode: 1280x1024x256
+mode: 1280x1024x64k
+mode: 1280x1024x16m
+mode: 1024x768x256
+mode: 1024x768x64k
+mode: 1024x768x16m
+mode: 640x480x16m
+mode: 800x600x64k
+mode: 800x600x16m
+mode: 640x480x256
+mode: 800x600x256
+mode: 640x480x64k
+edid:
+edidfail
diff -Nru 
/tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/ddcprobe-examples/vmware 
/tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/ddcprobe-examples/vmware
--- /tmp/ybZl7JDDTe/xdebconfigurator-1.30.edu.etch.1/ddcprobe-examples/vmware   
1970-01-01 01:00:00.000000000 +0100
+++ /tmp/etM9sHxjvC/xdebconfigurator-1.34~edu.etch.1/ddcprobe-examples/vmware   
2008-06-20 16:45:22.000000000 +0200
@@ -0,0 +1,17 @@
+vbe: VESA 2.0 detected.
+oem: V M ware, Inc. VBE support 2.0
+memory: 16384kb
+mode: 1600x1200x256
+mode: 1600x1200x32k
+mode: 1600x1200x64k
+mode: 640x400x256
+mode: 640x480x256
+mode: 800x600x256
+mode: 1024x768x256
+mode: 1280x1024x256
+mode: 320x200x64k
+mode: 640x480x64k
+mode: 800x600x64k
+mode: 1024x768x64k
+mode: 1280x1024x64k
+noedid


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to