PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fbset spinnt



Stephanw
02.01.05, 12:05
Hi,

für meine Linux-Surfstation habe ich jetzt den Framebuffer-support aktiviert. Den Treiber für die Grafikkarte ist ein Modul, sodass ich erst im normalen VGA-Mode starte. Lade ich das Modul, flimmert das angeschlossene TV nur noch; aber mit meiner TV-Karte kann ich weiterhin alles erkennen.
Das Modul scheint erfolgreich zu laden:



CyberPro2010: enabling PCI bursts
CyberPro2010: 1024kb VRAM, using 640x480, 31.468 kHz, 59Hz
Console: switching to colour frame buffer device 80x30


Jetzt habe ich in der /etc/fb.modes ein Mode "pal" definiert, der mit jedem Fernseher gehen sollte; vorausgesetzt, fbset würde nicht immer sagen:



fbset: fbset(open): No such device or adress


Mir kommt diese Fehlermeldung bekannt vor, die normalerweise erscheint, wenn kein Device-Eintrag für den Gerätetreiber da ist. "ls -l fb0" sagt:



brw-r--r-- 1 0 0 29, 0 Dec 25 15:38 fb0


Links auf fb0 habe ich auch erstellt; und zwar fb0current und framebuffer.
Warum werkelt das nicht?

Gruß Stephan

tictactux
02.01.05, 14:19
Hallo Stephan,

ich kenne den tridentfb selber nicht, hätte aber eine Anmerkung zu der
Fehlermeldung bei fbset: etliche "einfache" framebuffer-Treiber unterstützen
keine erneute Initialisierung (bzw. Moduswechsel nach dem Laden).
Dazu gehört auch der weitverbreitete vesafb.

Ob der tridentfb dazu gehört, weiß ich nicht, seine Dokumentationsdatei
im Kernelverzeichnis (Documentation/fb/tridentfb.txt) sagt darüber nichts
aus (einen Blick ist sie vielleicht trotzdem wert, falls noch nicht geschehen).
Einen Modus solltest Du beim Laden des Moduls angeben können
(Syntax und verfügbare Optionen stehen in obiger kurzen Datei).

Gruß,
Wolfgang

Stephanw
02.01.05, 15:32
Hallo Wolfgang!

Keine schlechte idee!

Leider kann ich das Modul nicht mit nem Parameter laden. Ich verwende ja auch nicht exakt diesen triedentfb...
Ich habe versucht:

modprobe cyber2000fb mode pal
modprobe cyber2000fb pal

Er sagt leider z.B.:

Cyber2000fb: unknown parameter 'mode'

Dummerweise gibt es keine Dokumentation über diesen Treiber :(((

Notfalls müsste ich das Teil nochmal in den Kernel packen und dann versuchen, über video= im Lilo das einzustellen..

Gruß Stephan

tictactux
02.01.05, 18:36
Ups, da war ich etwas voreilig. Aus der Doku des tridentfb wußte ich, daß er
diverse CyberBlade-Modelle unterstützt, kenne die im Detail selber nicht
(hatte ich nur ein einziges mal vor 2 Jahren ;) )
Was ich in einem solche Fall mache:

vim drivers/video/cyber2000fb.c
/module_init
Da ist ersichtlich, daß der cyber200fb (nur wenn statisch einkompilliert!)
nur die normalen modedb-Parameter akzeptiert (fbmon.c).
(ich debugge gerade wegen eigener Probleme fbmon.c :ugly: )

Gruß,
wolfgang

Stephanw
03.01.05, 13:07
Was heißt das dann auf deutsch?

Gruß Stephan

Stephanw
03.01.05, 13:18
Ich war gerade auch mal so intelligent und habe in den Treiber-Source geschaut. Für den Video=-Parameter sieht´s bzgl. der Auflösung und Sync-Frenquenzen schlecht aus:



/*
* Parse Cyber2000fb options. Usage:
* video=cyber2000:font:fontname
*/
int
cyber2000fb_setup(char *options)
{
char *opt;

if (!options || !*options)
return 0;

while ((opt = strsep(&options, ",")) != NULL) {
if (!*opt)
continue;

if (strncmp(opt, "font:", 5) == 0) {
strlcpy(default_font_storage, opt + 5, sizeof(default_font_storage));
default_font = default_font_storage;
continue;
}

printk(KERN_ERR "CyberPro20x0: unknown parameter: %s\n", opt);
}
return 0;


Aber man muss das doch irgendwie einstellen können...?!?

Der CyberPro2010 ist auch Vesa-Kompatibel. Weißt du, wie man diesen vesafb handhaben kann? Der wäre notfalls auch geeignet, wenn vielleicht auch etwas langsamer...

Gruß Stephan

tictactux
03.01.05, 18:08
Was heißt das dann auf deutsch?
beziehst Du Dich auf "modedb" und "fbmon.c" ?
Ersteres ist eine "eingebaute" Datenbank/Schnittstelle zur Handhabung
von Bildschirmauflösungen+Bildschirmen+Timings (und deren Berechnung
aus EDIDs nach GTF).
Das meiste davon ist in der Quelldatei fbmon.c implementiert.

> Da ist ersichtlich, daß der cyber200fb (nur wenn statisch einkompilliert!)
> nur die normalen modedb-Parameter akzeptiert (fbmon.c).
Damit meinte ich folgendes (ab Zeile 1718):

int __init cyber2000fb_init(void)
{
int ret = -1, err;

#ifndef MODULE
char *option = NULL;

if (fb_get_options("cyber2000fb", NULL))
return -ENODEV;
cyber2000fb_setup(option);
#endif
D.h. (wegen Parameter NULL) der Treiber verwaltet keine eigenen
Optionen, überläßt also die Wahl einer geeigneten Auflösung der
automatischen Auswahl (wie in fbmon.c ermittelt).
Ein Argument wie video=cyber2000fb:1024x760-16@60 könnte trotzdem
funktionieren.

Vergleiche dazu den enstprechenden Code in vesafb.c (vesafb_init() und
vesafb_setup()): dieser behandelt in vesfb_setup() nur die "Extra"-Optionen,
nicht die Auflösung/Wiederholfrequenz.

Probier doch den vesafb wenn er besser funktioniert (der könnte auch
etwas besser getestet sein, da viel öfter eingesetzt)
Gruß,
Wolfgang