[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Stable update proposal: xdebconfigurator 1.34



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 <white@debian.org>  Mon, 19 Nov 2007 12:05:26 +1100
+ -- Petter Reinholdtsen <pere@debian.org>  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 <pere@debian.org>  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 <pere@debian.org>  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 <pere@debian.org>  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 <holger@debian.org>  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 <debian-edu@lists.debian.org>
-Uploaders: Petter Reinholdtsen <pere@debian.org>, Andreas Schuldei <andreas@debian.org>, Morten Werner Forsbring <werner@debian.org>, Steffen Joeris <white@debian.org>
+Uploaders: Petter Reinholdtsen <pere@debian.org>, Andreas Schuldei <andreas@debian.org>, Morten Werner Forsbring <werner@debian.org>, Steffen Joeris <white@debian.org>, Holger Levsen <holger@debian.org>
 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 dar@swirve.com on
+This package was debianized by Kristoffer Tjærnås dar@swirve.com 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+) ?@.*$/)
         {
-            # 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: 640x480@60 Hz (VGA)
+timing: 640x480@75 Hz (VESA)
+timing: 800x600@60 Hz (VESA)
+ctiming: 640x480@60
+ctiming: 640x480@85
+ctiming: 800x600@85
+ctiming: 1024x768@85
+ctiming: 1280x1024@60
+dtiming: 1024x768@104
+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: 720x400@70 Hz (VGA 640x400, IBM)
+timing: 640x480@60 Hz (VGA)
+timing: 640x480@67 Hz (Mac II, Apple)
+timing: 640x480@72 Hz (VESA)
+timing: 640x480@75 Hz (VESA)
+timing: 800x600@60 Hz (VESA)
+timing: 800x600@72 Hz (VESA)
+timing: 800x600@75 Hz (VESA)
+timing: 832x624@75 Hz (Mac II)
+timing: 1024x768@87 Hz Interlaced (8514A)
+timing: 1024x768@70 Hz (VESA)
+timing: 1024x768@75 Hz (VESA)
+timing: 1280x1024@75 (VESA)
+ctiming: 1152x864@75
+ctiming: 1280x1024@76
+ctiming: 1280x1024@60
+ctiming: 1280x1024@72
+ctiming: 800x600@75
+ctiming: 1024x768@60
+dtiming: 1280x1024@70
+dtiming: 640x350@70
+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: 720x400@70 Hz (VGA 640x400, IBM)
+timing: 640x480@60 Hz (VGA)
+timing: 640x480@75 Hz (VESA)
+timing: 800x600@60 Hz (VESA)
+timing: 800x600@72 Hz (VESA)
+timing: 800x600@75 Hz (VESA)
+timing: 1024x768@87 Hz Interlaced (8514A)
+timing: 1024x768@75 Hz (VESA)
+ctiming: 1280x1024@60
+ctiming: 1600x1200@60
+ctiming: 1152x864@75
+dtiming: 1600x1200@78
+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


Reply to: