Zweite Grafikkarte im PCI als Framebuffer Dev.

  • Hallo alle zusammen!



    Ich habe einige Zeit damit verbracht eine 2. Grafikkarte im PCI als Framebuffer Device zum Laufen zu bekommen und wollte kurz die Erfahrungen zu verschiedener Hardware posten.


    Meine Versuche have ich mit Suse 9.1 und dem Kernel 2.6.5 gemacht.


    Was immer geht ist VGA16, sieht nur nicht gerade schoen aus....


    Was die Kernel auch immer unterstuetzen ist VESA. In diesem Fall soll man nach als Startparameter fuer den Kernel vga=<videomode> angeben. Ist im Netz leicht zu finden.


    Leider unterstuetzte keine von den Karten die mir zur Verfuegung standen VESA und damit fing der Aerger an.
    Ich habe folgende Karten getestet:



    S3 Trio64V+ :computertod
    - VGA16 geht
    - VESA geht nicht. Bei VGA=... meldet der Kernel nur dass der Grafikmode nich unterstuetzt wird und bietet verschiedene Text-Modi an.
    - Unterstuetzung im Kernel existiert nur fuer PPC. Es soll den Treiber frueher auch fuer i386 gegeben haben, es soll auch ein Patch existieren, ich habe aber ausser Hinweisen nix substanzielles gefunden.
    - Ansonsten ist die Trio64 eine gute Karte wenn man mit den Treibern fuer X arbeitet.



    Trident TGUI9440 :computertod
    - VGA16 geht
    - VESA geht nicht. Bei VGA=... meldet der Kernel nur dass der Grafikmode nich unterstuetzt wird und bietet verschiedene Text-Modi an.
    - Im Kernel existiert zwar eine Trident Option, die ist aber fuer neuere Karten.



    ATI Mach64CT :strike2
    - VGA16 geht
    - VESA geht
    - Der Kernel bringt noch eine Option fuer diese Karte mit, die aber im Suse standardkernel aus ist. Neu uebersetzen ist also angesagt.
    - Ich bin nicht sicher in wieweit das Problem an meinem 6" TFT liegt aber mit den anderen Karten kam es regelmaessig vor, dass beim Umschalten des Videomodes der Bildschirm weiss wird. Abhilfe schafft dann nur ein Ausschalten des Displays. Das habe ich mit der ATI noch nie beobachtet!


    Momentan bin ich noch nicht sicher wie der richtige bootparameter fuer die ATI aussehen muss. Man findet folgende Varianten:


    video=atyfb:640x480-8@60 z.B. fuer 640x480, 8bit Farbtiefe, 60Hz
    oder
    video=atyfb:vmode=xx


    Hat da jemand prooven knowledge?


    Per default startet die Karte bei mir mit 640x400 8bit und ist zickig was das Umkonfigurieren mit fbset angeht.


    Gruss, Thomas.

  • Mal eine spontane Frage:


    Was ist denn mit Deiner primären Grafikkarte? Wie sagst Du dem Kernel, daß er Deine zweite Grafikkarte im PCI-Slot für die Konsole nutzen soll?

    VDR-User #985


    SW: Debian Sid, e-Tobi's VDR 1.6.0, vdr-sxfe mit VDPAU :strike1
    Plugins: devstatus, director, dvd, extb, femon, graphlcd, lastfm, mp3, mplayer, osdpip, osdteletext, premiereepg, skinenigmang, streamdev-server, sysinfo, text2skin, tvonscreen, vcd, vdrrip, webvideo, xineliboutput
    HW: Silverstone LC17, P5Q SE, C2D E7300, 1GB RAM, 500GB Platte, Hauppauge DVB-S rev1.6, TT 3200

  • Würde mich auch brennend interessieren!
    Ich hab hier noch ne Matrox G400 AGP und ne ATI All-In-Wonder PCI (auch mach64). Wenn ich dort auf einer Karte KDE aud auf der anderen VDR ausgeben könnte, hätte ich endlich ne elegante Möglichkeit meinen Projektor mit nem Ordentlichen Bild zu versorgen... :D

    AsRock K7VM2, Duron 600, 512MB SDRam, TT DVB-S 1.3, WLAN 54Mbit, Compact Flash 256MB mit CF2IDE Adapter
    Reichelt LCD 128x64, DVD-Rom, Wakü und TBE Ext. Board!:D
    Gehäuse in Arbeit...(Ende in Sicht!)

  • Zitat

    Original von kleini
    Mal eine spontane Frage:


    Was ist denn mit Deiner primären Grafikkarte? Wie sagst Du dem Kernel, daß er Deine zweite Grafikkarte im PCI-Slot für die Konsole nutzen soll?


    Primaere GK ist die, die im BIOS als Bootkarte eingetragen ist. Normalerweise wird auf der Karte die Konsole gestartet. Alle anderen Karten, fuer die Du FB-Module laedst, stellen dann einfach ein weiteres /dev/fbX zur Verfuegung.


    Also Konsole/X auf der primaeren Karte laeufen lassen und garphTFT oder beliebiges Programm auf /dev/fb1 und gut ist.


    Achtung: Das ist die Theorie, die Praxis hat da etlich Macken.


    x-stefan, der eine Workstation mit 7 Videoausgaengen hat - und fast daran verzweifelt.

    H: MSI 651p, Celeron 2.4GHz, 512MB, 300GB, DVD, DXR3, TT Budget, CinergyT2, gLCD 128x64, PSOne
    S: SuSE 9.1 Kernel 2.6.21.5 vdr-1.4.6.1 - jumpplay-0.9-1.4.0
    P: cdda-0.1.0 dvd-0.3.6_b03 dxr3-0.2.7 epgsearch-0.9.22 femon-1.1.2 graphlcd-0.1.5 graphtft-0.0.15 mp3/mplayer-0.10.0 osdteletext-0.5.1 radio-0.2.0 streamdev-server-0.3.3-pre3-geni text2skin-1.1-cvs_ext-0.10 vcd-0.7
    A: lirc-0.8.1 noad-0.6.0 nvram-wakeup-0.97 vdradmin-am-3.5.2 vdrsync-0.1.3PRE1 VDRsyncGUI-041222

    Einmal editiert, zuletzt von x-stefan ()

  • Erstmal danke an Stefan fuers Antworten. So aehnlich verhaellt sich mein System auch.


    Ich verwende ein MSI board, bei dem man im BIOS die primaere Karte zwischen AGP und PCI waehlen kann. Die Option steht bei mir auf PCI und das System bootet damit auf meinem TFT. Die PCI karte wird vom Kernel als /dev/fb0 bereit gestellt.


    Im SaX ist fuer die PCI-Karte nichts konfiguriert, dort ist nur die AGP karte konfiguriert. Ich hatte den Eindruck, dass der spaeter geladene Treiber den FB toetet (Mein Eindruck kann aber auch falsch sein.).
    Die AGP karte wacht also vor dem Laden von KDM auf.


    An die AGP-Karte wollte ich spaeter mal 'nen grossen Flachfernseher anschliessen...


    Ausser mit Ctrl+Alt+F7 landet man mit allen text consolen auf dem TFT.
    Ctrl+Alt+F7 fuehrt auf die AGP karte.


    Folgende Details sind auch mir noch unklar:


    1) Die Kernel parameter vga= oder video= scheinen immer nur fuer die erste Karte zu gelten. Ich habe nirgends etwas gefunden, was die Angabe der FB-Nummer erlaubt oder die Einstellung der videomodi weiterer Karten erlaubt. :(


    2) Der kernel scheint auch nicht die Moeglichkeit zu bieten die Karte zu identifizieren (Bus#. Slot#, Dev/Vendor...) die auf ein bestimmtes FB dev zu installieren ist. Ich vermute das geschieht in der Reihenfolge der Enummerierung.


    3) Eine Ausgabe von GraphTFT hatte ich bisher noch nicht auf dem TFT. Allerdings hat die Ausgabe mit dem AGP schon mal funktioniert. Ich kann aber momentan nicht ausschliessen, das Die Ausgabe anders als ueber FB erfolgte. Ich habe die Konfiguration von GraphTFT noch nicht richtig verstanden. Da mein TFT 640x480 hat habe ich da auch schon an den def's in den Quellen gespielt...


    4) GraphTFT habe ich mit /dev/fb0 und DirectFB versucht zu starten. Bei DirectFB wird ein unbehkanntes dev gemeldet. DirectFB ist aber installiert, siehe 5).


    seti:
    5) Ich hatte auch versucht tvtime mit DirectFB als Ausgabedevice zu starten. In dem Fall sieht man nur eine kurze initialisierung des displays und dann beendet sich das Ganze ohne grosses Gemecker. Bei DirectFB sieht man auf der Konsole noch eine Meldung dass DirectFB erfolgreich gestartet wurde. Da muss ich noch mal nach log files suchen.





    Wie brennend interessiert das Thema?
    Dann wuerde ich ueber den weiteren Fortgang berichten.



    Gruss, Thomas.

  • Kurzes Update:


    Gestern habe ich GraphTFT - Ausgaben auf dem TFT gesehen, zumindest beim Startup nachdem runvdr gelaufen ist bis zum Start von X. Es ist zwar kein Treiber fuer die PCI Karte (ATI Mach64) angegeben, dennoch wird der FB im runlevel 5 erstmal noch ueberschrieben/abgestellt und funktioniert nicht mehr.


    Hier die momentanen Einstellungen:


    in /etc/sysconfig/vdr steht graphtft auf /dev/fb0


    in grub ist der Startparameter fuer den kernel:
    video=atyfb:640x480-24


    GraphTFT wurde vor dem Uebersetzen auf 640x480 gesetzt



    Naechster Schritt ist jetzt erstmal das FB device am Gehen zu halten wenn KDM startet. Da kein Treiber eingetraen ist vermute ich, dass das System versucht erstmal mit dem framebuffer was anzufangen weil es ja das primaere Display ist auf dem gebootet wurde. Die AGP-Karte startet dann ganz normal mit dem engegebenen Treiber.


    Hat jemand einen Tip wo man suchen sollte?



    Gruss, Thomas.

  • Zitat

    Original von tklosa
    Kurzes Update:


    Gestern habe ich GraphTFT - Ausgaben auf dem TFT gesehen, zumindest beim Startup nachdem runvdr gelaufen ist bis zum Start von X. Es ist zwar kein Treiber fuer die PCI Karte (ATI Mach64) angegeben, dennoch wird der FB im runlevel 5 erstmal noch ueberschrieben/abgestellt und funktioniert nicht mehr.


    Der X-Server hat leider die unangenehme Eigenschaft an allen was nach Graphikkarte aussieht rumzumachen, auch wenn die nicht konfiguriert sind - keine Ahnung warum das notwendig oder wozu das gut ist.



    Ja, versuch mal den Isolate Device Patch (den Kernel Patch brauchst Du eher nicht) aus dem Backstreet Ruby Project (http:////www.ltn.lv/~aivils/) - ich hoffe zu schreckst nich davor zurueck Dienen X-Server selber zu kompilieren? Der X-Server fasst dann nur noch die angegebene Karte an.

    H: MSI 651p, Celeron 2.4GHz, 512MB, 300GB, DVD, DXR3, TT Budget, CinergyT2, gLCD 128x64, PSOne
    S: SuSE 9.1 Kernel 2.6.21.5 vdr-1.4.6.1 - jumpplay-0.9-1.4.0
    P: cdda-0.1.0 dvd-0.3.6_b03 dxr3-0.2.7 epgsearch-0.9.22 femon-1.1.2 graphlcd-0.1.5 graphtft-0.0.15 mp3/mplayer-0.10.0 osdteletext-0.5.1 radio-0.2.0 streamdev-server-0.3.3-pre3-geni text2skin-1.1-cvs_ext-0.10 vcd-0.7
    A: lirc-0.8.1 noad-0.6.0 nvram-wakeup-0.97 vdradmin-am-3.5.2 vdrsync-0.1.3PRE1 VDRsyncGUI-041222

  • Nachdem mein VDR-Projekt leider einige Zeit pausieren musste habe ich vor 4Wo wieder angefangen und nun auch das Problem mit dem X-Server loesen koennen. Ich will's kurz beschreiben falls noch jemand GraphTFT ueber eine alte PCI-Karte anzeigen moechte.


    Zunaechst die aktuelle Konfiguration:
    MSI - Athlon1.2GHz - MACH64CT@PCI - NVIDIA@AGP -NEXUS - AUDIGY - 6" TFT an PCI-Grafikkarte


    SUSE9.3 - vdr 1.3.10 - GraphTFT0.0.8


    MACH64 in BIOS auf bootdev gesetzt
    Support fuer ATI Mach als FB mit in Kernel compiliert
    /boot/grub/menu.lst Kernelparameter: video=atyfb:640x480-16@60


    /etc/sysconfig/console Parameter:
    FBSET_PARAMS="-a -depth 16 640x480-60"
    Sonst laeuft die Karte mit 8 bit Farbtiefe und das mag GraphTFT nicht.


    Damit kann man vdr in runlevel 3 starten und GraphTFT funzt schon mal. Das Aergernis ist X11, was beim Start den FB zuruecksetzt.


    Wie Stefan empfohlen hat habe ich mir den IsolateDevicePatch angesehen. Xorg-6.7.0-isolate_device.patch.txt ist im web zu finden. Suse 9.3 kommt allerdings mit X11R6.8.2 daher. Das Uebersetzen des X-Servers gelang einfacher als erwartet: :]
    - X11R6.8.2-src.tar.tar nach /usr/src/X11R6.8.2 ausgepackt
    - cd /usr/src
    - ln -s /usr/src/X11R6.8.2 xc (scheinbar wird der code in einem Verzeichnis xc erwartet)
    - cd /usr/src/xc - make World


    2h spaeter war der Compiler fertig.:prost1 Uebersetzung im Verzeichnis /usr/src/X11R6.8.2 (ohne den xc link) lief bei mir nicht durch.


    Weiter mit der Installation.


    Erstmal Backup des momentanen Systems...
    --------------------------------------------------------------------------------


    Und dann weiter mit:
    cd /usr/src/xc
    make install
    make install.man


    startx initialisiert die Bildschirme und TWM o.ae. ist zu sehen. Ich werte das als Erfolg.


    Patch einarbeiten... ....
    --------------------------------------------------------------------------------


    Folgende files werden vom patch veraendert:
    -rw-r--r-- 1 root root 22863 Apr 23 2004 Xorg.man
    -rw-r--r-- 1 root root 75341 Aug 16 2004 xf86Config.c
    -rw-r--r-- 1 root root 8054 Jul 6 2004 xf86Globals.c
    -rw-r--r-- 1 root root 51454 Dec 17 2004 xf86Init.c
    -rw-r--r-- 1 root root 6645 Jan 29 2004 xf86Priv.h
    -rw-r--r-- 1 root root 100412 Jan 25 2005 xf86pciBus.c
    -rw-r--r-- 1 root root 60530 Apr 23 2004 xorg.conf.man



    Habe die patches manuell eingearbeitet - hat etwas gedauert. Seitens der Syntax schien alles zu passen. Ich konnte mit diff einzelne Variablen sehen, die seit 6.7.0 die Namen geaendert hatten. Diese betrafen aber nicht die codeabschnitte des patches.


    make lief durch nachdem ich meine eigenen // kommentare in /**/ geaendert hatte. :whatever



    make install und make install.man ausfuehren


    Nun dem X-Server klar machen, dass er nur die sekundaere Karte im AGP benutzen soll. Die BusID ist 1:0:0.
    /etc/X11/xorg.conf:


    Section "ServerLayout"
    Identifier "Layout[all]"
    InputDevice "Keyboard[0]" "CoreKeyboard"
    InputDevice "Mouse[1]" "CorePointer"
    Option "Clone" "off"
    Option "Xinerama" "off"
    Option "IsolateDevice" "1:0:0"
    Screen "Screen[0]"
    EndSection


    startx...


    Logfileausgabe:


    (**) Option "IsolateDevice" "1:0:0"
    (WW) Bus types other than PCI not yet isolable.
    Ignoring IsolateDevice option.
    --------------------------------------------------------------------------------



    OK, die Option muss "PCI:1:0:0" lauten, dann kommt auch die Ausschrift:
    Isolating device "1:0:0"


    Nach StartX bleibt GraphTFT aktiv -- Jipie!!! :cool1


    Der Versuch nun KDE wieder zu starten ging schief. KDE mit YAST noch mal frisch machen half auch nicht unmittelbar.


    make install beim Installieren von X11R6.8.2 installiert auch ein anderes Starcscript /etc/X11/xinit/xinitrc. Ich habe aus dem backup das alte susescript wieder eingespielt. Nun startet KDE wieder.


    Damit hat GraphTFT nun sein eigenes Display, andere .theme's gehen auch. Mit Stgr+Alt+F1 kann man auf dem TFT auch in die Textconsole. Allerdings ist dann auch die Fernsehausgabe auf der AGP-Karte weg. Ich sehe darin kein Problem denn mit ...+F7 geht's wieder zurueck.



    Folgende Details habe ich jetzt noch zu klaeren:
    - Die FB-Ausgabe auf dem TFT beim booten ist irgendwie grau in grau, GraphTFT arbeitet aber in Farbe (low priority)


    - Anpassung der Ausgaben an das kleinere Display (im .theme)


    - offset 25x5 pixel der GraphTFT - Ausgabe gegenueber dem Display muss noch auf 0 gesetzt werden. Die Werte stehen in setup.conf scheinbar auch als
    graphtft.VdrHeight = 5
    graphtft.VdrWidht = 25
    werden aber immer wieder so gesetzt. Wuerde mich ueber einen Tip zur Quelle dieser Zahlen freuen :]

  • Zitat

    Original von tklosa
    - offset 25x5 pixel der GraphTFT - Ausgabe gegenueber dem Display muss noch auf 0 gesetzt werden. Die Werte stehen in setup.conf scheinbar auch als
    graphtft.VdrHeight = 5
    graphtft.VdrWidht = 25
    werden aber immer wieder so gesetzt. Wuerde mich ueber einen Tip zur Quelle dieser Zahlen freuen :]


    Aenderst Du das in setup.conf? Die wird beim Beenden vom VDR ueberschrieben, also mal aendern, wenn VDR nicht aktiv ist, oder im OSD->Einstellungen->Plugins->graphtft in der Sektion 'DVB/FB Device' aendern.

    H: MSI 651p, Celeron 2.4GHz, 512MB, 300GB, DVD, DXR3, TT Budget, CinergyT2, gLCD 128x64, PSOne
    S: SuSE 9.1 Kernel 2.6.21.5 vdr-1.4.6.1 - jumpplay-0.9-1.4.0
    P: cdda-0.1.0 dvd-0.3.6_b03 dxr3-0.2.7 epgsearch-0.9.22 femon-1.1.2 graphlcd-0.1.5 graphtft-0.0.15 mp3/mplayer-0.10.0 osdteletext-0.5.1 radio-0.2.0 streamdev-server-0.3.3-pre3-geni text2skin-1.1-cvs_ext-0.10 vcd-0.7
    A: lirc-0.8.1 noad-0.6.0 nvram-wakeup-0.97 vdradmin-am-3.5.2 vdrsync-0.1.3PRE1 VDRsyncGUI-041222

  • Sorry, war etwas verdrueckt ausgekehrt. Die Werte stehen auch im file setup.c der GraphTFT-Quellen. Dort habe ich's auch versucht auf 0 zu setzen. Trotzdem wurde die setup.conf immer mit 5 und 25 geschrieben.


    Inzwischen betreibe ich die VGA-Karte mit 800x600. Auch wenn das Display nur 640x480 kann macht die Ansteuerkarte ein echt brauchbares Bild fuer das TFT zurecht.


    Nun wird das Bild mittig dargestellt und hat links und rechts einen schwarzen Rand. Das haben andere hier auf dem PSone display auch schon beobachtet.


    Ich vermute inzwischen, dass das offset absichtlich in die Ausgabe auf dem FB eingebaut wurde. Ich habe in der Vergangenheit mitunter beobachtet, dass normale Fernseher links und rechts etwas abschneiden. Ich will mir die Stelle noch mal ansehen wo das Bild von 720 pixel auf den Zielwert skaliert wird...


    Danke nochmal fuer den Tip mit dem IsolateDev Patch. Das hat meine momentane Konfiguration gerettet. Die Anderen benutzen scheinbar meisst eine 2. FF Karte. Auf der koennte ich aber wohl kaum booten.



    Gruss, Thomas.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!