I have created a modified version of the 3.01 (/usr/sbin) xorgwizard that prevents the hang by avoiding the invocation of the "Xvesa -listmodes" command, which is what hangs (but could be broken out of by ctrl-c). It checks ddcprobe.txt for the problematic NeoMagic MagicGraph video adapter name and supplies the needed list. In addition, it augments the ddcprobe listing to include "timing:" info for 1024x768 and 800x600 resolutions that are missing (but are appropriate).
The adapter is labeled "'oem: MagicGraph 256 AV 44K PRELIMINARY'" in ddcprobe.txt. Fortunately, I have an old ThinkPad that uses a similar adapter (but not "preliminary"), so I used part of the "listmodes" output from it. (It shows no "timing:" lines, but that is another issue.) Here is the added logic (starting with line 477), that puts the Xvesa call into an "else" clause:
Code: Select all
if [ -f /usr/X11R7/bin/Xvesa ];then #format of each line: 1024x768x16
#For some Tecra (8000) and Portege laptops, avoid Xvesa hang by substituting an Xmodes list known to work; also enable 800x600 and 1024x768 by adding "timing: .. (VESA)" lines for them in the ddcprobe listing. #rerwin
if grep -q 'oem: MagicGraph 256 AV 44K PRELIMINARY' /tmp/ddcprobe.txt;then
echo -e "640x480x16\n640x480x24\n800x600x16\n800x600x24\n1024x768x16\n1024x768x24" > /tmp/Xmodes.txt
echo -e "timing: 800x600@85 Hz (VESA)\ntiming: 800x600@60 Hz (VESA)" >> /tmp/ddcprobe.txt #Append 800x600 resolution
grep -q 'timing: 1024' /tmp/ddcprobe.txt && echo -e "timing: 1024x768@85 Hz (VESA)\ntiming: 1024x768@60 Hz (VESA)" >> /tmp/ddcprobe.txt #Append 1024x768 resolution
else #End of special treatment of Tecra 8000s. #rerwin
Xvesa -listmodes 2>&1 | cut -f 2 -d ' ' | grep --extended-regexp 'x16$|x24$' | sort --field-separator=x --numeric-sort > /tmp/Xmodes.txt
fi #rerwin
else
It does bother me to code for specific hardware in a general script, but I do not yet have the skills to "do it right". By that I mean that the text lines should be defined in a data file(s) that is read by the script, so that other special cases might be added (such as my ThinkPad that reports no timings at all). My concept is of a "ddcprobe-fixes" file and a "Xvesa-fixes" file, each containing lines with two quoted fields consisting of the identifying string and the appropriate additions to ddcprobe.txt or Xmodes.txt. The files could be accessed by the same internal function (applyfixesfunc?) with parameters.
This does not address the hanging if the Xvesa option is chosen instead of Xorg, but it is a start.
Richard
EDIT: I also modified line 750 (previously 743) to sort the "finalchoices" lines into ascending numerical resolution order:
Code: Select all
FINALCHOICES="`cat /tmp/finalchoices.txt | sort --field-separator=x --numeric-sort`" #rerwin
EDIT: (11/17/07): Please use the latest version of the fix, which is on page 3 here: http://www.murga-linux.com/puppy/viewto ... 110#154110
EDIT (11/19/07): Removed download of first version.