Hi all,

When I install Hardy desktop edtion (8.04 beta1), I failed and entered
the busybox interface instead of the graphic user guide.
I check the log file and it said 
(EE) Screen(s) found, but none have a usable configuration.
Fatal server error:
no screens found

The root cause I think is same as
https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-vesa/+bug/1
74434/

I think it's a common issue. This bug frustrate user to install Ubuntu.
Now I can only install Ubuntu via alternate CD and update the driver by
myself. Then I can enter X.

The bug can be duplicated when the graphic card is only supported by
VESA driver and the monitor's hsync and vrefresh rate is just a value
that probed by X's auto configuration.

And the here is a patch from FC9 can fix the issue, can anybody help to
test it and add it to the current distribution before RC? Thanks

Patch contents:
--- xf86-video-vesa-1.3.0/src/vesa.c.jx 2007-01-30 10:31:32.000000000
-0500
+++ xf86-video-vesa-1.3.0/src/vesa.c    2007-01-30 10:56:15.000000000
-0500
@@ -638,8 +638,40 @@
        xf86UnloadSubModule(pDDCModule);
     }
 
-    if ((pScrn->monitor->DDC = pVesa->monitor) != NULL)
-       xf86SetDDCproperties(pScrn, pVesa->monitor);
+    /* UNCLEAN */
+    do {
+       Bool had_cfg_ranges, have_ddc_ranges;
+
+       had_cfg_ranges = (pScrn->monitor->nHsync ||
pScrn->monitor->nVrefresh);
+       if ((pScrn->monitor->DDC = pVesa->monitor) != NULL)
+           xf86SetDDCproperties(pScrn, pVesa->monitor);
+       have_ddc_ranges = (pScrn->monitor->nHsync ||
pScrn->monitor->nVrefresh);
+
+       if (have_ddc_ranges && !had_cfg_ranges) {
+           int i;
+           for (i = 0; i < DET_TIMINGS; i++) {
+               if (pVesa->monitor->det_mon[i].type == DS_RANGES)
+                   break;
+           }
+           if (i < DET_TIMINGS)
+               break;
+
+           /*
+            * DDC added ranges, but they're inferred from the modes,
not
+            * copied from a range section.  So in the worst case, where
it's
+            * not a range but a single frequency, stretch things out to
be
+            * a range.  Panels with only one mode listed in DDC will
+            * otherwise probably not match any VESA modes.  Hooray for
+            * conformance.
+            */
+           if (pScrn->monitor->hsync[0].lo ==
pScrn->monitor->hsync[0].hi
+                && pScrn->monitor->hsync[0].lo > 31.5)
+               pScrn->monitor->hsync[0].lo = 31.5;
+           if (pScrn->monitor->vrefresh[0].lo ==
pScrn->monitor->vrefresh[0].hi
+                && pScrn->monitor->vrefresh[0].lo > 50.0)
+               pScrn->monitor->vrefresh[0].lo = 50;
+       }
+    } while (0);
 
     xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, DEBUG_VERB,
                        "Searching for matching VESA mode(s):\n");


Regards,
Wolke




-- 
Ubuntu-devel-discuss mailing list
Ubuntu-devel-discuss@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss

Reply via email to