Results 1 to 4 of 4

Thread: VGA controller detection: multiscreen >>SOLVED<<

  1. #1
    Junior Member
    Join Date
    Aug 2004
    Location
    Germany
    Posts
    6

    VGA controller detection: multiscreen >>SOLVED<<

    Hi,
    I have been customizing my own Knoppix CD, but in one thing I am failing: I want to have all my graphic adapters recognized and put together as Xinerama screens one "RightOf" the other.
    I began with the problem to find the PCI addresses of the vga cards, and I found the following:
    Code:
    lspci -m|grep VGA|cut -b 1-7|sed -e s/\\./:/
    But I don't really understand how Knoppix gets its XF86Config-4 file, where the information comes from and stuff. Could you explain to me how the X configuration system works and how I can change it to support multiple screen environments if more than one graphic card is installed?

    Thanks in advance, Mathis

    EDIT:
    Just to clarify, I am trying to make a bootable Knoppix CD which can automatically discover one, two, three... graphic cards and configure them nicely with KDE to be right of the previous one.
    I am aware of existing topics which seem to be about this problem, but it seems to me that some of them have a HD install of knoppix and the others have one graphic card with dual head support.

  2. #2
    Member registered user
    Join Date
    Sep 2003
    Posts
    80
    I'll 2nd the motion for any insight/direction on where to look to make changes such that during the boot process a remastered KNOPPIX can handle multiple graphics cards and they can be recognized and configured.

    Thanks in advance.

  3. #3
    Junior Member
    Join Date
    Aug 2004
    Location
    Germany
    Posts
    6

    PROBLEM SOLVED - I wrote a script for KNOPPIX 3.4

    I had to find a way, and so I created a shell script which modifies the XF86Config-4 created by Knoppix.
    I put the script (which I called updateconfig.sh) and dms.txt (see below) into the newly created directory /var/multiscreen (in the KNOPPIX tree) and modified my /etc/init.d/xsession to look like this:

    Code:
    ...
    case "$X" in
    *XFree86*) XCONFIG="/etc/X11/XF86Config-4"; BPP="-depth"; NORESET="-noreset"; ;;vesa|fbdev)
            for i in xserver knoppix; do echo 'XSERVER="XFree86"' >> /etc/sysconfig/$i; echo 'XMODULE="'"$X"'"' >> /etc/sysconfig/$i; done
            echo "${NORMAL}"
            echo -n "${BLUE}Retrying with Server ${GREEN}XFree86(${YELLOW}$X${GREEN})${NORMAL} "
            rm -f /etc/X11/XF86Config-4
            mkxf86config >/dev/null 2>&1
            X=XFree86 ; XCONFIG="/etc/X11/XF86Config-4"; BPP="-depth"; NORESET="-noreset"; XOPTIONS=""
            ;;
    esac
    
    # now get a new XF86Config-4 for *all* VGA cards
    /var/multiscreen/updateconfig.sh
    
    # Try hwsetup-generated flags first, if present
    $X $NORESET -xf86config "$XCONFIG" $XOPTIONS $DPI :0 2>/dev/null && break
    ...
    And it works fine! Here is the script:

    Code:
    # update /etc/X11/XF86Config-4 to support multiple screens if available
    #
    # Mathis Dirksen-Thedens [ [email protected] ]
    # August 2004
    #
    # written for KNOPPIX 3.4
    #
    # this script needs to know the following file locations:
    #   $infile    what is configured yet by KNOPPIX
    #   $outfile   where the new configuration shall be written to
    #              (if identical to $infile the output is temporarily redirected
    #              and moved to $infile later)
    #   $dms       where the template with standard "Device", "Monitor" and
    #              "Screen" sections of XF86Config-4 is
    
    infile=/etc/X11/XF86Config-4
    outfile=$infile
    dms=/var/multiscreen/dms.txt
    
    # ---------- no modifications needed from this line on -----------
    
    if [ $infile == $outfile ]; then
            out_tmp=$outfile.new
    else
            out_tmp=$outfile
    fi
    
    echo ""
    
    anz=`lspci -m|grep VGA|wc -l`
    echo -n found $anz VGA cards
    
    adrhex=`lspci -m|grep VGA|cut -b 1-7|sed -e s/\\\./:/|sort`
    
    # hex -> dec
    adr=""
    for adr_i in $adrhex
    do
            hexnumber1=`echo $adr_i | cut -d : -f 1 | tr [a-z] [A-Z]`
            hexnumber2=`echo $adr_i | cut -d : -f 2 | tr [a-z] [A-Z]`
            hexnumber3=`echo $adr_i | cut -d : -f 3 | tr [a-z] [A-Z]`
            decnumber1=`echo "obase=10;ibase=16; $hexnumber1" | bc`
            decnumber2=`echo "obase=10;ibase=16; $hexnumber2" | bc`
            decnumber3=`echo "obase=10;ibase=16; $hexnumber3" | bc`
            adr=$adr" "$decnumber1\:$decnumber2\:$decnumber3
    done
    
    echo \ \(adresses: $adr\)
    echo ""
    
    already=`grep BusID $infile | expand | sed -e s/PCI\:// | sed -e s/[A-Za-z#\ \"]//g`
    anzalready=`echo $already | sed -e s/[0-9\:]/x/g | wc -w`
    echo already configured: $already \($anzalready of $anz\)
    
    adr_new=""
    for adr_i in $adr
    do
            cnt=0
            for adr_a in $already
            do
                    if [ $adr_i != $adr_a ]; then
                            let "cnt+=1"
                    fi
            done
            if [ $cnt == $anzalready ]; then
                    adr_new=$adr_new" "$adr_i
            fi
    done
    echo still to configure: $adr_new
    echo ""
    
    # $out_tmp vorbereiten
    cp $infile $out_tmp
    cat $out_tmp|sed -e s/"\"Screen0\" 0\ 0"/"\"Screen0\" 0 0\n    Option \"Xinerama\" \"on\""/ > $out_tmp.tmp
    mv $out_tmp.tmp $out_tmp
    
    i=1
    for adr_i in $adr_new
    do
            # neue Blöcke Device/Monitor/Screen einfügen
            cat $dms | sed -e s/\#\#\#NUMMER\#\#\#/$i/g | sed -e s/\#\#\#ADRESSE\#\#\#/$adr_i/g >> $out_tmp
            # neue Zeile in Block ServerLayout einfügen
            let "a=i-1"
            newline="        Screen      "$i"  \"Screen"$i"\" RightOf \"Screen"$a"\""
            cat $out_tmp|sed -e s/\#.*BusID/\\tBusID/|sed -e s/"\"Screen0\" 0\ 0"/"\"Screen0\" 0 0\n$newline"/ > $out_tmp.tmp
            mv $out_tmp.tmp $out_tmp
            # Counter erhöhen
            let "i+=1"
    done
    
    # falls nötig Konfiguration sichern und überschreiben:
    if [ $infile == $outfile -a $anz != $anzalready ]; then
            mv $infile $infile.bak
            mv $out_tmp $infile
    else
            rm $out_tmp
    fi
    
    if [ $anz == $anzalready ]; then
            if [ $infile == $outfile ]; then
                    echo configuration was left unchanged
            else
                    echo old configuration was copied to $outfile
            fi
    else
            echo new configuration was written to $outfile
    fi
    echo ""
    It is accompanied by a template with standard "Device", "Monitor" and "Screen" Sections (named dms.txt):

    Code:
    Section "Device"
            Option          "sw_cursor"
            Identifier  "Card###NUMMER###"
            Driver      "vesa"
            VendorName  "All"
            BoardName   "All"
            BusID       "PCI:###ADRESSE###"
    EndSection
    
    Section "Monitor"
            Identifier      "Monitor###NUMMER###"
            Option          "DPMS"  "true"
            ModelName    "Standard-Monitor"
            HorizSync    28.0 - 96.0 # Warning: This may fry old Monitors
            VertRefresh  50.0 - 60.0 # Extreme conservative. Will flicker. TFT default.
    
            #  Default modes distilled from
            #      "VESA and Industry Standards and Guide for Computer Display Monitor
            #       Timing", version 1.0, revision 0.8, adopted September 17, 1998.
            #  $XFree86: xc/programs/Xserver/hw/xfree86/etc/vesamodes,v 1.4 1999/11/18 16:52:17 tsi Exp $
            # 640x350 @ 85Hz (VESA) hsync: 37.9kHz
            ModeLine "640x350"    31.5  640  672  736  832    350  382  385  445 +hsync -vsync
            # 640x400 @ 85Hz (VESA) hsync: 37.9kHz
            ModeLine "640x400"    31.5  640  672  736  832    400  401  404  445 -hsync +vsync
            # 720x400 @ 85Hz (VESA) hsync: 37.9kHz
            ModeLine "720x400"    35.5  720  756  828  936    400  401  404  446 -hsync +vsync
            # 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
            ModeLine "640x480"    25.2  640  656  752  800    480  490  492  525 -hsync -vsync
            # 640x480 @ 72Hz (VESA) hsync: 37.9kHz
            ModeLine "640x480"    31.5  640  664  704  832    480  489  491  520 -hsync -vsync
            # 640x480 @ 75Hz (VESA) hsync: 37.5kHz
            ModeLine "640x480"    31.5  640  656  720  840    480  481  484  500 -hsync -vsync
            # 640x480 @ 85Hz (VESA) hsync: 43.3kHz
            ModeLine "640x480"    36.0  640  696  752  832    480  481  484  509 -hsync -vsync
            # 800x600 @ 56Hz (VESA) hsync: 35.2kHz
            ModeLine "800x600"    36.0  800  824  896 1024    600  601  603  625 +hsync +vsync
            # 800x600 @ 60Hz (VESA) hsync: 37.9kHz
            ModeLine "800x600"    40.0  800  840  968 1056    600  601  605  628 +hsync +vsync
            # 800x600 @ 72Hz (VESA) hsync: 48.1kHz
            ModeLine "800x600"    50.0  800  856  976 1040    600  637  643  666 +hsync +vsync
            # 800x600 @ 75Hz (VESA) hsync: 46.9kHz
            ModeLine "800x600"    49.5  800  816  896 1056    600  601  604  625 +hsync +vsync
            # 800x600 @ 85Hz (VESA) hsync: 53.7kHz
            ModeLine "800x600"    56.3  800  832  896 1048    600  601  604  631 +hsync +vsync
            # 1024x768i @ 43Hz (industry standard) hsync: 35.5kHz
            ModeLine "1024x768"   44.9 1024 1032 1208 1264    768  768  776  817 +hsync +vsync Interlace
            # 1024x768 @ 60Hz (VESA) hsync: 48.4kHz
            ModeLine "1024x768"   65.0 1024 1048 1184 1344    768  771  777  806 -hsync -vsync
            # 1024x768 @ 70Hz (VESA) hsync: 56.5kHz
            ModeLine "1024x768"   75.0 1024 1048 1184 1328    768  771  777  806 -hsync -vsync
            # 1024x768 @ 75Hz (VESA) hsync: 60.0kHz
            ModeLine "1024x768"   78.8 1024 1040 1136 1312    768  769  772  800 +hsync +vsync
            # 1024x768 @ 85Hz (VESA) hsync: 68.7kHz
            ModeLine "1024x768"   94.5 1024 1072 1168 1376    768  769  772  808 +hsync +vsync
            # 1152x864 @ 75Hz (VESA) hsync: 67.5kHz
            ModeLine "1152x864"  108.0 1152 1216 1344 1600    864  865  868  900 +hsync +vsync
            # 1280x960 @ 60Hz (VESA) hsync: 60.0kHz
            ModeLine "1280x960"  108.0 1280 1376 1488 1800    960  961  964 1000 +hsync +vsync
            # 1280x960 @ 85Hz (VESA) hsync: 85.9kHz
            ModeLine "1280x960"  148.5 1280 1344 1504 1728    960  961  964 1011 +hsync +vsync
            # 1280x1024 @ 60Hz (VESA) hsync: 64.0kHz
            ModeLine "1280x1024" 108.0 1280 1328 1440 1688   1024 1025 1028 1066 +hsync +vsync
            # 1280x1024 @ 75Hz (VESA) hsync: 80.0kHz
            ModeLine "1280x1024" 135.0 1280 1296 1440 1688   1024 1025 1028 1066 +hsync +vsync
            # 1280x1024 @ 85Hz (VESA) hsync: 91.1kHz
            ModeLine "1280x1024" 157.5 1280 1344 1504 1728   1024 1025 1028 1072 +hsync +vsync
            # 1600x1200 @ 60Hz (VESA) hsync: 75.0kHz
            ModeLine "1600x1200" 162.0 1600 1664 1856 2160   1200 1201 1204 1250 +hsync +vsync
            # 1600x1200 @ 65Hz (VESA) hsync: 81.3kHz
            ModeLine "1600x1200" 175.5 1600 1664 1856 2160   1200 1201 1204 1250 +hsync +vsync
            # 1600x1200 @ 70Hz (VESA) hsync: 87.5kHz
            ModeLine "1600x1200" 189.0 1600 1664 1856 2160   1200 1201 1204 1250 +hsync +vsync
            # 1600x1200 @ 75Hz (VESA) hsync: 93.8kHz
            ModeLine "1600x1200" 202.5 1600 1664 1856 2160   1200 1201 1204 1250 +hsync +vsync
            # 1600x1200 @ 85Hz (VESA) hsync: 106.3kHz
            ModeLine "1600x1200" 229.5 1600 1664 1856 2160   1200 1201 1204 1250 +hsync +vsync
            # Extended modelines with GTF timings
            # 640x480 @ 100.00 Hz (GTF) hsync: 50.90 kHz; pclk: 43.16 MHz
            ModeLine "640x480"  43.16  640 680 744 848  480 481 484 509  -HSync +Vsync
            # 768x576 @ 60.00 Hz (GTF) hsync: 35.82 kHz; pclk: 34.96 MHz
            ModeLine "768x576"  34.96  768 792 872 976  576 577 580 597  -HSync +Vsync
            # 768x576 @ 72.00 Hz (GTF) hsync: 43.27 kHz; pclk: 42.93 MHz
            ModeLine "768x576"  42.93  768 800 880 992  576 577 580 601  -HSync +Vsync
            # 768x576 @ 75.00 Hz (GTF) hsync: 45.15 kHz; pclk: 45.51 MHz
            ModeLine "768x576"  45.51  768 808 888 1008  576 577 580 602  -HSync +Vsync
            # 768x576 @ 85.00 Hz (GTF) hsync: 51.42 kHz; pclk: 51.84 MHz
            ModeLine "768x576"  51.84  768 808 888 1008  576 577 580 605  -HSync +Vsync
            # 768x576 @ 100.00 Hz (GTF) hsync: 61.10 kHz; pclk: 62.57 MHz
            ModeLine "768x576"  62.57  768 816 896 1024  576 577 580 611  -HSync +Vsync
            # 800x600 @ 100.00 Hz (GTF) hsync: 63.60 kHz; pclk: 68.18 MHz
            ModeLine "800x600"  68.18  800 848 936 1072  600 601 604 636  -HSync +Vsync
            # 1024x768 @ 100.00 Hz (GTF) hsync: 81.40 kHz; pclk: 113.31 MHz
            ModeLine "1024x768"  113.31  1024 1096 1208 1392  768 769 772 814  -HSync +Vsync
            # 1152x864 @ 60.00 Hz (GTF) hsync: 53.70 kHz; pclk: 81.62 MHz
            ModeLine "1152x864"  81.62  1152 1216 1336 1520  864 865 868 895  -HSync +Vsync
            # 1152x864 @ 85.00 Hz (GTF) hsync: 77.10 kHz; pclk: 119.65 MHz
            ModeLine "1152x864"  119.65  1152 1224 1352 1552  864 865 868 907  -HSync +Vsync
            # 1152x864 @ 100.00 Hz (GTF) hsync: 91.50 kHz; pclk: 143.47 MHz
            ModeLine "1152x864"  143.47  1152 1232 1360 1568  864 865 868 915  -HSync +Vsync
            # 1280x960 @ 72.00 Hz (GTF) hsync: 72.07 kHz; pclk: 124.54 MHz
            ModeLine "1280x960"  124.54  1280 1368 1504 1728  960 961 964 1001  -HSync +Vsync
            # 1280x960 @ 75.00 Hz (GTF) hsync: 75.15 kHz; pclk: 129.86 MHz
            ModeLine "1280x960"  129.86  1280 1368 1504 1728  960 961 964 1002  -HSync +Vsync
            # 1280x960 @ 100.00 Hz (GTF) hsync: 101.70 kHz; pclk: 178.99 MHz
            ModeLine "1280x960"  178.99  1280 1376 1520 1760  960 961 964 1017  -HSync +Vsync
            # 1280x1024 @ 100.00 Hz (GTF) hsync: 108.50 kHz; pclk: 190.96 MHz
            ModeLine "1280x1024"  190.96  1280 1376 1520 1760  1024 1025 1028 1085 -HSync +Vsync
            # 1400x1050 @ 60.00 Hz (GTF) hsync: 65.22 kHz; pclk: 122.61 MHz
            ModeLine "1400x1050"  122.61  1400 1488 1640 1880  1050 1051 1054 1087 -HSync +Vsync
            # 1400x1050 @ 72.00 Hz (GTF) hsync: 78.77 kHz; pclk: 149.34 MHz
            ModeLine "1400x1050"  149.34  1400 1496 1648 1896  1050 1051 1054 1094 -HSync +Vsync
            # 1400x1050 @ 75.00 Hz (GTF) hsync: 82.20 kHz; pclk: 155.85 MHz
            ModeLine "1400x1050"  155.85  1400 1496 1648 1896  1050 1051 1054 1096 -HSync +Vsync
            # 1400x1050 @ 85.00 Hz (GTF) hsync: 93.76 kHz; pclk: 179.26 MHz
            ModeLine "1400x1050"  179.26  1400 1504 1656 1912  1050 1051 1054 1103 -HSync +Vsync
            # 1400x1050 @ 100.00 Hz (GTF) hsync: 111.20 kHz; pclk: 214.39 MHz
            ModeLine "1400x1050"  214.39  1400 1512 1664 1928  1050 1051 1054 1112 -HSync +Vsync
            # 1600x1200 @ 100.00 Hz (GTF) hsync: 127.10 kHz; pclk: 280.64 MHz
            ModeLine "1600x1200"  280.64  1600 1728 1904 2208  1200 1201 1204 1271 -HSync +Vsync
    EndSection
    
    Section "Screen"
            Identifier "Screen###NUMMER###"
            Device     "Card###NUMMER###"
            Monitor    "Monitor###NUMMER###"
            DefaultColorDepth 16
            SubSection "Display"
                    Depth     1
                    Modes  "1024x768" "800x600" "640x480"
            EndSubSection
            SubSection "Display"
                    Depth     4
                    Modes  "1024x768" "800x600" "640x480"
            EndSubSection
            SubSection "Display"
                    Depth     8
                    Modes  "1024x768" "800x600" "640x480"
            EndSubSection
            SubSection "Display"
                    Depth     15
                    Modes  "1024x768" "800x600" "640x480"
            EndSubSection
            SubSection "Display"
                    Depth     16
                    Modes  "1024x768" "800x600" "640x480"
            EndSubSection
            SubSection "Display"
                    Depth     24
                    Modes  "1024x768" "800x600" "640x480"
            EndSubSection
            SubSection "Display"
                    Depth     32
                    Modes  "1024x768" "800x600" "640x480"
            EndSubSection
    EndSection
    If you like this, feel free to enhance it even more, but be aware that lspci gives you the addresses in hex numbers while X needs them decimal! (This was the biggest annoyance while writing the script.)
    If you enhance it, please send me an email ot post it on this site, thank you.

  4. #4
    Junior Member
    Join Date
    Aug 2004
    Location
    Germany
    Posts
    6

    PROBLEM SOLVED - I wrote a script for KNOPPIX 3.4

    The one big flaw is that the VESA driver operates the second, third... VGA card(s). If someone knows how to detect this properly please let me know.

    If you try this on other versions of Knoppix, please tell how it worked! Thanks

Similar Threads

  1. Question about HD-Controller
    By Poochie in forum General Support
    Replies: 3
    Last Post: 12-31-2004, 09:49 AM
  2. adaptec scsi controller
    By GameManK in forum Hardware & Booting
    Replies: 0
    Last Post: 03-22-2004, 10:23 PM
  3. Promisse IDE Controller
    By Sniffer in forum Hardware & Booting
    Replies: 2
    Last Post: 01-02-2004, 06:17 PM
  4. Need help with ny RAID controller
    By Roemer in forum Hardware & Booting
    Replies: 0
    Last Post: 09-28-2003, 02:51 PM
  5. IDE-RAID controller
    By Dohmann in forum Hardware & Booting
    Replies: 7
    Last Post: 03-10-2003, 03:48 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


Glyph StudioRAID 28TB External RAID Hard Drive Thunderbolt 2 USB 3.0 7200RPM picture

Glyph StudioRAID 28TB External RAID Hard Drive Thunderbolt 2 USB 3.0 7200RPM

$300.00



Broadcom 9600-24i Tri-Mode RAID Controller 4.0 NVMe SAS SATA NEW 05-50111-01003 picture

Broadcom 9600-24i Tri-Mode RAID Controller 4.0 NVMe SAS SATA NEW 05-50111-01003

$639.69



Intel VROC Premium RAID Controller Card PCIe Add-On Module VROCPREMMOD picture

Intel VROC Premium RAID Controller Card PCIe Add-On Module VROCPREMMOD

$265.00



OWC Mercury Elite Pro 2 Bay RAID Enclosure with USB 3.2  for Dual 3.5 inch HDDs picture

OWC Mercury Elite Pro 2 Bay RAID Enclosure with USB 3.2 for Dual 3.5 inch HDDs

$87.99



WAVLINK RAID 2 Bay Hard Drive Docking Station SATA 2.5/3.5'' SSD HDD Enclosure picture

WAVLINK RAID 2 Bay Hard Drive Docking Station SATA 2.5/3.5'' SSD HDD Enclosure

$119.99



2-Bay/4-Bay Hard Drive Enclosure for 3.5

2-Bay/4-Bay Hard Drive Enclosure for 3.5"/2.5'' SATA HDD/SSD 10Gbps USB-C 3.2

$119.99



Dell PowerEdge HBA330 LP PCI-E 12GBs RAID SAS Controller Adapter J7TNV picture

Dell PowerEdge HBA330 LP PCI-E 12GBs RAID SAS Controller Adapter J7TNV

$18.95



Acasis USB 3.2 2 Bay HDD RAID Enclosure for 2.5/3.5

Acasis USB 3.2 2 Bay HDD RAID Enclosure for 2.5/3.5" SATA Drives External Array

$55.00



Adaptec ASR-71605 16-Port 1Gbps PCIe RAID Card High Profile picture

Adaptec ASR-71605 16-Port 1Gbps PCIe RAID Card High Profile

$18.49



CalDigit VR minin 2 Portable Raid Storage On The Go picture

CalDigit VR minin 2 Portable Raid Storage On The Go

$75.00