This is a discussion on Scan HorizSync and VertRefresh? within the Slackware Linux Support forums, part of the Unix Operating Systems category; --> Hi, Usually I configure X by plain editing of /etc/X11/xorg.conf. One thing annoys me. I often install Slackware on ...
| |||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| Hi, Usually I configure X by plain editing of /etc/X11/xorg.conf. One thing annoys me. I often install Slackware on other people's PC, and more often than not, monitor specs are unknown. Manual thrown away, exotic model, anyway. What I do most of the time is boot Knoppix and take a look at /etc/X11/XF86Config-4 for monitor specs, which I add manually. Q: how does Knoppix "guess" monitor specs? Is there some nifty little command line app around to fetch these values somehow? Suggestions? Niki Kovacs -- I'm not as think as you stoned I am. |
| |||
| Niki Kovacs wrote: > Hi, > > Usually I configure X by plain editing of /etc/X11/xorg.conf. One thing > annoys me. I often install Slackware on other people's PC, and more often > than not, monitor specs are unknown. Manual thrown away, exotic model, > anyway. try to see if X can guess those. X -configure |
| |||
| > Is there some nifty little command line app around to fetch these values > somehow? Yes, there is. It is called read-edid and you can get it from http://john.fremlin.de/programs/linux/read-edid/ I have written som custom installation scripts for Slackware which uses that program to do the following: (File SetMonitor which is located in initrd.img in usr/lib/setup) -8<-------------------------------------------------------------- #!/bin/sh TMP=/var/log/setup/tmp if [ ! -d $TMP ]; then mkdir -p $TMP fi REDIR=/dev/tty4 NDIR=/dev/null dialog --title "XFree86 Configuration" \ --menu "Now we will attempt to configure XFree86. This will be your \ graphical environment. We will try to set good default values, if you later \ would like to change something you should edit /etc/X11/XF86Config. Which \ resolution do you want?" 15 60 5 \ 1600x1200 "Good for 21 inch TFT monitors" \ 1280x1024 "Good for 20 inch CRT monitors" \ 1024x768 "Good for 17 inch monitors" \ 800x600 "Good for 14 inch monitors" \ 640x480 "Who would want to use this?" 2> $TMP/SeTresolution (get-edid | parse-edid | grep -A1 HorizSync) 1> $TMP/SeTmonitor 2> $NDIR if [ ! $? = 0 ]; then while [ 0 ]; do dialog --title "Monitor configuration, step 1" \ --inputbox "Unable to get automatic monitor info, you will have to find \ this information in your manual. The HorizSync is given in kHz and has a \ range like 24-80 for multisync monitors or a comma separated list for fixed \ frequency monitors. Please enter HorizSync" \ 14 54 "24-80" 2> $TMP/horz cat $TMP/horz | egrep [0-9,.-] |\ egrep -v [a-zA-Z] 1> $NDIR if [ $? = 0 ]; then break; fi done while [ 0 ]; do dialog --title "Monitor configuration, step 2" \ --inputbox "The VertRefresh is given in MHz. Please enter VertRefresh" \ 10 54 "50-75" 2> $TMP/vert cat $TMP/vert | egrep [0-9,.-] |\ egrep -v [a-zA-Z] 1> $NDIR if [ $? = 0 ]; then break; fi done echo HorizSync `cat $TMP/horz` > $TMP/SeTmonitor echo VertRefresh `cat $TMP/vert` >> $TMP/SeTmonitor rm $TMP/horz $TMP/vert fi -8<------------------------------------------------------- At first the script above attempts to use read-edid to get the values from the monitor. If that fails ut uses a dialog to ask the user during installation. At a later stage during installation a script from a custom package is called, that script looks like this: (File setup.xconfig installed in /var/log/setup on target drive) -8<------------------------------------------------------------- #!/bin/sh T_PX=$1 TMP=/var/log/setup/tmp CONFIG_FILE=$T_PX/etc/X11/XF86Config MONITOR_FILE=$TMP/SeTmonitor RESOLUTION_FILE=$TMP/SeTresolution X_CREATED=$T_PX/XF86Config.new RESOLUTION=`cat $RESOLUTION_FILE` # echo Creating $CONFIG_FILE chroot $T_PX usr/X11R6/bin/X -configure /bin/cat << ENDFILE > $CONFIG_FILE # ************************************************** ******************** # Refer to the XF86Config(4/5) man page for details about the format of # this file. # ************************************************** ******************** # ************************************************** ******************** # Module section -- this section is used to specify # which dynamically loadable modules to load. # ************************************************** ******************** # Section "Module" # This loads the DBE extension module. Load "dbe" # Double buffer extension # This loads the miscellaneous extensions module, and disables # initialisation of the XFree86-DGA extension within that module. SubSection "extmod" Option "omit xfree86-dga" # don't initialise the DGA extension EndSubSection # This loads the font modules Load "type1" Load "freetype" Load "speedo" # This loads the GLX module Load "glx" Load "dri" EndSection Section "DRI" Mode 0666 EndSection # ************************************************** ******************** # Files section. This allows default font and rgb paths to be set # ************************************************** ******************** Section "Files" # The location of the RGB database. Note, this is the name of the # file minus the extension (like ".txt" or ".db"). There is normally # no need to change the default. RgbPath "/usr/X11R6/lib/X11/rgb" # Multiple FontPath entries are allowed (which are concatenated together), # as well as specifying multiple comma-separated entries in one FontPath # command (or a combination of both methods) # # If you don't have a floating point coprocessor and emacs, Mosaic or other # programs take long to start up, try moving the Type1 and Speedo directory # to the end of this list (or comment them out). # FontPath "/usr/X11R6/lib/X11/fonts/local/" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/CID/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/" # ModulePath can be used to set a search path for the X server modules. # The default path is shown here. # ModulePath "/usr/X11R6/lib/modules" EndSection # ************************************************** ******************** # Server flags section. # ************************************************** ******************** Section "ServerFlags" # Uncomment this to cause a core dump at the spot where a signal is # received. This may leave the console in an unusable state, but may # provide a better stack trace in the core dump to aid in debugging # Option "NoTrapSignals" # Uncomment this to disable the <Crtl><Alt><Fn> VT switch sequence # (where n is 1 through 12). This allows clients to receive these key # events. # Option "DontVTSwitch" # Uncomment this to disable the <Crtl><Alt><BS> server abort sequence # This allows clients to receive this key event. # Option "DontZap" # Uncomment this to disable the <Crtl><Alt><KP_+>/<KP_-> mode switching # sequences. This allows clients to receive these key events. # Option "DontZoom" # Uncomment this to disable tuning with the xvidtune client. With # it the client can still run and fetch card and monitor attributes, # but it will not be allowed to change them. If it tries it will # receive a protocol error. # Option "DisableVidModeExtension" # Uncomment this to enable the use of a non-local xvidtune client. # Option "AllowNonLocalXvidtune" # Uncomment this to disable dynamically modifying the input device # (mouse and keyboard) settings. # Option "DisableModInDev" # Uncomment this to enable the use of a non-local client to # change the keyboard or mouse settings (currently only xset). # Option "AllowNonLocalModInDev" # Set the basic blanking screen saver timeout. # Option "blank time" "10" # 10 minutes # Set the DPMS timeouts. These are set here because they are global # rather than screen-specific. These settings alone don't enable DPMS. # It is enabled per-screen (or per-monitor), and even then only when # the driver supports it. # Option "standby time" "20" # Option "suspend time" "30" # Option "off time" "60" # On some platform the server needs to estimate the sizes of PCI # memory and pio ranges. This is done by assuming that PCI ranges # don't overlap. Some broken BIOSes tend to set ranges of inactive # devices wrong. Here one can adjust how aggressive the assumptions # should be. Default is 0. # Option "EstimateSizesAggresively" "0" EndSection # ************************************************** ******************** # Input devices # ************************************************** ******************** # ************************************************** ******************** # Core keyboard's InputDevice section # ************************************************** ******************** Section "InputDevice" Identifier "Keyboard1" Driver "Keyboard" # For most OSs the protocol can be omitted (it defaults to "Standard"). # When using XQUEUE (only for SVR3 and SVR4, but not Solaris), # uncomment the following line. # Option "Protocol" "Xqueue" # Set the keyboard auto repeat parameters. Not all platforms implement # this. # Option "AutoRepeat" "500 5" # Specifiy which keyboard LEDs can be user-controlled (eg, with xset(1)). # Option "Xleds" "1 2 3" # To disable the XKEYBOARD extension, uncomment XkbDisable. # Option "XkbDisable" # To customise the XKB settings to suit your keyboard, modify the # lines below (which are the defaults). For example, for a European # keyboard, you will probably want to use one of: # # Option "XkbModel" "pc102" # Option "XkbModel" "pc105" # # If you have a Microsoft Natural keyboard, you can use: # # Option "XkbModel" "microsoft" # # If you have a US "windows" keyboard you will want: # # Option "XkbModel" "pc104" # # Then to change the language, change the Layout setting. # For example, a german layout can be obtained with: # # Option "XkbLayout" "de" # # or: # Option "XkbLayout" "se" Option "XkbVariant" "nodeadkeys" # # If you'd like to switch the positions of your capslock and # control keys, use: # # Option "XkbOptions" "ctrl:swapcaps" # These are the default XKB settings for XFree86 # # Option "XkbRules" "xfree86" # Option "XkbModel" "pc101" # Option "XkbLayout" "us" # Option "XkbVariant" "" # Option "XkbOptions" "" EndSection # ************************************************** ******************** # Core Pointer's InputDevice section # ************************************************** ******************** Section "InputDevice" # Identifier and driver Identifier "Mouse1" Driver "mouse" # On platforms where PnP mouse detection is supported the following # protocol setting can be used when using a newer PnP mouse: Option "Protocol" "Auto" # The available mouse protocols types that you can set below are: # Auto BusMouse GlidePoint GlidePointPS/2 IntelliMouse IMPS/2 # Logitech Microsoft MMHitTab MMSeries Mouseman MouseManPlusPS/2 # MouseSystems NetMousePS/2 NetScrollPS/2 OSMouse PS/2 SysMouse # ThinkingMouse ThinkingMousePS/2 Xqueue # Option "Protocol" "PS/2" # The mouse device. The device is normally set to /dev/mouse, # which is usually a symbolic link to the real device. Option "Device" "/dev/mouse" # Option "Device" "/dev/psaux" # Option "Device" "/dev/ttyS0" # Option "Device" "/dev/ttyS1" # To get scroll wheel working Option "ZAxisMapping" "4 5" # When using XQUEUE, comment out the above two lines, and uncomment # the following line. # Option "Protocol" "Xqueue" # Baudrate and SampleRate are only for some Logitech mice. In # almost every case these lines should be omitted. # Option "BaudRate" "9600" # Option "SampleRate" "150" # Emulate3Buttons is an option for 2-button Microsoft mice # Emulate3Timeout is the timeout in milliseconds (default is 50ms) # Option "Emulate3Buttons" # Option "Emulate3Timeout" "50" # ChordMiddle is an option for some 3-button Logitech mice # Option "ChordMiddle" EndSection # Some examples of extended input devices # Section "InputDevice" # Identifier "spaceball" # Driver "magellan" # Option "Device" "/dev/cua0" # EndSection # # Section "InputDevice" # Identifier "spaceball2" # Driver "spaceorb" # Option "Device" "/dev/cua0" # EndSection # # Section "InputDevice" # Identifier "touchscreen0" # Driver "microtouch" # Option "Device" "/dev/ttyS0" # Option "MinX" "1412" # Option "MaxX" "15184" # Option "MinY" "15372" # Option "MaxY" "1230" # Option "ScreenNumber" "0" # Option "ReportingMode" "Scaled" # Option "ButtonNumber" "1" # Option "SendCoreEvents" # EndSection # # Section "InputDevice" # Identifier "touchscreen1" # Driver "elo2300" # Option "Device" "/dev/ttyS0" # Option "MinX" "231" # Option "MaxX" "3868" # Option "MinY" "3858" # Option "MaxY" "272" # Option "ScreenNumber" "0" # Option "ReportingMode" "Scaled" # Option "ButtonThreshold" "17" # Option "ButtonNumber" "1" # Option "SendCoreEvents" # EndSection # ************************************************** ******************** # Monitor section # ************************************************** ******************** # Any number of monitor sections may be present Section "Monitor" Identifier "My Monitor" # HorizSync is in kHz unless units are specified. # HorizSync may be a comma separated list of discrete values, or a # comma separated list of ranges of values. # NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR'S # USER MANUAL FOR THE CORRECT NUMBERS. # HorizSync 30-64 # multisync # HorizSync 31.5, 35.2 # multiple fixed sync frequencies # HorizSync 15-25, 30-50 # multiple ranges of sync frequencies # VertRefresh is in Hz unless units are specified. # VertRefresh may be a comma separated list of discrete values, or a # comma separated list of ranges of values. # NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR'S # USER MANUAL FOR THE CORRECT NUMBERS. ENDFILE /bin/cat $MONITOR_FILE >> $CONFIG_FILE /bin/cat << ENDFILE >> $CONFIG_FILE EndSection # ************************************************** ******************** # Graphics device section # ************************************************** ******************** # Any number of graphics device sections may be present ENDFILE tail -n +`fgrep -n "Section \"Device\"" $X_CREATED | head -1 | cut -d: -f1` \ $X_CREATED > $TMP/VGA_DEVICE head -`fgrep -n "EndSection" $TMP/VGA_DEVICE | head -1 | cut -d: -f1` \ $TMP/VGA_DEVICE >> $CONFIG_FILE rm $TMP/VGA_DEVICE /bin/cat << ENDFILE >> $CONFIG_FILE # ************************************************** ******************** # Screen sections # ************************************************** ******************** # Any number of screen sections may be present. Each describes # the configuration of a single screen. A single specific screen section # may be specified from the X server command line with the "-screen" # option. Section "Screen" Identifier "Screen 1" Device "Card0" Monitor "My Monitor" # If your card can handle it, a higher default color depth (like 24 or 32) # is highly recommended. # DefaultDepth 8 DefaultDepth 16 # DefaultDepth 24 # DefaultDepth 32 # "1024x768" is also a conservative usable default resolution. If you # have a better monitor, feel free to try resolutions such as # "1152x864", "1280x1024", "1600x1200", and "1800x1400" (or whatever your # card/monitor can produce) ENDFILE case $RESOLUTION in "1600x1200") RESOLUTIONS="\"1600x1200\" \"1280x1024\" \"1024x768\" \"800x600\" \"640x480\"" ;; "1280x1024") RESOLUTIONS="\"1280x1024\" \"1024x768\" \"800x600\" \"640x480\"" ;; "1024x768") RESOLUTIONS="\"1024x768\" \"800x600\" \"640x480\"" ;; "800x600") RESOLUTIONS="\"800x600\" \"640x480\"" ;; *) RESOLUTIONS="\"640x480\"" ;; esac for DEPTH in 8 16 24 32 ; do echo " Subsection \"Display\"" >> $CONFIG_FILE echo " Depth $DEPTH" >> $CONFIG_FILE echo " Modes $RESOLUTIONS" >> $CONFIG_FILE echo " EndSubsection" >> $CONFIG_FILE done /bin/cat << ENDFILE >> $CONFIG_FILE EndSection # ************************************************** ******************** # ServerLayout sections. # ************************************************** ******************** # Any number of ServerLayout sections may be present. Each describes # the way multiple screens are organised. A specific ServerLayout # section may be specified from the X server command line with the # "-layout" option. In the absence of this, the first section is used. # When now ServerLayout section is present, the first Screen section # is used alone. Section "ServerLayout" # The Identifier line must be present Identifier "Simple Layout" # Each Screen line specifies a Screen section name, and optionally # the relative position of other screens. The four names after # primary screen name are the screens to the top, bottom, left and right # of the primary screen. In this example, screen 2 is located to the # right of screen 1. Screen "Screen 1" # Each InputDevice line specifies an InputDevice section name and # optionally some options to specify the way the device is to be # used. Those options include "CorePointer", "CoreKeyboard" and # "SendCoreEvents". InputDevice "Mouse1" "CorePointer" InputDevice "Keyboard1" "CoreKeyboard" EndSection ENDFILE chmod 644 $CONFIG_FILE rm $X_CREATED -8<----------------------------------------------------------- The above files were written for Slackware 9.1 with XFree86. Since then I have updated this custom 9.1 installation to use X.org instead and I only had to do some minor modification to the last script. By reading the scripts above I thing you get the idea. You might not want to use them unmodified as they will configure X with a swedish keyboard :-) regards Henrik -- The address in the header is only to prevent spam. My real address is: hc2(at)uthyres.com Examples of addresses which go to spammers: info@k-soft.se info@k-software.biz info@webrider.ru root@localhost |