Journal : Les grands écrans c'est bien (mais galère)
Posté par Croconux () le 28 décembre 2007
Après avoir bien galéré, je me suis décidé à écrire ce journal car je pense que ça peut servir à d'autres.
Pour mon nowel, je me suis fait plaisir, je me suis acheté un grand écran qui troue les fesses : 24" 1920x1200, que du bonheur (pensais-je). J'ai passé une demi journée à galérer pour le faire fonctionner correctement. En démarrant sous Linux (Debian sid à jour), je me suis retrouvé avec une résolution très laide (1280x768). Bon, jusque là c'est normal, mon ancien écran était un 19" à tube donc je pensais naivement qu'en ajoutant les modes supplémentaires ça passerait. Que nenni. En cherchant sur le net, je me suis rendu compte que je n'étais pas un cas isolé. Visiblement, les écrans avec une résolution trop élevée (22" et plus) posent pas mal de problèmes. D'après ce que j'ai pu trouver, les modes jusqu'à 1600x1200 sont standardisé VESA mais au dessus, chaque fabricant d'écran fait un peu ce qu'il veut et c'est franchement le boxon.
Première piste, les modelines. Chez certains ça semble résoudre le problème. En cherchant à droite à gauche, j'ai vu que pour une même résolution, il y avait à peu près autant de timings que d'écrans. J'en ai essayé quelques uns sans succès. Dans Xorg.log, j'ai toujours "No valid mode for 1920x1200. Removing". Je me suis dit qu'il me fallait surement les timing exacts de mon écran. Bon, comment les obtenir ? Après enquête, chaque moniteur est capable de donner les informations sur les modes qu'il supporte. Plusieurs outils permettent de lire ses infos :
- "read-edid"/"get-edid" : Pas de bol ces outils font des appels VBE de bas niveau (un truc hérité du DOS) qui ne marchent qu'en 32bits et je suis sur AMD64. C'est mort.
- "xresprobe" : Un script fourni avec xorg. D'après ce que j'ai pu lire, il n'est pas trop maintenu et, contrairement à ce que dit la doc, il utilise encore les infos VBE (pour les DFP en tous cas). C'est mort aussi. Il me renvoie des infos vides.
- "ddcprobe" : Apparemment, il interroge la carte graphique et l'écran. Pas de bol non plus, il me liste une série de modes standards (jusqu'à 1280x1024) puis dans la section "edid" se contente d'un joli "edidfail". Tiens donc, mon écran renverrait-il des conneries ? Dans le doute je met la main sur une box windows pour voir ce que ça donne et là, plein les yeux. La résolution native de mon écran est reconnue et c'est magnifique. Bon si ça marche sans avoir installé le moindre driver, ça doit bien pouvoir marcher sous mon manchot, nom d'un eskimo à la banane !
Retour sous Linux mais cette fois en VGA (jusqu'ici j'avais utilisé le DVI). Bizarrement, là xorg me trouve le mode 1600x1200. Pas top mais il y a du mieux. "xresprobe" me trouve cette fois si des infos, même s'il reconnait pour le coup mon écran comme un CRT (c'est bizarre qu'en analogique on arrive à obtenir des infos et pas en numérique, mais bon). Du coup, il semble black lister les modes au dessus de 1600x1200. Après re-enquête, il s'avère qu'en interne, xorg ne fait plus appel à ces divers utilitaires pour lire les infos EDID. Il a sa propre méthode de lecture. Re-merde. Je sens que je vais finir par m'arracher les poils du cul à la pince à épiler.
Retour en DVI (si j'ai pris un écran avec prise DVI ce n'est pas pour passer par de l'analogique). Un bon moyen de voir ce qui se passe : En mode console, démarrer X avec un maximum de logs "startx -- -logverbose 6". Là je me rend compte qu'xorg arrive bien à lire les infos EDID. Il liste les modes standards -plus- les modes supplémentaires de mon écran et le 1920x1200 en fait partie avec les timings exacts et tout. Sauf qu'un peu plus loin la plupart des modes sont invalidés "Mode is rejected: VertRefresh (75.0 Hz) out range" (celui là je veux bien, à la résolution max, il ne supporte que du 60 Hz) ou bien "Mode is rejected: Mode (1920 x 1200) is too large for DFP. Native resolution (Max: 1280 x 768)". Apparemment xorg s'est planté sur le calcul de la résolution native de mon écran.
Visiblement, certaines infos remontées sont erronées et du coup xorg invalides des modes qui sont bien valides. Il existe plusieurs façon de passer outre. Dans la section "Device" du xorg.conf il est possible de mettre "UseEDIDDpi", "UseEDIDFreqs" ou carrément "UseEDID" à false. J'ajoute en modeline le mode exact remonté par mon écran et je tente le coup. Les deux premiers ne changent rien. Après hésitation je tente le 3e en priant et là c'est l'écran noir. Je sens que je ne suis pas couché. Il existe aussi une option "ModeValidation" "NoEDIDModes" mais rien à faire. Puis c'est l'illumination : Je découvre une option de la mort inconnue de la section "Monitor" : "ModeValidation" "NoDFPNativeResolutionCheck". Miracle, ça marche nickel.
Bilan des courses, c'est quand même un peu le bronx dès qu'on sort des sentiers battus. Il y a une foule d'options pas franchement documentées dans xorg plus sans compter le fait que sur la section "Device" suivant le driver utilisé, les options sont différentes ou ne s'appellent pas pareil. Sinon, j'ai aussi découvert qu'apparemment le port DVI est limité en débit et ne permet pas de faire passer les résolutions les plus élevées (c'est vraiment couillon pour une norme aussi récente). Pour celà, il faut un DVI dual link. La limite est définie par le standard mais il est possible de passer outre (les liaisons DVI acceptent souvent plus que ce que le standard impose) et d'autoriser un débit plus élevé (Option "NoMaxPClkCheck"). Si ça ne marche pas, il faut ajouter une modeline limitant le débit. Pour celà, l'utilitaire "cvt" permet de générer des modelines avec débit réduit (option "-r"). Le port VGA ne semble pas soumis à ce type de limitation.
Bon, voilà c'était un peu long mais je pense avoir expérimenté quasiment toutes les looses possibles donc si ça peut aider... Maintenant je peux mouler et travailler en même temps sans avoir à changer de bureau. Que du bonheur.
Pour mon nowel, je me suis fait plaisir, je me suis acheté un grand écran qui troue les fesses : 24" 1920x1200, que du bonheur (pensais-je). J'ai passé une demi journée à galérer pour le faire fonctionner correctement. En démarrant sous Linux (Debian sid à jour), je me suis retrouvé avec une résolution très laide (1280x768). Bon, jusque là c'est normal, mon ancien écran était un 19" à tube donc je pensais naivement qu'en ajoutant les modes supplémentaires ça passerait. Que nenni. En cherchant sur le net, je me suis rendu compte que je n'étais pas un cas isolé. Visiblement, les écrans avec une résolution trop élevée (22" et plus) posent pas mal de problèmes. D'après ce que j'ai pu trouver, les modes jusqu'à 1600x1200 sont standardisé VESA mais au dessus, chaque fabricant d'écran fait un peu ce qu'il veut et c'est franchement le boxon.
Première piste, les modelines. Chez certains ça semble résoudre le problème. En cherchant à droite à gauche, j'ai vu que pour une même résolution, il y avait à peu près autant de timings que d'écrans. J'en ai essayé quelques uns sans succès. Dans Xorg.log, j'ai toujours "No valid mode for 1920x1200. Removing". Je me suis dit qu'il me fallait surement les timing exacts de mon écran. Bon, comment les obtenir ? Après enquête, chaque moniteur est capable de donner les informations sur les modes qu'il supporte. Plusieurs outils permettent de lire ses infos :
- "read-edid"/"get-edid" : Pas de bol ces outils font des appels VBE de bas niveau (un truc hérité du DOS) qui ne marchent qu'en 32bits et je suis sur AMD64. C'est mort.
- "xresprobe" : Un script fourni avec xorg. D'après ce que j'ai pu lire, il n'est pas trop maintenu et, contrairement à ce que dit la doc, il utilise encore les infos VBE (pour les DFP en tous cas). C'est mort aussi. Il me renvoie des infos vides.
- "ddcprobe" : Apparemment, il interroge la carte graphique et l'écran. Pas de bol non plus, il me liste une série de modes standards (jusqu'à 1280x1024) puis dans la section "edid" se contente d'un joli "edidfail". Tiens donc, mon écran renverrait-il des conneries ? Dans le doute je met la main sur une box windows pour voir ce que ça donne et là, plein les yeux. La résolution native de mon écran est reconnue et c'est magnifique. Bon si ça marche sans avoir installé le moindre driver, ça doit bien pouvoir marcher sous mon manchot, nom d'un eskimo à la banane !
Retour sous Linux mais cette fois en VGA (jusqu'ici j'avais utilisé le DVI). Bizarrement, là xorg me trouve le mode 1600x1200. Pas top mais il y a du mieux. "xresprobe" me trouve cette fois si des infos, même s'il reconnait pour le coup mon écran comme un CRT (c'est bizarre qu'en analogique on arrive à obtenir des infos et pas en numérique, mais bon). Du coup, il semble black lister les modes au dessus de 1600x1200. Après re-enquête, il s'avère qu'en interne, xorg ne fait plus appel à ces divers utilitaires pour lire les infos EDID. Il a sa propre méthode de lecture. Re-merde. Je sens que je vais finir par m'arracher les poils du cul à la pince à épiler.
Retour en DVI (si j'ai pris un écran avec prise DVI ce n'est pas pour passer par de l'analogique). Un bon moyen de voir ce qui se passe : En mode console, démarrer X avec un maximum de logs "startx -- -logverbose 6". Là je me rend compte qu'xorg arrive bien à lire les infos EDID. Il liste les modes standards -plus- les modes supplémentaires de mon écran et le 1920x1200 en fait partie avec les timings exacts et tout. Sauf qu'un peu plus loin la plupart des modes sont invalidés "Mode is rejected: VertRefresh (75.0 Hz) out range" (celui là je veux bien, à la résolution max, il ne supporte que du 60 Hz) ou bien "Mode is rejected: Mode (1920 x 1200) is too large for DFP. Native resolution (Max: 1280 x 768)". Apparemment xorg s'est planté sur le calcul de la résolution native de mon écran.
Visiblement, certaines infos remontées sont erronées et du coup xorg invalides des modes qui sont bien valides. Il existe plusieurs façon de passer outre. Dans la section "Device" du xorg.conf il est possible de mettre "UseEDIDDpi", "UseEDIDFreqs" ou carrément "UseEDID" à false. J'ajoute en modeline le mode exact remonté par mon écran et je tente le coup. Les deux premiers ne changent rien. Après hésitation je tente le 3e en priant et là c'est l'écran noir. Je sens que je ne suis pas couché. Il existe aussi une option "ModeValidation" "NoEDIDModes" mais rien à faire. Puis c'est l'illumination : Je découvre une option de la mort inconnue de la section "Monitor" : "ModeValidation" "NoDFPNativeResolutionCheck". Miracle, ça marche nickel.
Bilan des courses, c'est quand même un peu le bronx dès qu'on sort des sentiers battus. Il y a une foule d'options pas franchement documentées dans xorg plus sans compter le fait que sur la section "Device" suivant le driver utilisé, les options sont différentes ou ne s'appellent pas pareil. Sinon, j'ai aussi découvert qu'apparemment le port DVI est limité en débit et ne permet pas de faire passer les résolutions les plus élevées (c'est vraiment couillon pour une norme aussi récente). Pour celà, il faut un DVI dual link. La limite est définie par le standard mais il est possible de passer outre (les liaisons DVI acceptent souvent plus que ce que le standard impose) et d'autoriser un débit plus élevé (Option "NoMaxPClkCheck"). Si ça ne marche pas, il faut ajouter une modeline limitant le débit. Pour celà, l'utilitaire "cvt" permet de générer des modelines avec débit réduit (option "-r"). Le port VGA ne semble pas soumis à ce type de limitation.
Bon, voilà c'était un peu long mais je pense avoir expérimenté quasiment toutes les looses possibles donc si ça peut aider... Maintenant je peux mouler et travailler en même temps sans avoir à changer de bureau. Que du bonheur.
> Lire le journal (46 commentaires, moyenne: 1,4).
Vous avez demandé le commentaire #892723.



Rafraîchissement
Jusqu'à présent, et ce quel que soit l'écran, je me suis seulement contenté de préciser dans mon fichier xorg.conf les taux de rafraîchissement des écrans que j'utilisais.
Par exemple, pour un vieux 22" CRT Iiyama Vision Master Pro 514 HM204DT, ça donne :
Section "Monitor"
Identifier "Configured Monitor"
Option "DPMS"
HorizSync 30-142
VertRefresh 50-200
EndSection
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
DefaultDepth 24
SubSection "Display"
Modes "1920x1440" "1680x1050" "1400x1050" "1280x960" "1152x864" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
Et l'écran me sort du 1920x1440 à 100 Hz sans sourciller. Je pourrais aller en 2048x1536 (j'ai d'ailleurs volontairement retiré ce mode de la liste), mais je serais alors limité à 85 Hz, ce qui est moins confortable, et puis ça commence aussi à faire petit pour mes yeux.
J'ai pu tester cette méthode avec tout plein d'écrans différents, et même des vieux bousins de marque totalement inconnue et je n'ai jamais eu le moindre problème. :-)
[^]Re: Rafraîchissement
Tiens moi j'ai un iiyama 22 pouces CRT vision master pro 510, et j'ai un peu galeré pour depasser le 75 hz à partir de 1600*1200 alors que sous windows je peux monter a 100 hz a cette resolution.
Voila mon bref combat contre les EDID foireux:
http://www.nvnews.net/vbulletin/showthread.php?t=98426&h(...)
[^]Re: Rafraîchissement
Essaye avec :
HorizSync 30-130
VertRefresh 50-160
J'ai le pressentiment que ça va fonctionner. ;-)
[^]Re: Rafraîchissement
Je faisais pareil avec mes CRT 19" et 17" iiyama en 1920x1440+1600x1200 connectés sur une Matrox G550. Ça a été une autre histoire quand j'ai voulu connecter mon 24" B2403WS tout neuf.
Après quelques coups de Google, j'ai trouvé un modeline qui convient.
[^]Re: Rafraîchissement
Bonsoir,
Ayant le même écran que toi, pourrais-tu donner les valeurs du modeline que tu utilises ou donner la page web sur laquelle tu as trouvé les valeurs ?
Pascal
[^]Re: Rafraîchissement
On peut calculer les modelines à l'aide de "gtf". Pour ton écran:
[^]Re: Rafraîchissement
cf. un peu plus bas sur cette page ;-)