Video HOWTO Jean-Michel VANSTEENE, , v1.1, 13 Octobre 1995 Ce document souhaite apporter une aide a la configuration de votre environnement graphique sous Linux, plus specifiquement concernant votre sous-systeme video. La premiere partie sera entierement consacree aux serveurs XFree86 et au fichier de configuration corre- spondant. La deuxieme decrira quelques programmes qui met- tent en oeuvre les methodes etudiees. Toutes vos remarques concernant la forme ou le fond sont les bienv- enues. Elles permettront de faire de ce document une aide precieuse pour tirer le meilleur de votre materiel. Vous pouvez les envoyer aux adresses ci-dessus. Bonne lecture. 11.. IInnttrroodduuccttiioonn L'environnement X permet aux systemes fonctionnant sous Unix d'avoir un environnement graphique de qualite. C'est un systeme de gestion de fenetres base sur un fonctionnement en reseau. Bien entendu il est utilisable sur une machine isolee, mais cela signifie qu'il prend naturellement en compte votre reseau si vous en avez un. Les programmes peuvent tourner sur des machines distantes, la visualisation se faisant sur la station de travail locale. Sous Linux, l'environnement X est le systeme X-Window du MIT. 11..11.. GGeenneerraalliitteess ssuurr XX L'environnement X est relativement complexe mais nous en degagerons les grands points. Il existe une litterature importante sur ce sujet. 11..11..11.. AAffffiicchhaaggeess eett eeccrraannss L'environnement X est un systeme de multi-fenetrage graphique en mode point (_b_i_t_m_a_p). Il supporte la couleur, les niveaux de gris et le monochrome. Un systeme d'affichage sous X (appele _d_i_s_p_l_a_y) correspond a un ensemble comprenant uunn ccllaavviieerr, uunn ssyysstteemmee ddee ppooiinnttaaggee et uunn oouu pplluussiieeuurrss eeccrraannss. Ceci est fondamental et lors de la configuration de cet environnement, notamment sous Linux, c'est cet ensemble complet qu'il faudra configurer. Nous n'etudierons en detail que la configuration du sous-systeme video. Pour les deux autres sous-systemes il existe des documents fort bien realises dont une liste est fournie au chapitre ``Les documents a consulter''. 11..11..22.. LLee mmooddeellee cclliieenntt--sseerrvveeuurr X est donc un systeme de gestion de fenetres oriente reseaux. La visualisation est completement independante de l'execution des applications. Alors que plusieurs applications tournent sur votre machine, plusieurs autres pourront tourner sur des machines distantes, envoyer des requetes a travers le reseau vers votre affichage (_d_i_s_p_l_a_y) et recevoir des evenements provenant du clavier ou de la souris. Bien entendu la pile TCP/IP est utilisee. Le programme qui controle chaque affichage est un _s_e_r_v_e_u_r. Votre station est serveur des que votre affichage est accessible (eventuellement via le reseau) aux clients que sont les applications. 11..22.. EEtt LLiinnuuxx ddaannss ttoouutt cceellaa XFree86 est le nom generique du serveur X sous Linux. Nous traiterons ici de XFree versions 3 et suivantes (X11R6). Sa configuration est un point important et parfois difficile. Il est fortement conseille d'y apporter un soin particulier. Une bonne configuration permettra d'obtenir le meilleur de votre sous-systeme video, mais une tres mauvaise configuration pourra l'endommager. Si vous suivez les conseils donnes dans la suite, vous devriez reussir assez rapidement a obtenir un systeme pleinement operationnel. Bien entendu, devant la diversite du materiel existant, nous ne pourrons indiquer l'ensemble des configurations possibles, mais seulement un methode. Il existe beaucoup de documents plus specifiques a chaque materiel (_/_u_s_r_/_l_i_b_/_X_1_1_/_d_o_c_/_R_E_A_D_M_E_._*). A utiliser avec la connaissance necessaire ! 22.. VVuuee dd''eennsseemmbbllee ddee llaa mmeetthhooddee ddee ccoonnffiigguurraattiioonn La methode decrite dans ce document s'applique a toutes les versions de XFree86. Elle s'appuiera neanmoins, pour les exemples, sur la distribution _X_F_r_e_e_8_6_-_3_._1_._1. Il y a deux etapes majeures pour installer le systeme graphique et le rendre operationnel. La premiere consiste a selectionner le serveur approprie. La seconde etape consiste a le configurer, c'est-a-dire rediger un fichier XXFF8866CCoonnffiigg correct. Ce fichier decrira les trois principaux elements d'un systeme d'affichage (_d_i_s_p_l_a_y) : le ccllaavviieerr, la ssoouurriiss et l'eeccrraann. Le fichier XF86Config contient plusieurs sections ; les paragraphes suivants vous aideront a remplir chacune d'elles. Vous trouverez en general dans toute distribution de Linux un fichier d'exemple tel que _/_u_s_r_/_l_i_b_/_X_1_1_/_X_F_8_6_C_o_n_f_i_g_._e_g ou similaire. Pour ne pas partir de rien, vous pouvez copier ce fichier dans _/_u_s_r_/_l_i_b_/_X_1_1 et le nommer _X_F_8_6_C_o_n_f_i_g. C'est l'endroit ou le serveur (quel qu'il soit) ira le chercher. Plusieurs pages de manuel en ligne sont livrees avec XFree86 concernant XF86Config(4/5). Il est vivement conseille de les parcourir (fichier _X_F_r_e_e_8_6_-_3_._1_._1_/_X_3_1_1_d_o_c_._t_g_z). Les sections du fichier XF86Config sont les suivantes : FFiilleess Decrit les chemins d'acces aux fontes et fichiers RGB (Rouge Vert Bleu) SSeerrvveerr FFllaaggss Decrit les options generales du serveur. Reportez-vous au manuel en ligne pour connaitre les options possibles. KKeeyybbooaarrdd Configure le clavier, et quelques parametres optionnels. PPooiinntteerr Decrit le peripherique de pointage, et quelques parametres optionnels MMoonniittoorr Decrit votre moniteur. GGrraapphhiiccss DDeevviiccee Decrit votre carte video. SSccrreeeenn Decrit comment le moniteur et la carte video doivent etre utilises. 22..11.. CChhooiissiirr llee sseerrvveeuurr XX aaddeeqquuaatt Plusieurs serveurs peuvent se trouver sur votre machine en tant que fichiers executables. Un seul doit etre defini comme le serveur X de votre systeme. Vous devez donc choisir le bon. Les serveurs sont generalement localises dans _/_u_s_r_/_X_1_1_R_6_/_b_i_n. Le nom "officiel" du serveur qui sera execute est "X". Il est generalement commode de creer un lien symbolique de X vers le serveur que vous aurez choisi. Les differents serveurs sont : XXFF8866__MMoonnoo (S)VGA monochrome, pour les materiels monochromes, par exemple Hercules. XXFF8866__VVGGAA1166 Serveur couleur VGA 16 couleurs. XXFF8866__SSVVGGAA Serveur Super VGA. Il peut etre utilise pour tout materiel SVGA. Il supporte les caracteristiques acceleratrices des cartes Cirrus 542{0,2,4,6,8,9}, Western Digital 90C3{1,3}, Oak Technologies Inc. OTIO87. Les autres cartes ne sont pas accelerees. XXFF8866__SS33 Serveur accelerateur pour cartes a base de circuit S3. XXFF8866__MMaacchh88 Serveur accelerateur pour cartes ATI Mach8. XXFF8866__MMaacchh3322 Serveur accelerateur pour cartes ATI Mach32. XXFF8866__MMaacchh6644 Serveur accelerateur pour cartes ATI Mach64. XXFF8866__88551144 Serveur accelerateur pour cartes 8514/A. XXFF8866__PP99000000 Serveur accelerateur pour cartes P9000. XXFF8866__AAGGXX Serveur accelerateur pour cartes AGX XXFF8866__WW3322 Serveur accelerateur pour cartes ET4000/W32. Il existe un manuel en ligne pour chacun de ces serveurs. Il est bon d'en prendre connaissance, notamment pour les particularites liees a celui qui vous interesse. Il est a noter qu'il est possible de modifier les pilotes configures dans un serveur via le _L_i_n_k_K_i_t ; Il existe un fichier README a ce propos. Le binaire du serveur peut ne pas contenir tous les pilotes possibles, selon la distribution que vous utilisez. Lancez /usr/X11R6/bin/X -showconfig pour visualiser les pilotes configures. Si vous avez besoin de modifier votre serveur, referez vous au fichier README. 33.. LLaa ppaarrttiiee ffaacciillee dduu ffiicchhiieerr XXFF8866CCoonnffiigg Comme le titre l'indique, cette partie ne pose que tres rarement des problemes. Pour ne pas depasser le cadre que nous nous sommes fixes et ne pas faire d'ombre aux documents existants, nous nous contenterons de vous aiguiller vers quelques-uns d'entre eux qui devraient vous permettre de vous en sortir. 33..11.. LLeess ddooccuummeennttss aa ccoonnssuulltteerr Vous pourrez utilement consulter : +o Les fichiers README du repertoire _/_u_s_r_/_l_i_b_/_X_1_1_/_d_o_c. +o Les page de manuel en ligne XF86Config(4/5). +o Le XFree86-HOWTO en francais ou anglais. +o Le chapitre concernant _X _W_i_n_d_o_w du meeeer-veil-leux ;-) livre "Le systeme Linux" de MMaatttt WWeellsshh et LLaarr KKaauuffmmaann et traduit en francais par le meeeer-veil-leux Rene Cougnenc. +o Les groupes _U_s_e_n_e_t ccoommpp..ooss..lliinnuuxx..xx et ffrr..ccoommpp..ooss..lliinnuuxx. Avant de poser des questions, prenez bien soin de verifier que la reponse ne se trouve pas dans un de ces documents ou dans ce qui suit. Rappelons que le site ffttpp..iibbpp..ffrr tient a jour la liste et le contenu de tous les messages emis dans ffrr..ccoommpp..ooss..lliinnuuxx. Ils se trouvent dans _/_p_u_b_/_l_i_n_u_x_/_f_r_e_n_c_h_/_f_r_._c_o_m_p_._o_s_._l_i_n_u_x 44.. LLaa ppaarrttiiee ddiiffffiicciillee dduu ffiicchhiieerr XXFF8866CCoonnffiigg 44..11.. LLaa sseeccttiioonn MMoonniittoorr C'est de loin la plus difficile a configurer. Cette partie va etre tres detaillee afin que vous puissiez comprendre comment decrire tous les timings correspondant a votre materiel. Il est important de faire tres attention lors de la configuration de cette section. Certaines erreurs peuvent etre fatales pour le moniteur ou la carte video. Meme si la methode que nous allons voir devrait permettre d'aboutir a une configuration correcte du premier coup, nous ne saurions (l'auteur et tous ceux qui lui ont permis d'ecrire ce document) etre tenus pour responsables de pannes resultant d'une mauvaise configuration (Rassurez-vous, ce n'est quand meme pas courant ;-)). 44..11..11.. CCoommmmeenntt ffoonnccttiioonnnnee vvoottrree eeccrraann ?? Cette connaissance est essentielle pour comprendre les calculs que vous allez devoir effectuer. Les valeurs obtenues seront utilisees par le serveur pour controler l'affichage au plus bas niveau. L'ecran genere une image a partir d'une succession de points. Les points sont arranges de la gauche vers la droite pour former une ligne. Les lignes sont arrangees du haut vers le bas pour former une image. Un point est lumineux lorsque le faisceau electronique est actif et qu'il rencontre la couche phosphorescente du tube cathodique. Le faisceau balaie l'ecran de facon reguliere. LLeess ppaarraaggrraapphheess ssuuiivvaannttss ssoonntt rreepprriiss dd''uunn oorriiggiinnaall ddee CChhiinn FFaanngg <> eett ddee ppoorrttiioonnss dd''uunn hhoowwttoo ddee BBoobb CCrroossssoonn <> Le faisceau electronique demarre sa course en haut et a gauche de l'ecran. Il parcourt l'ecran en lignes droites successives de gauche a droite. A l'extreme droite d'une ligne, il s'arrete momentanement pour etre devie rapidement vers la gauche et d'une ligne vers le bas, et ainsi de suite. Ce schema est repete jusqu'a la derniere ligne. Le faisceau est alors deplace du coin inferieur droit vers le coin superieur gauche de l'ecran, et un nouveau balayage peut etre commence. Le demarrage du faisceau en haut et a gauche est appele le debut d'une trame. La trame se termine lorsque le faisceau atteint a nouveau l'angle superieur gauche, provenant directement de l'angle inferieur droit. Une trame est faite de toutes les lignes que le faisceau a tracees. Si le faisceau electronique etait allume durant tout le parcours, tous les points seraient illumines. Il n'y aurait pas de bordures noires de chaque cote de l'ecran. Aux coins, l'image serait deformee en raison de la diffculte a controler le faisceau en ces endroits. Pour reduire la distorsion, les points aux angles et sur les bords ne sont pas illumines, meme si le faisceau peut passer dessus. La zone visible de l'ecran est donc reduite. Il est egalement important de comprendre ce que devient le faisceau lorsqu'il n'est pas en train d'illuminer une partie visible de l'ecran. Le temps que le faisceau utiliserait a illuminer les bords gauche et droit hors de la zone visible, sert au retour de balayage de ligne, consistant a le faire passer rapidement au debut de la ligne suivante. Le temps que le faisceau utiliserait pour illuminer les bords hauts et bas hors de la zone visible, sert au retour de balayage de trame, faisant passer le faisceau du coin inferieur droit au coin superieur gauche. La carte video genere les signaux permettant au moniteur de controler le faisceau electronique afin de rendre une image correcte dans la zone visible. La carte controle aussi le retour de balayage de ligne en generant un signal appele synchronisation horizontale (hhssyynncc) et le retour de balayage de trame en generant un signal de synchronisation verticale (vvssyynncc). Un signal _h_s_y_n_c est emis a chaque fin de ligne. Un signal _v_s_y_n_c est emis a la fin de chaque trame. La technique des signaux video necessite qu'un temps court mais non nul soit insere avant et apres les signaux de synchronisation horizontale et verticale de facon que la position du faisceau electronique puisse se stabiliser. Sans cela l'image ne serait pas tres stable. 44..11..22.. LLeess cchhoosseess aa ccoonnnnaaiittrree ccoonncceerrnnaanntt vvoottrree ccaarrttee vviiddeeoo eett vvoottrree mmoonniitteeuurr Avant de bidouiller votre fichier de configuration, plusieurs choses sont a connaitre : 1. Les plages de frequences de synchronisation horizontale et verticale de votre moniteur. Ces valeurs seront indiquees dans les parties HHoorriizzSSyynncc et VVeerrttRReeffrreesshh. 2. La plage de frequences d'horloge de votre carte, ou " dot clock " (horloge point ou pixel). 3. La largeur de bande passante de votre moniteur. Cette valeur alimentera la partie BBaannddwwiiddtthh. LLeess ffrreeqquueenncceess ddee ssyynncchhrroonniissaattiioonn ddee vvoottrree mmoonniitteeuurr :: La frequence de synchronisation horizontale correspond au nombre de lignes horizontales que le moniteur peut ecrire en une seconde. C'est la valeur la plus importante concernant votre moniteur. La frequence de synchronisation verticale est le nombre de balayages verticaux que le moniteur peut effectuer en une seconde. Les frequences de synchronisation sont generalement donnees dans les pages des specifications techniques de votre moniteur. La frequence de synchro verticale est un nombre exprime en Hz (cycles par secondes), la frequence horizontale etant donnee en kHz (milliers de cycles par seconde). Les valeurs courantes sont de l'ordre de 50 a 80 Hz pour les premieres et 31 a 135 kHz pour les secondes. Si vous possedez un moniteur multi-synchro, ces frequences seront donnees sous forme d'intervalle(s). Certains moniteurs possedent plusieurs frequences fixes. Elles peuvent etre utilisees, mais vos options seront limitees en raisons des caracteristiques intrinseques de votre moniteur. Choisissez le couple de valeurs les plus elevees possibles pour une meilleure resolution. Attention, piloter un moniteur a frequences fixes a des frequences trop elevees peut l'endommager. LLeess ffrreeqquueenncceess dd''hhoorrllooggee ddee vvoottrree ccaarrttee :: Votre manuel de specifications de votre carte video decrit generalement la ou les frequences d'horloge auxquelles elle peut travailler, autrement dit, le nombre total de points qu'elle peut ecrire par seconde. Si vous n'avez pas cette information, le serveur X les obtiendra pour vous. Meme si ce dernier ne fonctionne pas bien, il inscrira sur la sortie standard d'une console une ou plusieurs lignes de valeurs d'horloges ainsi que d'autres informations. Si vous redirigez le tout dans un fichier, ce sera sauvegarde, meme si vous avez a relancer votre systeme pour retrouver votre affichage. Voici un exemple des valeurs obtenues pour un adaptateur S3 (le serveur SGCS est utilise) : WGA: 86C911 (mem: 1024k clocks 25 28 40 3 50 77 36 45 0 0 79 31 94 65 75 71) WWGGAA :: type de serveur 8866CC991111 :: processeur video 11002244kk :: taille de la memoire video Les valeurs indiquees sont des frequences en Mhz. Les frequences dont nous disposons maintenant serviront dans la section DDeevviiccee et dans la section MMoonniittoorr. Nous nous interesserons a cette derniere dans ce chapitre. Le suivant decrira rapidement la configuration de ces valeurs dans la section Device. LLaa bbaannddee ppaassssaannttee ddee vvoottrree mmoonniitteeuurr :: Enfin, il est important et utile de connaitre la bande passante video de votre moniteur. Vous deduirez ainsi approximativement la plus grande valeur possible pour l'_h_o_r_l_o_g_e _p_o_i_n_t. Il y a pas mal de donnees possibles, sachant que certains moniteurs sont capables de fonctionner 30 % au dessus de leur bande passante nominale ! La connaissance de la bande passante va vous permettre d'effectuer des choix plus intelligents parmi plusieurs configurations possibles. Cela peut affecter la qualite visuelle de l'affichage (finesse des details, scintillement, ...). La bande passante de votre moniteur doit etre indiquee dans le manuel qui l'accompagne. Si ce n'est pas le cas, regardez la plus grande resolution qu'il supporte. Voici des correspondances tres courantes entre resolution et bande passante (et donc les valeur maximales pour l'_h_o_r_l_o_g_e _p_o_i_n_t utilisable) : 640 x 480 25 800 x 600 36 1024 x 768 65 1024 x 768 entrelace 45 1280 x 1024 110 De toute facon, il n'y a rien de magique dans tout cela ; ces valeurs sont les plus petites frequences d'horloge pour chaque resolution dans la base de donnees des modes video standard de XFree86. La bande passante de votre moniteur peut etre plus elevee que le minimum necessaire pour sa resolution maximale, ne soyez dont pas affole de pouvoir utiliser une valeur legerement superieure. Notez egalement que la bande passante est rarement un probleme pour les frequences d'horloge en dessous de 65 Mhz. Avec un moniteur SVGA ou haute resolution, vous ne frolerez pas la limite de la bande passante de votre moniteur. Voici quelques exemples : Marque Bande passante video ------ -------------------- NEC 4D 75 Mhz Nano 907a 50 Mhz Nano 9080i 60 Mhz Mitsubishi HL6615 110 Mhz Mitsubishi Diamond Scan 100 Mhz IDEK MF-5117 65 Mhz IOCOMM Thinksync-17 CM-7126 136 Mhz HP D1188A 100 Mhz Philips SC-17AS 110 Mhz Swan SW617 85 Mhz Meme les moniteurs bas de gamme ne sont generalement pas terriblement limites par la largeur de bande pour leur resolution. L'ecran NEC Multisync II en est un bon exemple. D'apres ses specifications, il ne peut afficher 800 x 600 points, mais seulement 800 x 560. Pour de telles resolutions, vous n'avez pas besoin d'horloge tres rapide ni d'une bande passante tres large ; il est probable que le meilleur que vous puissiez obtenir corresponde a des frequences de l'ordre de 32 a 36 Mhz, les deux n'etant pas tres loin de la bande passante du moniteur qui est de 30 Mhz. A ces frequences, votre image ne sera peut etre pas aussi fine qu'il le faudrait mais certainement d'une qualite tolerable. Bien sur, il serait preferable d'avoir une bande passante superieure, disons au moins 36 Mhz. Ce n'est toutefois pas critique pour la plupart des applications comme l'edition de texte, du moment qu'il n'y a pas de distorsion severe dans l'image (vos yeux vous le diraient). LLeess ccoonnttrroolleess :: La gamme de frequences de synchronisation de votre moniteur, associee a la frequence de l'horloge de votre adaptateur video, determine la resolution maximale que vous pourrez obtenir. Mais il appartient au pilote de pouvoir gerer au mieux votre materiel. Un materiel de plus haut niveau sans un pilote de peripherique apte a en tirer partie est un gachis ! D'un autre cote, avec un tres bon pilote et un materiel peu performant, vous pourrez pousser votre materiel a son maximum. C'est la philosophie de XFree86. 44..11..33.. IInntteerrpprreetteerr lleess ssppeecciiffiiccaattiioonnss ddee bbaassee Cette section explique en detail les specifications dont nous venons de parler, ainsi que d'autres choses dont nous aurons besoin. D'abord, quelques definitions. Entre parentheses sont indiques les noms symboliques que nous utiliserons pour effectuer les calculs. FFrreeqquueennccee ddee ssyynncchhrroonniissaattiioonn hhoorriizzoonnttaallee ((HHSSFF)) Nombre de parcours horizontaux par seconde (voir ci-dessus) FFrreeqquueennccee ddee ssyynncchhrroonniissaattiioonn vveerrttiiccaallee ((VVSSFF)) Nombre de parcours verticaux par seconde (voir ci-dessus). Importante car elle correspond au taux de rafraichissement maximal. FFrreeqquueennccee dd''hhoorrllooggee ppooiinntt ((DDCCFF)) Plus formellement " frequence d'horloge de pilotage " ; quelquefois appelee a tort bande passante. La frequence de l'oscillateur (VCO) de votre adaptateur, correspondant au nombre maximum de points par seconde qu'il puisse emettre. LLaarrggeeuurr ddee bbaannddee ppaassssaannttee vviiddeeoo ((VVBB)) La plus haute frequence que le signal de votre moniteur puisse atteindre. Cela limite l'horloge point que vous pouvez utiliser et donc la finesse de votre image. LLoonngguueeuurrss ddee ttrraammee ((HHFFLL,, VVFFLL)) La longueur de trame horizontale (HFL) correspond au nombre de tops d'horloge necessaire pour que le faisceau electronique de votre moniteur parcoure une ligne (incluant les bords gauche et droit inactifs). La longueur de trame verticale (VFL) correspond au nombre de lignes balayees pour une image entiere (y compris les bords superieur et inferieur inactifs). TTaauuxx ddee rraaffrraaiicchhiisssseemmeenntt ((RRRR)) C'est le nombre d'images par seconde. Les plus hautes frequences sont les meilleures, puisqu'elles reduisent le scintillement. 60 Hz est correct, mais la valeur standard VESA est de 72 Hz. Le calcul donne : RR = DCF / (HFL * VFL) A noter que le produit au denominateur ne correspond pas a la resolution visible du moniteur, mais bien a quelque chose de plus grand. Nous verrons les details apres. AA pprrooppooss ddee llaa llaarrggeeuurr ddee bbaannddee Les fabricants de moniteurs aiment annoncer de larges bandes passantes, parce que cela determine directement la precision des changements de l'intensite et des couleurs de votre ecran. Une plus grande bande passante signifie souvent une plus grande finesse des details. Votre moniteur utilise des signaux electroniques pour presenter une image a vos yeux. De tels signaux sont convertis sous forme analogique a partir d'un signal digital. Ils peuvent etre consideres comme une combinaison d'ondes simples, chacune ayant une frequence fixe, la plupart d'entre elles etant dans la gamme du megahertz, disons de l'ordre de 20 a 70 MHz. La largeur de bande de votre moniteur correspond effectivement a la plus haute frequence de signal analogique qu'il puisse supporter sans distorsion. Dans notre cas, la largeur de bande est surtout importante comme point de coupure approximatif pour la plus grande valeur d'horloge point que nous pourrons utiliser. FFrreeqquueenncceess ddee ssyynncchhrroonniissaattiioonn eett ttaauuxx ddee rraaffrraaiicchhiisssseemmeenntt Le trace d'une ligne horizontale a l'ecran ne correspond qu'a la portion visible de la trame horizontale entiere. Il n'y a a un moment donne qu'un seul point reellement actif. Le taux de rafraichissement est suffisant pour que, grace a la persistence retinienne, vous ayez une image complete. Souvenez-vous que le parcours du faisceau est un zig-zag ; il va de gauche a droite et revient rapidement a gauche en descendant. Maintenant, nous pouvons evoquer les relations entre taux de rafraichissement, horloge point et taille de trame. Par definition, un hertz (Hz) est une unite de frequence correspondant a un cycle par seconde. Donc si la longueur de trame horizontale est HFL, et la longueur de trame verticale est VFL, l'ecran est entierement couvert en (HFL * VFL) tops d'horloge. Puisque votre carte emet DCF tops par seconde, manifestement le faisceau electronique de votre moniteur peut balayer l'ecran de gauche a droite et de haut en bas DCF / (HFL * VFL) fois par seconde. C'est le taux de rafraichissement (RR) de votre ecran, c'est-a-dire le nombre de fois par seconde que votre image sera redessinee. Vous devez bien assimiler ce concept pour effectuer une configuration correcte avec le meilleur compromis entre resolution et scintillement. 44..11..44.. CCoommpprroommiiss ddaannss llaa ccoonnffiigguurraattiioonn ddee vvoottrree ssyysstteemmee La formule suivante est obtenue a partir de la precedente : DCF = RR * HFL * VFL Votre _h_o_r_l_o_g_e _p_o_i_n_t est fixee par les caracteristiques de votre carte video. Vous pouvez utiliser ce capital de points par seconde pour acheter soit du taux de rafraichissement, soit de la resolution horizontale ou verticale. Si l'un augmente, un ou les deux autres doivent diminuer. Notez cependant que le taux de rafraichissement ne peut etre superieur a la frequence maximum de synchro verticale de votre moniteur. Pour un moniteur donne et une horloge point donnee, il y a un minimum dans les longueurs de trames en dessous duquel vous ne pouvez pas descendre. En choisissant vos parametres, n'oubliez pas : si RR est trop petit, vous serez gene par le scintillement. Vous ne souhaiterez donc pas descendre votre taux de rafraichissement en dessous de 60 Hz. C'est le minimum acceptable en dessous duquel l'oeil fatigue vite ; si vous etes tres sensible, choisissez 72 Hz, valeur standard VESA. La sensibilite au scintillement est tres personnelle mais depend aussi de l'environnement de travail. Si vous travaillez sur des fonds noirs et des couleurs tres contrastees, vous pourrez descendre a 45 Hz. Faites un essai : ouvrez une fenetre xterm -bg white -fg black et agrandissez-la au maximum. Reglez votre moniteur aux trois quarts de son intensite et ne regardez pas l'ecran. Jetez ensuite des coups d'oeil sur votre ecran, sans le regarder droit devant mais en utilisant la vision peripherique ; ce sont les cellules visuelles qui sont le plus sensibles au scintillement. Si vous estimez que la vision est confortable ou tolerable, le taux de rafraichissement vous convient, sinon augmentez-le de facon a ne pas vous exposer a des maux de tete ! Disons qu'a ce stade vous disposez d'une valeur de taux de rafraichissement. Avec le choix de HFL et VFL, nous avons encore pas mal de marge de manoeuvre. 44..11..55.. TTaaiillllee mmeemmooiirree nneecceessssaaiirree La quantite de memoire video dont vous disposez limite la resolution que vous pouvez atteindre pour un affichage couleur ou a niveaux de gris. Ce n'est probablement pas un critere pour les ecrans noir et blanc. Pour les affichages a 256 couleurs, un octet de memoire video permet de coder un point. Cet octet contient l'information determinant le melange de Rouge, Vert et Bleu necessaire pour l'obtention de la couleur. Pour une resolution de 800 x 600 points avec un octet par point, il faut donc 800 * 600 = 480.000 octets de memoire sur votre carte video. Plus generalement, les besoins en memoire seront de (HR * VR) / 1024 kilo-octets de RAM (DRAM ou VRAM). Dans le cas d'une resolution de 936 x 702 points, nous aurons besoin de (936 * 702) / 1024, soit 642 ko. Si vous disposez d'un megaoctet, c'est parfait. Si vous n'avez que 512 ko, il vous faudra choisir une resolution inferieure. Meme avec un moniteur tres performant, une taille memoire insuffisante ne permet pas de tirer pleinement avantage de celui-ci. D'autre part, si vous disposez d'un megaoctet et que votre ecran ne supporte que 800 x 600, vous ne pourrez depasser cette resolution. La memoire en supplement n'est jamais perdue. XFree86 saura l'utiliser pour gerer un ecran virtuel plus grand que la resolution utilisee (voir la configuration de la taille d'un ecran virtuel dans XF86Config). Souvenez-vous qu'une taille memoire de 512 ko correspond a 512 * 1024 = 524288 octets. Si vous vous contentez de 16 couleurs, vous pouvez indiquer au serveur que vous n'utiliserez que 4 bits par point et ainsi doubler la resolution que votre carte peut supporter. Les cartes S3, par exemple, savent gerer 1024 x 768 x 256. Vous pouvez passer a 1280 x 1024 x 16 avec 4 bits par point (Depth 4, voir ce parametre dans XF86Config). 44..11..66.. CCaallccuulleerr lleess ttaaiilllleess ddee ttrraammeess Attention : cette methode a ete developpee pour les moniteurs multi-synchro. Elle fonctionnera sans doute pour les moniteurs a frequence fixe, sachant que vous ne devrez pas vous permettre de depasser les frequences imposees par celui- ci. Commencons par diviser DCF par la plus grande valeur de HSF pour obtenir le nombre minimum de points par ligne disponibles. Par exemple, supposons que vous ayez une carte SVGA Sigma Legend avec une horloge a 65 MHz et un moniteur avec une frequence horizontale de 55 kHz. La valeur (DCF / HSF) est donc 1181. Maintenant, un peu de magie ;-). Arrondissez cette valeur a la plus proche valeur multiple de 8. La plupart des cartes SVGA et S3 utilisent en effet des registres 8 bits decales de 3 bits vers la gauche, ce qui fait reellement 11 bits. De toute facon, ca ne fait pas de mal. Donc, nous obtenons 1176. Ceci correspond a la valeur de HFL minimum utilisable. Une valeur superieure de HFL (donc une meilleure resolution horizontale) peut etre obtenue, en diminuant la valeur de HSF. Mais le scintillement sera superieur. Au debut une petit gymnastique intellectuelle est necessaire. Dites-vous bien que la frequence d'horloge de votre carte video donne un nombre maximal de points par seconde. Evidemment, plus vous mettez de points par ligne, plus vous mettez de temps a la parcourir, et moins vous en parcourerez. Continuons ! De maniere un peu brutale (cela se demontre, mais l'on tomberait dans des calculs certes plus precis, mais rebarbatifs), disons que 8800 %% de la longueur de la trame horizontale est disponible pour la partie visible de la ligne balayee. Cela laisse la marge necessaire pour les bords et le retour de balayage. Nous obtenons donc la valeur de 944. Maintenant, pour obtenir une image au format 4:3, definissons la resolution verticale aux 33//44 de la resolution horizontale. Ce qui nous donne 708. Enfin, la valeur reelle de VFL est obtenue en mmuullttiipplliiaanntt cette valeur par 1.05 (toujours pour les bords et le retour de balayage). Nous obtenons 743. La encore, cela semble tres empirique, mais nous considerons pour cette methode que vous connaissez le minimum de choses sur votre materiel. Nous verrons plus loin dans les exemples reels que si les donnees de depart sont nombreuses, il est possible d'effectuer des calculs rigoureux. A propos de 4:3, ce rapport nous rapproche du celebre nombre d'or, (1 + sqrt(5))/2. Il semble assez plaisant d'avoir un tel format ; les resolutions classiques (640 x 480, 800 x 600 et 1024 x 768) l'approchent toutes. C'est plus psychologique que technique ; rien ne vous empeche de modifier ce rapport. Nous avons donc : HFL=1176 et VFL=743. Divisons 65 Mhz par le produit des deux, ce qui nous donne un taux de rafraichissement de 74.4 Hz. Excellent ! Mieux que le standard VESA ! Et vous avez une resolution de 944 x 708, ce qui est meilleur que 800 x 600. Pas mal ! Vous pouvez meme ameliorer le taux de rafraichissement aux alentours de 76 Hz, en sachant que les moniteurs ont souvent une synchro horizontale de 2 kHz superieure a la valeur nominale, et en diminuant VFL. Mais laissons ces manipulations a plus tard. Assurez-vous que votre moniteur supportera les 76 Hz (Le NEC 4D, par exemple ne peut aller qu'a 75 Hz). Avouez que jusque-la cela n'a pas ete completement magique ! 44..11..77.. MMaaggiiee nnooiirree eett ttooppss ddee ssyynncchhrroo Nous avons calcule les valeurs HFL et VFL pour la frequence de l'_h_o_r_l_o_g_e _p_o_i_n_t que nous avons choisie. Nous avons trouve un taux de rafraichissement acceptable et verifie que nous disposions d'assez de memoire. Maintenant il est necessaire de savoir quand et ou placer les tops de synchro. Les tops de synchro controlent les frequences reelles de balayage horizontale et verticale de votre moniteur. Les valeurs HSF et VSF que vous avez extraites de votre manuel sont des frequences nominales, et correspondent a des maxima approximatifs. Les tops de synchro injectes dans le signal video par votre adaptateur permettent au moniteur de fonctionner correctement. Vous souvenez-vous que seule une partie du temps necessaire au balayage d'une trame est utilisee pour l'image a afficher (i.e. la resolution) ? SSyynncchhrroo hhoorriizzoonnttaallee :: Selon les definitions precedentes, il faut HFL tops d'horloge de votre carte pour tracer une ligne complete. Appelons HR le nombre de tops correspondant seulement a la partie visible (la resolution horizontale). Donc HR < HFL par definition. Concretement, considerons que le signal video demarre a l'instant 0, et schematisons les deux valeurs comme figure ci-dessous : +----------------------------------------------------------------+ |_____________________________________ | | | | unite : top +------------------------------------+---------------------------+ 0 HR HFL | | | | |<-HGT1->| <-HSP-> |<-HGT2->| Maintenant, nous devons placer un top de synchro de longueur HSP entre la fin du signal video correspondant a la partie visible et la fin de la trame entiere. Pourquoi cela ? Parce que nous souhaitons centrer l'image au mieux et nous avons deja vu qu'il fallait laisser un temps non negligeable, d'une part pour les bords non visibles, d'autre part pour le retour du faisceau. Si nous reussissons cela, nous obtiendrons une image correcte. De chaque cote de HSP doivent etre prevus des temps "de garde", et de stabilisation. Environ 30 tops en premiere approximation. Ce sont HGT1 et HGT2. En realite HGT1 est different de HGT2, mais vous pourrez les prendre egaux si vous partez de rien. Vous ajusterez apres. Si vous avez de la chance, ou un bon manuel accompagnant votre moniteur (ou les deux), les valeurs ci-dessus sont indiquees, le plus souvent en duree, mais il est tres facile d'en deduire le nombre de points (ou de tops d'horloge) correspondant. Par exemple, mon manuel (moniteur HYUNDAI HL7682P) indique les valeurs suivantes : HGT1 HSP HGT2 Frequences ---- --- ---- ---------- 640x480: H(u) 0.636 3.813 1.907 31,5 kHz VGA V(ms) 0.318 0.064 1.048 60.0 Hz 800x600 H(us) 1.119 2.399 1.279 48,1 kHz VESA V(ms) 0.772 0.124 0.479 72,0 Hz 1024x768 H(us) 0.615 1.723 2.338 48,9 kHz SVGA/NI V(ms) 0.204 0.306 0.327 60,5 Hz 1024x768 H(us) 0.320 1.813 1.920 56,48 kHz VESA V(ms) 0.053 0.106 0.513 70,1 Hz 1280x1024 H(us) 0.296 0.593 2.815 64,3 kHz Standard V(ms) 0.124 0.078 0.498 60,1 Hz Ce sont des valeurs assez courantes, certaines etant au standard VESA. Il y a fort a parier que beaucoup de moniteurs ont des valeurs semblables. Vous pouvez utiliser ces valeurs comme reference, selon votre resolution. Pour nos calculs, prenons par exemple une valeur de HSP = 3,8 us (VGA). Utilisant l'horloge a 65 MHz decrite, nous savons que HSP est equivalent a : 65 * (10 ^ 6) * 3.8 * (10 ^ (-6)) soit 247 tops d'horloge (^ signifie puissance). Retour sur le schema precedent. Comment devons nous placer nos 247 tops d'horloge ? En utilisant notre exemple, nous avions HR=944 et HFL=1176. La difference est donc de 1176 - 944 = 232 qui est inferieur a 247 ! Nous devons donc effectuer quelques ajustements. Que pouvons- nous faire ? En augmentant HFL de 8 et en diminuant VFL d'autant, nous obtenons une difference de 1184 - 936 = 248. On y est presque. Ensuite, au lieu d'utiliser la valeur de 3,8 us, nous utiliserons 3,5 us pour HSP. Nous obtenons alors 65 * 3,5 = 227. Cela semble mieux, bien que 248 ne soit pas beaucoup plus grand que 227. Rappelons qu'il faut reserver du temps pout HGT1 et HGT2. Or il faut au moins 30 tops pour chacun. De plus ils doivent etre multiples de 8, donc disons 32. Sommes-nous coinces ? Non, heureusement. Nous allons en fait calculer la longueur de trame qu'il va nous falloir, en nous rappelant que la valeur de HFL = 1176 est un minimum. On peut l'augmenter, en diminuant la valeur HSF, donc le taux de rafraichissement. Continuons a chercher les bonnes valeurs. 936 est bien multiple de 8. Ajoutons HGT1, 936 + 32 = 968. Ajoutons ensuite HSP, 968 + 227 = 1195. Ajoutons enfin HGT2, 1195 + 32 = 1227. Cela ne semble pas trop mal, mais 1232 est la plus proche valeur multiple de 8. Utilisons encore la calculatrice pour trouver la longueur du top de synchro reellement utilise. 1232 - 32 = 1200 qui est multiple de 8. 1232 - 32 - 968 = 232, correspondant a une synchro de 3,57 us qui est raisonnable. De plus 936 / 1232 = 0.76 qui est assez proche des 80% que nous donnions. Nous solliciterons donc le moniteur a 52,7 kHz (65 MHz / 1232) qui est dans ses possibilites. SSyynncchhrroo vveerrttiiccaallee :: En utilisant la regle des trois-quarts, nous donnerons a la resolution verticale la valeur 702. La longueur de trame verticale sera de 702 * 1,05 = 737. Le taux de rafraichissement de l'ecran est donc egal a 65 Mhz / (737 * 1232) = 71,6 Hz. C'est excellent ! Le schema de synchro verticale est similaire : +----------------------------------------------------------------+ |_____________________________________ | | | | unite : top +------------------------------------+---------------------------+ 0 VR VFL | | | |<--VGT-->|<--VSP-->| La synchro demarre apres l'affichage de la derniere ligne. VGT correspond au temps "de garde" vertical (compte en nombre de lignes) necessaire avant le top de synchro. Certains moniteurs se satisfont d'une valeur VGT = 0, ce que nous utiliserons dans l'exemple. Certains necessitent 2 ou 3 lignes de stabilisation, et si un doute existe, il vaut mieux les inserer. Aucun probleme ne pourra venir de la. Revenons a notre exemple : a partir de la definition de la longueur de trame, l'unite de temps vertical correspond au temps necessaire pour tracer une ligne horizontale complete, ce qui donne ici (1232 / 65 Mhz) = 18,95 us. L'experience montre que la valeur de top de synchro verticale devrait se trouver dans l'intervalle 50 a 300 us. Prenons par exemple 150 us, qui correspond a 8 temps de trame horizontale (150 / 18.95). 44..11..88.. RRaasssseemmbblloonnss nnooss iiddeeeess Nous pouvons deja construire le debut de la section MMoonniittoorr. Nous ne nous etendrons pas sur les rubriques _I_d_e_n_t_i_f_i_e_r, _V_e_n_d_o_r_N_a_m_e et _M_o_d_e_l_N_a_m_e. Tres facile. La rubrique _B_a_n_d_w_i_d_t_h doit indiquer la largeur de bande passante de votre moniteur. Exemple : # Bandwidth est en MHz sauf si unites specifiees Bandwidth 75.0 La rubrique _H_o_r_i_z_S_y_n_c indique la ou les frequences horizontales supportees par votre moniteur. On peut y indiquer une seule frequence, plusieurs valeurs discretes ou bien un ou plusieurs intervalles. Exemple : # HorizSync 31.5 # typique pour un moniteur a frequence fixe unique HorizSync 30-82 # multisync # HorizSync 31.5, 35.2, 37.5 # frequences de synchro multiples # HorizSync 15-25, 30-50 # plusieurs intervalles de frequences On agira de meme pour la rubrique _V_e_r_t_R_e_f_r_e_s_h avec les frequences verticales. Dans la suite de cette section se trouvent des tables des modes video. Pour chaque mode, cinq rubriques sont definies : le nnoomm dduu mmooddee, la ffrreeqquueennccee dd''hhoorrllooggee, les ttiimmiinnggss hhoorriizzoonnttaauuxx et vveerrttiiccaauuxx, enfin les ooppttiioonnss. Deux presentations sont possibles : l'ancienne (celle qui etait en vigueur pour XFree-2.1) se presente sous forme de lignes de valeurs numeriques, chaque ligne specifiant au serveur un mode : ModeLine < nom > HR SH1 SH2 HFL VR SV1 SV2 VFL La nouvelle presentation, plus claire, fait preceder chaque rubrique d'un mot-cle : Mode "nom" DotClock HTimings HR SH1 SH2 HFL VTimings VR SV1 SV2 VFL Flags EndMode Pour des raisons de simplicite, nous utiliserons la premiere presentation. Le nom du mode video est generalement donne entre guillemets et est utilise comme reference dans la section SSccrreeeenn apres le mot-cle MMooddeess. Le nom peut etre omis si la ligne decrite appartient au meme mode video que la precedente. La valeur <_h_o_r_l_o_g_e> represente la frequence d'horloge (_d_o_t _c_l_o_c_k, que nous avons appelee DCF) qui est utilisee pour generer les timings des deux rubriques suivantes. La rubrique _H_T_i_m_i_n_g_s contient quatre champs decrivant comment doit etre generee chaque ligne a l'ecran. Ces champs sont exprimes en nombre de pixels. La premiere valeur correspond a llaa rreessoolluuttiioonn hhoorriizzoonnttaallee vviissiibbllee, c'est-a-dire le nombre de points illumines (que nous avons appele HR). La deuxieme valeur indique a quel pixel le top de synchro horizontal doit commencer (HR + HGT1). Le troisieme champ indique a quel pixel le top de synchro doit finir (HR + HGT1+ HSP). Le quatrieme champ donne la longueur totale de la trame (HFL). La rubrique _V_T_i_m_i_n_g_s contient egalement quatre champs. La premiere valeur correspond a llaa rreessoolluuttiioonn vveerrttiiccaallee vviissiibbllee, c'est-a-dire le nombre de lignes illuminees (que nous avons appelee VR). La deuxieme valeur indique a quelle ligne le top de synchro vertical doit commencer (VR + VGT). Le troisieme champ indique a quelle ligne le top de synchro doit finir (VR + VGT+ VSP). Le quatrieme champ donne la longueur totale de la trame verticale (VFL). Exemple : #Nom_de_mode Horloge Timings horizontaux Timings verticaux "752x564 40 752 784 944 1088 564 567 569 611 44.5 752 792 976 1240 564 567 570 600 Note : X11R5 ne supporte que les valeurs entieres pour l'horloge. Rappel : Toutes les valeurs horizontales HR, HGT1, HGT2, HFL (et donc les cumuls) sont ddiivviissiibblleess ppaarr 88. Cela n'est pas requis pour les timings verticaux. Autre exemple : valeurs de timings horizontaux : 800 864 1024 1088 Cette ligne definit le nombre de points illumines (800), le numero du point a partir duquel le top de synchro demarre (864), le numero du point a partir duquel le top de synchro s'arrete (1024), suivi du numero du dernier point de la ligne horizontale (1088). Le nombre de lignes depuis le haut de l'ecran jusqu'en bas correspond a une trame. Le signal de base d'une trame est une ligne. Un certain nombre de lignes correspond a l'image affichee. Apres la derniere ligne affichee, un delai d'un certain nombre de lignes est genere, precedant le top de synchro verticale. Celui-ci dure l'equivalent de quelques " temps lignes ". Enfin un nouveau delai de quelques lignes est necessaire apres la synchro. On retrouve de la meme maniere quatre valeurs : valeurs de timings verticaux : 600 603 609 630 Cet exemple indique qu'il y a 600 lignes visibles a l'ecran, que la synchro verticale demarre a la 603e ligne, s'arrete a la 609e ligne et qu'il y a au total 630 lignes. Ces valeurs ne sont ppaass ffoorrcceemmeenntt ddiivviissiibblleess ppaarr 88. Revenons a notre exemple. Il ne nous reste plus maintenant qu'a ecrire toutes ces valeurs correctement dans la section appropriee, comme suit : ModeLine < nom > DCF HR SH1 SH2 HFL VR SV1 SV2 VFL ou SH1 et SH2 correspondent respectivement au debut et a la fin de la synchro horizontale, SV1 et SV2 respectivement au debut et a la fin de la synchro verticale. #nom horloge timings horizontaux timings verticaux options ModeLine 936x702 65 936 968 1200 1232 702 702 710 737 Aucune option n'est necessaire ici. Nous avons fini. Selon le materiel dont vous disposez, certaines options pourront etre necessaires. Decrivons-les rapidement : IInntteerrllaaccee indique que le mode est entrelace DDoouubblleeSSccaann indique un mode ou chaque ligne est parcourue deux fois. ++HHSSyynncc eett --HHSSyynncc permettent de selectionner la polarite du signal de synchronisation horizontale ++VVSSyynncc eett --VVSSyynncc permettent de selectionner la polarite du signal de synchronisation verticale CCoommppoossiittee permet de specifier l'utilisation d'une synchro composite sur les materiels qui le supportent. ++CCSSyynncc eett --CCSSyynncc permettent de selectionner la polarite du signal de synchronisation composite 44..11..99.. FFooiirree AAuuxx QQuueessttiioonnss 1. LL''eexxeemmppllee qquuee vvoouuss aavveezz ddoonnnnee nnee ccoorrrreessppoonndd ppaass aa uunnee rreessoolluuttiioonn ssttaannddaarrdd.. PPuuiiss--jjee ll''uuttiilliisseerr ?? Pourquoi pas ? Il n'y a aucune raison pour que vous soyez limite aux resolutions de 640 x 480, 800 x 600 ou 1024 x 768. Le serveur X vous autorise a configurer votre systeme avec une tres grande liberte. Cela prend relativement peu de temps d'obtenir une configuration correcte. La chose importante a prendre en compte est le taux de rafraichissement. Ne choisissez pas une resolution trop grande au prix d'un scintillement desagreable. 2. EEsstt--ccee llaa sseeuullee rreessoolluuttiioonn ppoossssiibbllee aavveecc lleess vvaalleeuurrss dd''hhoorrllooggee ddee 6655 MMHHzz eett uunnee HHSSFF ddee 5555 kkHHzz ?? Absolument pas ! Nous vous invitons a suivre la procedure pour faire des essais differents jusqu'a obtenir une configuration qui vous convienne. Cette experience peut vous amuser. La plupart des configurations vous donneront des effets etranges, mais rien ne peut vraiment abimer votre moniteur multi-synchro (sauf si vous demandez a votre carte video une cadence hors de ses limites ; de meme, si vous restez relativement pres des resolutions conseillees pour votre moniteur, tout ira bien). Pour les moniteurs a frequences fixes, attention ! Ce genre d'essais par tatonnement peut les endommager. 3. VVoouuss aavveezz mmeennttiioonnnnee ddeeuuxx rreessoolluuttiioonnss ssttaannddaarrdd.. DDaannss llee ffiicchhiieerr XXFF8866CCoonnffiigg,, iill yy aa pplleeiinn ddee rreessoolluuttiioonnss ddiissppoonniibblleess,, ppoouuvveezz-- vvoouuss mmee ddiirree ss''iill eesstt ppoossssiibbllee dd''eenn pprreennddrree eett ddee lleess bbrriiccoolleerr ?? Absolument ! Prenez par exemple la resolution standard de 640 x 480. Elle est decrite avec une frequence de pilotage de 25 MHz, les longueurs de trames sont respectivement de 800 et 525. Le taux de rafraichissement est donc de 59,5 Hz. Pas trop mauvais. Mais la frequence de 28 MHz est une valeur assez courante sur les cartes video SVGA. Si nous l'utilisons pour piloter cette resolution, en suivant la procedure decrite, nous obtenons des longueurs de trames de 812 et 505. Le taux de rafraichissement passe alors a 68 Hz. Nette amelioration par rapport a la valeur standard ! 4. CCoommmmeenntt ffaaiirree aavveecc lleess mmooddeess eennttrreellaaccee // nnoonn--eennttrreellaaccee ?? A une frequence donnee, un affichage entrelace scintillera plus qu'un non-entrelace, ce qui explique que ce mode soit de plus en plus abandonne. Avec un scintillement accru, vous gagnez en resolution avec une horloge point plus faible. Si la valeur DCF etait assez grande (90 Mhz ou plus), le mode entrelace n'engendrerait plus de scintillement, mais aux frequences courantes, les moniteurs fonctionnant en mode entrelace sont assez mauvais sous X. 5. PPoouuvveezz--vvoouuss rreessuummeerr rraappiiddeemmeenntt ccee ddoonntt vvoouuss vveenneezz ddee ppaarrlleerr ?? +o Pour toute frequence de pilotage donnee, l'augmentation de la resolution implique une diminution du taux de rafraichissement, et donc introduit plus de scintillement ; +o Si une haute resolution est souhaitable et que votre moniteur la supporte, essayez de vous procurer une carte video SVGA fournissant une horloge (DCF) suffisante. Plus grande sera cette frequence, meilleure sera votre image. 44..11..1100.. DDeeuuxx eexxeemmpplleess ssuupppplleemmeennttaaiirreess ddee ccaallccuullss Prenons une autre hypothese : Soit une carte video ayant une horloge a 40 MHz, et un afficheur ayant une frequence horizontale pouvant varier de 30 a 37 kHz. Nous souhaitons faire fonctionner l'ensemble a une resolution d'environ 800 x 600. Le nombre minimum de points par ligne est donc de 40000000 / 37000 = 1081,081, soit 1081 points par ligne. Nous choisirons cette valeur dans les calculs qui vont suivre. Chaque ligne de notre affichage aura au moins 1081 points. Arrondissons- le a 1088 pour le rendre divisible par 8. Maintenant, considerons que le top de synchro horizontale doit durer 3,8 us. Calculons a combien de points cela correspond, sachant que la "duree" d'un point est de 1 / 40000000 de seconde, soit 0.025 us par point. Le nombre de points correspondant a 3,8 us est : 3,8 us = P points * (0,025 us / point) soit P points = 3,8 us / (0,025 us / point) = 152 points 152 est divisible par 8. S'il ne l'etait pas, nous devrions choisir le multiple de 8 le plus proche. Nous avons 1088 points par ligne au total. La resolution visible sera de 800 points. Il nous reste donc a determiner les temps qui se trouveront avant et apres la synchronisation necessaire pour l'affichage. La regle veut que l'on mette environ 30 points de chaque cote. Dans ce cas, choisissons la valeur de 32, divisible par 8. Or il nous reste : (1088 - 800 - 152) = 136 points que nous devons repartir de chaque cote de la synchro. Divisons le nombre en deux parts egales, soit 68 points avant la synchro et 68 points apres. Les quatre valeurs du fichier XF86Config seront donc 800 (800 + 68) (800 + 68 + 152) (800 + 68 + 152 + 68) ou 800 868 1020 1088 Maintenant, calculons les nombres verticaux. Tout d'abord, souvenez-vous que les nombres verticaux ne sont pas exprimes en termes de points mais de lignes. Donc, nous avons a calculer le temps que prend l'affichage d'une ligne. Ce calcul est simple a faire, car nous savons que chaque ligne fait 1088 points et que chaque point dure 0,025 us, ce qui donne : (1088 points / ligne) * (0,25 us / point) = 27,2 us / ligne Puisque nous avons choisi une definition de 800 points par ligne, choisissons le nombre de lignes selon le rapport de 4/3. 800 valant 4 x 200, nous aurons 600 lignes visibles. La resolution sera bien de 800 x 600. Nous savons qu'un top de synchro vertical doit se trouver dans l'intervalle 50 a 300 us. Si nous choisissons 150 us comme valeur courante, nous trouverons a combien de lignes cela correspond en divisant : (150 us / top) / (27,2 us / ligne) = 5,51 lignes par top En arrondissant a la valeur entiere immediatement superieure, nous obtenons 6 lignes par top de synchro. Pour obtenir le nombre total de lignes par trame (lignes illuminees plus lignes non-illuminees sur les bords), nous considerons que le nombre total de lignes est de 5% superieur au nombre de lignes visibles. Le nombre total de lignes est de : (600 lignes) * 1,05 = 630 lignes par trame Nous devons placer le top de synchro dans les lignes non visibles, entre la fin des lignes visibles et la fin de la trame. Puisque nous disposons de 630 lignes, dont 600 illuminees, 6 correspondant a la duree du top, il nous reste : (630 - 600) - 6 = 24 lignes Certains moniteurs acceptent que le top demarre immediatement apres les lignes visibles, d'autres en revanche necessitent une ou deux lignes d'attente avant le top de synchro. De facon a etre surs de notre coup, inserons trois lignes entre la fin des lignes illuminees et le top de synchro. Le reste des lignes sera ajoute apres la fin de la synchro. Les nombres des timings verticaux sont donc : 600 (600 + 3) (600 + 3 + 6) (600 + 3 + 6 + 21) ou 600 603 609 630 Avant de faire quoi que ce soit d'autre, nous devons nous assurer que le moniteur pourra supporter 630 lignes par trame a raison de 27,2 us par ligne. Calculons le nombre de trames par seconde que generera notre configuration, et comparons la valeur a celle donnee dans le manuel. Pour 630 lignes par trame a raison de 27,2 us par ligne, nous avons 630 * 27,2 = 17136 us par trame, soit 0,017136 seconde par trame, ou encore 1 / 0,017136 trame par seconde : 1 / (0,017136 seconde / trame) = 58,4 trames / seconde Si la valeur 58,4 Hz est dans l'intervalle des valeurs acceptees par votre moniteur, tout va bien. Si celui-ci ne supporte pas une telle vitesse de synchro verticale (taux de rafraichissement), nous devons modifier le nombre de lignes par trame en ajustant tous les timings proportionnellement. Combinons maintenant les valeurs horizontales et verticales pour obtenir une ligne que l'on peut mettre dans le fichier XF86Config : ModeLine "800x600" 40 800 868 1020 1088 600 603 609 630 Nous pouvons maintenant tester la configuration. Il se peut qu'il y ait des problemes, en raison des suppositions que nous avons faites, mais dans la grande majorite des cas, cela devrait au moins vous donner un affichage stable. Il faut encore quelques experimentations pour obtenir quelque chose de vraiment satisfaisant. DDeess ccaallccuullss rreeeellss Ma carte video a un oscillateur battant a 40 MHz, je pars donc avec cette valeur d'horloge. La frequence de synchro horizontale de mon moniteur est de 37 kHz, donc le nombre de points minimum par ligne est de 40000000 / 37000 = 1081. La frequence de synchronisation verticale peut varier de 50 a 90 Hz. Le manuel de mon moniteur explique que la duree du top de synchro horizontal ne peut depasser 3,92 us. Avezc une duree de 0,025 us par point, le top dure : (3,92 us) / (0,025 us / point) = 156,8 points Arrondissons cette valeur a l'entier le plus proche divisible par 8, soit 160. Le manuel dit egalement que le temps separant le dernier point illumine du debut de la synchro doit etre d'au moins 0,67 us, ce qui, a une frequence d'horloge de 40 MHz - souvenez-vous que 40 MHz = 1 / 40000000 = 0,025 us par point - correspond a : P points = (0,67 us) / (0,025 us / point) = 26,8 points. que nous arrondissons a 32 (divisible par 8). Mon manuel dit encore que le temps suivant le top de synchro doit etre d'au moins 3,56 us. En nombre de points cela correspond a : P points = (3,56 us) / 0,025 us / point) = 142,4 points. que nous arrondissons a 144. Maintenant, pour une ligne horizontale nous avons 800 points illumines, 32 points avant la synchro, 160 points de duree de synchro et 144 points apres la synchro. 800 + 32 + 160 + 144 = 1136 Une ligne fait maintenant 1136 points au lieu des 1088 (1081 arrondis) precedemment calcules, mais souvenez vous que cette valeur etait le minimum de points que nous pouvions avoir. Donc 1136 points sont corrects pour demarrer. Nous avons deja une partie de notre configuration : 800 (800+32) (800+32+160) (800+32+160+144) Une ligne de 1136 points represente 1136 * 0,025 = 28,4 us. La regle des 4 / 3 nous mene a une resolution verticale de 600 points visibles. Le manuel de mon moniteur indique que la synchro verticale doit durer au moins 64 us. En nombre de lignes, cela correspond a : (64 us / synchro) / (28,4 us / ligne) = 2,25 lignes / synchro. arrondi a 3 lignes. Le manuel indique egalement que le temps apres la derniere ligne affichee et le debut de la synchro doit etre d'au moins 318 us et que le delai apres la synchro doit etre d'au moins 630 us. Calculons le nombre de lignes que cela represente : (318 us) / (28,4 us / ligne) = 11,20 lignes (630 us) / (28,4 us / ligne) = 22,18 lignes que nous arrondissons respectivement a 12 et 23 lignes. La deuxieme partie de la configuration correspond aux valeurs : 600 (600+12) (600+12+3) (600+12+3+23) Nous voila prets. La ligne du fichier XF86Config est donc la suivante : ModeLine "800x600" 40 800 832 992 1136 600 612 615 638 C'est le premier mode video que j'ai essaye. Il m'a semble a premiere vue qu'il y avait un peu de scintillement, j'ai essaye de modifier les timings et j'ai obtenu une qualite correcte pour une resolution de 784 x 614. 44..11..1111.. CCoorrrriiggeerr ddeess pprroobblleemmeess dd''iimmaaggee Votre fichier de configuration est pret. Vous lancez le serveur X et l'image ne semble pas correcte. Que faire ? Voici quelques solutions. Vous ddeeppllaacceezz l'image en changeant les timings de synchro. Vous ddiimmeennssiioonnnneezz l'image en changeant la longueur de trame (vous devez modifier aussi les tops de synchro pour garder une image centree, sinon, le dimensionnement deplace l'image). Encore quelques petites choses : les positions horizontale et verticale sont independantes. Le deplacement horizontal de l'image n'affecte pas sa position verticalement, et reciproquement. Cependant, ce n'est pas tout a fait vrai pour le dimensionnement. Alors que la modification de la largeur de l'image n'affecte pas sa hauteur et vice-versa, la modification des deux peut etre limitee. En particulier, si votre image est trop large dans les deux dimensions, vous resoudrez le probleme avec une frequence d'horloge superieure, cela augmentant la resolution disponible. LL''iimmaaggee eesstt ddeeppllaacceeee aa ggaauucchhee oouu aa ddrrooiittee Pour corriger cela, deplacez la synchro horizontale. C'est-a- dire augmentez ou diminuez (par saut de 8) les deux valeurs centrales des timings horizontaux qui definissent les temps avant et apres la synchro horizontale. Si l'image est deplacee vers la gauche (le bord droit est trop large), et que vous souhaitez la deplacer a droite, diminuez ces deux valeurs. Si l'image est deplacee vers la droite (le bord gauche est trop large), et que vous souhaitez la deplacer a gauche, augmentez ces deux valeurs. LL''iimmaaggee eesstt ddeeppllaacceeee vveerrss llee hhaauutt oouu vveerrss llee bbaass Pour corriger ce probleme, vous devez deplacer la synchro verticale, c'est-a-dire augmenter ou diminuer les deux valeurs centrales des timings verticaux, dans le fichier XF86Config, definissant les temps avant et apres la synchro. Si l'image est deplacee vers le haut (bord inferieur trop large), et que vous souhaitez la descendre, diminuez les deux valeurs. Si l'image est deplacee vers le bas (bord superieur trop large), et que vous souhaitez la monter, augmentez les deux valeurs. LL''iimmaaggee eesstt ttrroopp llaarrggee ((rreesspp.. ttrroopp eettrrooiittee)) Diminuez (resp. augmentez) la longueur de trame horizontale. C'est-a-dire, modifiez les quatre nombres de la rubrique horizontale. Pour eviter de deplacer l'image, deplacez aussi la synchro (2eme et 3eme valeurs) de moitie moins. LL''iimmaaggee eesstt ttrroopp ggrraannddee ((rreesspp.. ttrroopp rreedduuiittee)) vveerrttiiccaalleemmeenntt Diminuez (resp. augmentez) la longueur de trame verticale. C'est-a-dire, modifiez les quatre nombres de la rubrique verticale. Pour eviter de deplacer l'image, deplacez aussi la synchro (2eme et 3eme valeurs) de moitie moins. Toute distorsion qui ne puisse etre maitrisee par ces methodes correspond certainement a une erreur plus fondamentale, comme une erreur de calcul ou une horloge trop rapide pour le moniteur. Finalement, souvenez-vous que le fait d'augmenter la longueur de trame, diminuera la frequence de rafraichissement, et vice-versa. 44..11..1122.. QQuueellqquueess eexxeemmpplleess rreeeellss ddee MMooddeess vviiddeeoo # # 640x480@60Hz Mode non-entrelace # Synchronisation horizontale = 31.5kHz # Timing: H=(0.95us, 3.81us, 1.59us), V=(0.35ms, 0.064ms, 1.02ms) # # name clock horizontal timing vertical timing flags "640x480" 25.175 640 664 760 800 480 491 493 525 # # Alternate 640x480@60Hz Mode non-entrelace # Synchronisation horizontale = 31.5kHz # Timing: H=(1.27us, 3.81us, 1.27us) V=(0.32ms, 0.06ms, 1.05ms) # # name clock horizontal timing vertical timing flags "640x480" 25.175 640 672 768 800 480 490 492 525 # # 640x480@63Hz Mode non-entrelace (non-standard) # Synchronisation horizontale = 32.8kHz # Timing: H=(1.41us, 1.41us, 5.08us) V=(0.24ms, 0.092ms, 0.92ms) # # name clock horizontal timing vertical timing flags "640x480" 28.322 640 680 720 864 480 488 491 521 # # 640x480@70Hz Mode non-entrelace (non-standard) # Synchronisation horizontale = 36.5kHz # Timing: H=(1.27us, 1.27us, 4.57us) V=(0.22ms, 0.082ms, 0.82ms) # # name clock horizontal timing vertical timing flags "640x480" 31.5 640 680 720 864 480 488 491 521 # # VESA 640x480@72Hz Mode non-entrelace # Synchronisation horizontale = 37.9kHz # Timing: H=(0.76us, 1.27us, 4.06us) V=(0.24ms, 0.079ms, 0.74ms) # # name clock horizontal timing vertical timing flags "640x480" 31.5 640 664 704 832 480 489 492 520 # # VESA 800x600@56Hz Mode non-entrelace # Synchronisation horizontale = 35.1kHz # Timing: H=(0.67us, 2.00us, 3.56us) V=(0.03ms, 0.063ms, 0.70ms) # # name clock horizontal timing vertical timing flags "800x600" 36 800 824 896 1024 600 601 603 625 # # Alternate 800x600@56Hz Mode non-entrelace # Synchronisation horizontale = 35.4kHz # Timing: H=(0.89us, 4.00us, 1.11us) V=(0.11ms, 0.057ms, 0.79ms) # # name clock horizontal timing vertical timing flags "800x600" 36 800 832 976 1016 600 604 606 634 # # VESA 800x600@60Hz Mode non-entrelace # Synchronisation horizontale = 37.9kHz # Timing: H=(1.00us, 3.20us, 2.20us) V=(0.03ms, 0.106ms, 0.61ms) # # name clock horizontal timing vertical timing flags "800x600" 40 800 840 968 1056 600 601 605 628 +hsync +vsync # # Alternate 800x600@60Hz Mode non-entrelace # Synchronisation horizontale = 37.9kHz # Timing: H=(1.20us, 3.80us, 1.40us) V=(0.13ms, 0.053ms, 0.69ms) # # name clock horizontal timing vertical timing flags "800x600" 40 800 848 1000 1056 600 605 607 633 # # VESA 800x600@72Hz Mode non-entrelace # Synchronisation horizontale = 48kHz # Timing: H=(1.12us, 2.40us, 1.28us) V=(0.77ms, 0.13ms, 0.48ms) # # name clock horizontal timing vertical timing flags "800x600" 50 800 856 976 1040 600 637 643 666 +hsync +vsync # # 1024x768@43.5Hz, mode entrelace (standard 8514/A) # Synchronisation horizontale = 35.5kHz # Timing: H=(0.54us, 1.34us, 1.25us) V=(0.23ms, 0.23ms, 0.93ms) # # name clock horizontal timing vertical timing flags "1024x768i" 44.9 1024 1048 1208 1264 768 776 784 817 Interlace # # VESA 1024x768@60Hz Mode non-entrelace # Synchronisation horizontale = 48.4kHz # Timing: H=(0.12us, 2.22us, 2.58us) V=(0.06ms, 0.12ms, 0.60ms) # # name clock horizontal timing vertical timing flags "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync # # 1024x768@60Hz Mode non-entrelace (horloge point non-standard) # Synchronisation horizontale = 48.4kHz # Timing: H=(0.65us, 2.84us, 0.65us) V=(0.12ms, 0.041ms, 0.66ms) # # name clock horizontal timing vertical timing flags "1024x768" 62 1024 1064 1240 1280 768 774 776 808 # # VESA 1024x768@70Hz Mode non-entrelace # Synchronisation horizontale = 56.5kHz # Timing: H=(0.32us, 1.81us, 1.92us) V=(0.05ms, 0.14ms, 0.51ms) # # name clock horizontal timing vertical timing flags "1024x768" 75 1024 1048 1184 1328 768 771 777 806 -hsync -vsync # # 1024x768@70Hz Mode non-entrelace (horloge point non-standard) # Synchronisation horizontale = 56.25kHz # Timing: H=(0.44us, 1.89us, 1.22us) V=(0.036ms, 0.11ms, 0.53ms) # # name clock horizontal timing vertical timing flags "1024x768" 72 1024 1056 1192 1280 768 770 776 806 -hsync -vsync # # 1024x768@76Hz Mode non-entrelace # Synchronisation horizontale = 62.5kHz # Timing: H=(0.09us, 1.41us, 2.45us) V=(0.09ms, 0.048ms, 0.62ms) # # name clock horizontal timing vertical timing flags "1024x768" 85 1024 1032 1152 1360 768 784 787 823 # # 1280x1024@44Hz, Mode entrelace # Synchronisation horizontale = 51kHz # Timing: H=(0.02us, 2.7us, 0.70us) V=(0.02ms, 0.24ms, 2.51ms) # # name clock horizontal timing vertical timing flags "1280x1024i" 80 1280 1296 1512 1568 1024 1025 1037 1165 Interlace # # Alternate 1280x1024@44Hz, Mode entrelace (horloge point non-standard) # Synchronisation horizontale = 47.6kHz # Timing: H=(0.42us, 2.88us, 0.64us) V=(0.08ms, 0.12ms, 0.96ms) # # name clock horizontal timing vertical timing flags "1280x1024i" 75 1280 1312 1528 1576 1024 1028 1034 1080 Interlace # # 1280x1024@59Hz Mode non-entrelace (non-standard) # Synchronisation horizontale = 63.6kHz # Timing: H=(0.36us, 1.45us, 2.25us) V=(0.08ms, 0.11ms, 0.65ms) # # name clock horizontal timing vertical timing flags "1280x1024" 110 1280 1320 1480 1728 1024 1029 1036 1077 # # 1280x1024@61Hz, Mode non-entrelace # Synchronisation horizontale = 64.25kHz # Timing: H=(0.44us, 1.67us, 1.82us) V=(0.02ms, 0.05ms, 0.41ms) # # name clock horizontal timing vertical timing flags "1280x1024" 110 1280 1328 1512 1712 1024 1025 1028 1054 # # 1280x1024@74Hz, Mode non-entrelace # Synchronisation horizontale = 78.85kHz # Timing: H=(0.24us, 1.07us, 1.90us) V=(0.04ms, 0.04ms, 0.43ms) # # name clock horizontal timing vertical timing flags "1280x1024" 135 1280 1312 1456 1712 1024 1027 1030 1064 44..22.. LLaa sseeccttiioonn DDeevviiccee Cette section n'est pas particulierement compliquee mais il convient d'y preter attention. Pour la raison deja indiquee au chapitre ``La partie facile du fichier XF86Config'', nous ne nous etendrons pas trop sur cette section. Nous passerons bien evidemment sur les rubriques _I_d_e_n_t_i_f_i_e_r, _V_e_n_d_o_r_N_a_m_e et _B_o_a_r_d_N_a_m_e. Les rubriques _C_h_i_p_s_e_t, _R_a_m_d_a_c et _V_i_d_e_o_r_a_m peuvent etre obtenues grace a l'utilitaire SuperProbe. Lancez-le sur une console texte. Voir le chapitre ``SuperProbe'' La rubrique _C_l_o_c_k_s correspond a l'ensemble des frequences utilisables par votre carte video. Pout obtenir ces valeurs vous pouvez au choix : +o Consulter la documentation et notamment le fichier _/_u_s_r_/_l_i_b_/_X_1_1_/_d_o_c_/_m_o_d_e_D_B_._t_x_t. Vous y trouverez peut-etre les valeurs pour votre carte video. +o Lancer la commande : X -probeonly. Les details sont fournis dans le livre "Le systeme Linux" decrit au chapitre ``Les documents a consulter'', ou dans le XFree86-HOWTO. +o Lancer X normalement. Si aucune rubrique CClloocckkss n'est definie, le serveur calculera les valeurs. Avec un peu de chance et surtout le bon serveur, vous obtiendrez un affichage correct. Appuyez sur les touches Ctrl+Alt+F (ou n correspond a la console a partir de laquelle vous avez lance X). Notez les valeurs que X a calculees et mettez-les dans le fichier XXFF8866CCoonnffiigg. NNoottee : Si vous faites un test (avec ou sans option -probeonly) sur votre machine, faites-le avec le minimum d'applications en cours. Le serveur X etant une application egalement, les boucles de timings peuvent etre perturbees par des activities du disque et rendre les valeurs imprecises. Effectuez le test plusieurs fois afin de verifier que les valeurs sont stables ; sinon, tuez des processus en activite jusqu'a ce qu'elles le soient. Utilisateurs SVR4 : le processus _m_o_u_s_e_m_g_r est connu pour etre perturbant. Afin d'eviter que la recherche des timings soit effectuee a chaque lancement de X et risquer que ceux-ci soient imprecis, il est preferable de les figer en les indiquant dans le fichier XF86Config. Cela supprime la recherche et donne au serveur une liste exacte des valeurs qu'il doit utiliser. En utilisant les donnees du paragraphe ``Les choses a connaitre sur votre carte video et votre moniteur'' on obtiendrait : wga Clocks 25 28 40 3 50 77 36 45 0 0 79 31 94 65 75 71 Sur des systemes deja charges, vous eviterez ainsi des demarrages variables de X, ou meme des echecs. Il est tout a fait possible que X echoue parce que les timings qu'il a trouves sont faux et qu'ils ne correspondent a aucune valeur connue d'_h_o_r_l_o_g_e _p_o_i_n_t (dot clock). 55.. LLeess aapppplliiccaattiioonnss dd''aaiiddee aa llaa ccoonnffiigguurraattiioonn Pour vous aider dans vos calculs nombreux et fastidieux, un certain nombre de petits programmes ont ete ecrits. Ils ne prennent que peu de place et il est conseille de les installer sur votre disque. 55..11.. VVggaasseett Un petit programme pour vous aider a configurer votre serveur X. Son role est de faciliter la recherche de la meilleure resolution de votre ecran. Il tourne dans une fenetre _x_t_e_r_m (X doit donc deja tourner), et affiche la geometrie actuelle de votre ecran, sous une forme similaire a celle decrite dans le fichier XF86Config. Vous pouvez modifier cette geometrie en temps reel, a l'aide d'un certain nombre de commandes decrites ci-apres. Vous pouvez ainsi determiner la configuration qui correspond a votre souhait, ou revenir a tout moment a la configuration initiale. AAtttteennttiioonn L'auteur et moi-meme (-- Le traducteur--) vous mettons en garde sur l'utilisation de ce programme. Vgaset possede les caracteristiques necessaires pour vous eviter d'endommager votre moniteur. Cependant, si vous specifiez une plage de frequences que votre moniteur ne supporte pas, ou bien une mauvaise horloge, _v_g_a_s_e_t peut causer des dommages irreversibles a votre materiel. Si vous ne connaissez pas toutes les valeurs, lancez _v_g_a_s_e_t sans option. Ne laissez en aucun cas votre moniteur fonctionner longtemps avec de mauvaises valeurs. Si quelque chose ne va pas, eteignez-le ! Utilisez _v_g_a_s_e_t a vos risques et perils. RReemmaarrqquuee Je vous sens fievreux tout a coup ! N'ayez pas peur, ceci n'est pas frequent. Allez-y en faisant attention. 55..11..11.. LLeess ooppttiioonnss ddee vvggaasseett Les options de la ligne de commande sont les suivantes : --VV Rend _v_g_a_s_e_t verbeux. En particulier, il affiche les registres CRTC. --dd _h_o_r_l_o_g_e Definit la valeur de l'horloge point. Ceci permet a _v_g_a_s_e_t de donner des informations sur les timings et de les utiliser pour determiner des intervalles de frequences. _h_o_r_l_o_g_e peut etre specife en hheerrttzz, kkiilloohheerrttzz ou mmeeggaahheerrttzz. Faites bien attention a donner la bonne valeur. --xx _f_r_e_q_u_e_n_c_e specifie la frequence horizontale minimale (en hheerrttzz ou kkiilloohheerrttzz) supportee par votre moniteur. Par defaut la valeur prise est la valeur courante. Cette option est ignoree si l'option -d _h_o_r_l_o_g_e est absente, sauf pour -x0. --XX _f_r_e_q_u_e_n_c_e specifie la frequence horizontale maximale (en hheerrttzz ou kkiilloohheerrttzz) supportee par votre moniteur. Par defaut la valeur prise est la valeur courante. Cette option est ignoree si l'option -d _h_o_r_l_o_g_e est absente. --yy _f_r_e_q_u_e_n_c_e specifie la frequence verticale minimale supportee par votre moniteur. Par defaut la valeur prise est la valeur courante. Cette option est ignoree si l'option -d _h_o_r_l_o_g_e est absente, sauf pour -y0. --YY _f_r_e_q_u_e_n_c_e specifie la frequence verticale maximale supportee par votre moniteur. Par defaut la valeur prise est la valeur courante. Cette option est ignoree si l'option -d _h_o_r_l_o_g_e est absente. --ss _c_o_n_f_i_g donne les valeurs horizontales de debut de synchro, de fin de synchro et du nombre total de points, et les valeurs verticales de debut de synchro, de fin de synchro et du nombre total de lignes. Ces valeurs correspondent aux trois dernieres valeurs de chaque rubrique d'un mode video : "640x480" 28 640 680 728 776 480 480 482 494 --- --- --- --- --- --- --vv _r_e_s_o_l_u_t_i_o_n specifie la valeur de la resolution virtuelle. Ceci vous permet d'augmenter la resolution affichee, au mieux jusqu'a ces valeurs. Celles-ci ne doivent pas depasser les valeurs donnees a la ligne _V_i_r_t_u_a_l de la section _S_c_r_e_e_n. Exemple : vgaset -d80 -x30 -X64 -y50 -Y100 -v 1152 910 --> correspond a un ecran Crystal Scan 1572 FS a 80 MHz 55..11..22.. LLeess ccoommmmaannddeess ddee vvggaasseett Elles sont activees en appuyant simplement sur une des touches decrites ci-apres, colonne de gauche : l diminue la marge gauche L augmente la marge gauche r diminue la marge droite R augmente la marge droite h diminue la duree de synchro horizontale H augmente la duree de synchro horizontale t diminue la marge du haut T augmente la marge du haut b diminue la marge du bas B augmente la marge du bas v diminue la duree de synchro verticale V augmente la duree de synchro verticale x diminue la resolution horizontale X augmente la resolution horizontale y diminue la resolution verticale Y augmente la resolution verticale ? reprend les valeurs initiales RC retour-chariot : reaffiche la configuration q quitte EOT quitte Apres chaque commande, _v_g_a_s_e_t reaffiche la configuration selon une presentation compatible avec la rubrique _M_o_d_e_L_i_n_e du fichier de configuration. 55..11..33.. LLeess bbuuggss ddee vvggaasseett Un certain nombre ! Non, pas trop quand meme, mais ce programme a ete teste seulement sur certaines cartes video (_E_T_4_0_0_0, _D_i_a_m_o_n_d _S_p_e_e_d_S_t_a_r, _A_T_I _G_r_a_p_h_i_c_s _U_l_t_r_a_P_r_o). Suivez l'actualite pour decouvrir d'eventuelles mises a jour ou savoir si des problemes ont ete detectes. Le serveur est perturbe lorsque vous modifiez le nombre de pixels. Si vous diminuez la valeur, le serveur ne deroulera plus l'ecran virtuel entier (scrolling). Si vous l'augmentez, il n'utilisera pas les nouveaux pixels (seulement avec _v_g_a_s_e_t). Cependant c'est utile pour determiner la meilleure resolution. Il n'est pour l'instant pas possible de modifier la valeur de l'horloge point (_d_o_t _c_l_o_c_k) avec _v_g_a_s_e_t. 55..22.. xxccllkk _x_c_l_k est un autre petit utilitaire qui vous aide a calculer les valeurs pour votre configuration. Il est base sur les heuristiques et regles que nous avons fixes dans ce document. Pour utiliser _x_c_l_k, vous devez connaitre les frequences supportees par votre carte video et votre moniteur (Un moniteur multi- synchro est d'ailleurs conseille). Les valeurs d'horloge peuvent etre determinees notamment avec le programme cclloocckk..eexxee disponible dans les archives Linux, ou encore en utilisant les utilitaires fournis avec votre carte video (Ex : les cartes ET4000 sont livrees avec les utilitaires DMODE et VMODE sous DOS). Il y a trois facons d'utiliser _x_c_l_k : xclk xclk -h xclk -r Les frequences horloge sont en MMHHzz, les frequences horizontales en kkHHzz (ne donnez que les valeurs). La premiere syntaxe utilise la frequence d'horloge de votre carte et la frequence horizontale de votre moniteur. Exemple : Ma carte a une horloge de 64 MHz et mon moniteur supporte une frequence horizontale de 56 kHz. J'utilise la commande : xclk 64 56 # premiere syntaxe Ceci genere deux lignes compatibles avec la rubrique MMooddeeLLiinnee du fichier de configuration (ajoutez eventuellement le mot-cle _M_o_d_e_L_i_n_e si vous souhaitez utiliser la ligne dans le fichier) : "896x672" 64 896 928 1160 1192 672 672 683 706 # Tx de rafraichissement = 76.05Hz ; Frequence horizontale = 53.69 kHz Il se peut que _x_c_l_k donne des valeurs ridicules. Exemple xclk 65 40 genere : "1296x972" 65 1296 1328 1600 1632 972 972 980 1021 # Tx de rafraichissement = 39.01Hz ; Frequence horizontale = 39.83 kHz Avec un tel taux de rafraichissement, on croirait regarder un film du debut du siecle. N'utilisez pas cette resolution. Les meilleurs taux de rafraichissement sont autour de 70 Hz. Plus la valeur est elevee, mieux c'est (selon ce que peut supporter votre moniteur). Un MAG 15H peut supporter une valeur allant jusqu'a 120 Hz. Beaucoup vont jusqu'a 75 Hz. Utilisons alors la troisieme syntaxe, qui permet de specifier le taux de rafraichissement, par exemple xclk -r 64 70 genere : "944x708" 64 944 976 1208 1240 708 708 718 743 # Tx de rafraichissement = 69.47Hz ; Frequence horizontale = 51.61Khz Une troisieme facon d'utiliser _x_c_l_k permet d'obtenir une resolution particuliere. Exemple xclk -h 64 944 genere : "944x708" 64 944 976 1216 1248 708 708 718 743 # Refresh rate = 69.47Hz ; Horizontal Frequency = 51.61Khz Comme vous pouvez le noter, certaines valeurs ont legerement change, malgre des donnees equivalentes. En fait rien de bien important puisque la difference n'excede pas 16 unites, ce qui est supporte par les moniteurs. Si les valeurs donnees par _x_c_l_k ne fonctionnent pas, recalculez les valeurs. Surtout n'essayez pas des valeurs farfelues avec votre serveur X. 55..33.. SSuuppeerrPPrroobbee 55..33..11.. DDeessccrriippttiioonn _S_u_p_e_r_P_r_o_b_e est un utilitaire dont le role est de determiner la configuration materielle video dont vous disposez, que ce soit sur un bus ISA/EISA/VLB ou PCI (sous reserve). Il recherche de differentes manieres et parmi les registres connus (les machines MicroChannel et PCI peuvent poser probleme ; _S_u_p_e_r_P_r_o_b_e fonctionne avec la plupart en utilisant l'option -no_bios). _S_u_p_e_r_P_r_o_b_e est un programme particulierement expose aux erreurs, notamment sous Unix pour lequel le materiel est plus esoterique que sous DOS. Il aura donc probablement besoin d'aide de la part de l'utilisateur. _S_u_p_e_r_P_r_o_b_e tourne sous SVR3, SVR4, Linux, 386BSD/FreeBSD/NetBSD, Minix-386 et Mach. Il pourrait etre tres facile de l'etendre aux autres systemes Unix, voire aux systemes non-Unix. Actuellement, _S_u_p_e_r_P_r_o_b_e sait detecter les cartes MDA, Hercules, CGA, MCGA, EGA, VGA et tous les _c_h_i_p_s_e_t_s SVGA (voir l'option _-_i_n_f_o, ci-dessous). Il sait aussi identifier de nombreux RAMDAC (-- DAC=Digital-Analog Converter (Convertisseur Digital-Analogique)--) HiColor/TrueColor utilises sur les cartes SVGA, ainsi que la quantite de memoire installee (pour beaucoup de _c_h_i_p_s_e_t_s). Il peut detecter les cartes 8514/A et derivees, mais pas les XGA ni PGC (l'auteur a l'intention de le faire). Il n'est pas non plus capable actuellement de reconnaitre les cartes Targa, TIGA ni MicroField. 55..33..22.. LLeess ooppttiioonnss Les options supportees par _S_u_p_e_r_P_r_o_b_e sont les suivantes : --vveerrbboossee Rend _S_u_p_e_r_P_r_o_b_e verbeux. Il fournit bon nombre d'informations pendant son execution. --nnoo1166 _S_u_p_e_r_P_r_o_b_e ne tentera pas d'utiliser les ports necessitant un decodage d'adresse d'E/S (-- Entree/Sortie--) sur 16 bits. Les premiers bus ISA specifiaient un decodage sur 10 bits. Par consequent certaines anciennes cartes (dont pas mal de cartes 8 bits) decoderont mal les references aux ports utilisant les 6 bits supplementaires et peuvent se mettre dans des etats bizarres, pensant avoir ete adressees alors qu'elles ne l'etaient pas. Il est recommande de mettre cette option si votre systeme comporte une ou plusieurs cartes 8 bits. --eexxccll _l_i_s_t_e _S_u_p_e_r_P_r_o_b_e ne tentera pas d'acceder aux ports d'E/S donnes dans la liste. Certaines cartes video utilisent des ports d'E/S non standard pouvant entrer en conflit avec d'autres cartes installees. En donnant a _S_u_p_e_r_P_r_o_b_e une liste de ports deja utilises, il saura qu'aucune carte video ne les utilise et par consequent ne les testera pas (ce qui pourrait perturber votre systeme). La liste d'exclusion est donnee sous forme de liste de numeros (ou d'intervalles de numeros) de ports d'E/S separes par des virgules. Un intervalle est donne sous la forme "inf-sup", bornes incluses. Les valeurs peuvent etre donnees en decimal, en octal (nombres commencant par '0'), ou en hexadecimal (nombres commencant par '0x'). --mmaasskk1100 Cette option est utilisee conjointement avec la liste d'exclusion (_-_e_x_c_l). Elle indique a _S_u_p_e_r_P_r_o_b_e que lors du test d'un port d'E/S hors de la liste d'exclusion, l'adresse du port doit etre masquee sur 10 bits. C'est important avec les anciennes cartes 8 bits ne pouvant decoder que 10 bits, ainsi que pour certaines cartes 16 bits bon marche. Cette option est moins restrictive que _-_n_o_1_6. --oorrddeerr _l_i_s_t_e Cette option donne a _S_u_p_e_r_P_r_o_b_e une liste de _C_h_i_p_s a tester, et lui indique l'ordre dans lequel il doit le faire. La liste est formee de noms separes par des virgules. Celle-ci a priorite sur la liste predefinie dans _S_u_p_e_r_P_r_o_b_e. Pour connaitre la liste des noms supportes, utilisez l'option _-_i_n_f_o decrite ci- apres. Notez que les valeurs affichees comme "Standard Video hardware" ne sont pas utilisables avec l'option _-_o_r_d_e_r. --nnoopprroobbee _l_i_s_t_e Cette option definit les Chips que _S_u_p_e_r_P_r_o_b_e ne doit ppaass tester. L'ordre de tests est soit celui par defaut, soit celui impose par l'option _-_o_r_d_e_r. La liste contient des noms de chips separes par des virgules. Pour connaitre la liste des noms supportes, utilisez l'option _-_i_n_f_o decrite ci-apres. Notez que les valeurs affichees comme "Standard Video hardware" ne sont pas utilisables avec l'option _-_n_o_p_r_o_b_e. --bbiiooss _b_a_s_e Cette option indique l'adresse de base du BIOS de la carte graphique. Par defaut, _S_u_p_e_r_P_r_o_b_e essaiera de localiser celle-ci de lui-meme (l'adresse normale etant 0xC0000). S'il echoue (un message d'erreur sera affiche si cela arrive), utilisez l'option _-_b_i_o_s pour lui indiquer la base. --nnoo__bbiiooss Invalide la lecture du BIOS Video et suppose qu'une carte EGA ou plus recente (VGA, SVGA) est presente comme premiere carte video. --nnoo__ddaacc Supprime la recherche du type de RAMDAC lorsqu'une carte (S)VGA est identifiee. --nnoo__mmeemm Supprime la recherche de la taille memoire de la carte video. --iinnffoo _S_u_p_e_r_P_r_o_b_e imprimera une liste de tous les materiels video qu'il sait identifier. 55..33..33.. LLeess bbuuggss Il y en a surement ! Si vous en trouvez, veuillez, svp, les rapporter a l'auteur. IIll eesstt ppoossssiibbllee qquuee SSuuppeerrPPrroobbee bbllooqquuee vvoottrree mmaacchhiinnee.. DDaannss ccee ccaass,, eeffffeeccttuueezz ll''eessssaaii aavveecc lleess ooppttiioonnss _-_n_o_1_6_, _-_e_x_c_l eett _-_m_a_s_k_1_0 ddee ffaaccoonn aa eevviitteerr lleess ccoonnfflliittss aavveecc dd''aauuttrreess ccaarrtteess iinnssttaalllleeeess.. 66.. IInnffoorrmmaattiioonnss ccoonncceerrnnaanntt ccee ddooccuummeenntt Les documents HOWTO Linux sont places sous copyright par leurs auteurs respectifs. Les documents Linux HOWTO peuvent etre reproduits et distribues en tout ou partie, par quelque moyen physique que ce soit, sans l'autorisation de l'auteur. Les traductions et travaux derives sont egalement permis sans autorisation expresse. La distribution a titre commercial est permise et meme encouragee ; cependant, l'auteur souhaiterait en etre averti. En bref, nous souhaitons que l'information contenue dans ces documents soit repandue le plus largement possible. Cependant, nous souhaitons maintenir le copyright sur ce document, et souhaiterions etre avertis de toute re-distribution. Si vous avez des questions a ce propos, contactez Greg Hankins, coordinateur des documents Linux HOWTO a l'adresse . .